Sunday, December 13, 2015

Sending sensor data to a web server

Build your own IOT service! Collect sensor data and send it to a web/database server.

Today's project uses an Arduino equipped with a Ethernet shield, and a DHT-11 temperature / humidity sensor.

Arduino UNO
Arduino Ethernet Shield
DHT-11 Module

The Arduino reads the DHT-11, and submits the data to a php script on a hosted web server. That php page inserts the data into a mySQL database, and another php page creates a web page displaying the data as you can see below.






See the data live at http://green-trust.org/sandbox/templog/

Every 5 minutes the Arduino submits a new data packet.

For the server side, see http://arduinotronics.blogspot.com/2015/12/building-iot-server.html

The Arduino sketch is below:



#include <DHT.h>
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 }; // RESERVED MAC ADDRESS
EthernetClient client;

#define DHTPIN 6 // SENSOR PIN
#define DHTTYPE DHT11 // SENSOR TYPE - THE ADAFRUIT LIBRARY OFFERS SUPPORT FOR MORE MODELS
DHT dht(DHTPIN, DHTTYPE);

long previousMillis = 0;
unsigned long currentMillis = 0;
long interval = 250000; // READING INTERVAL

int t = 0; // TEMPERATURE VAR
int h = 0; // HUMIDITY VAR
String data;

void setup() {
Serial.begin(115200);

 pinMode(7, OUTPUT);      // sets the digital pin as output
 pinMode(5, OUTPUT);      // sets the digital pin as output
 digitalWrite(7, HIGH);
 digitalWrite(5, LOW);

if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}

dht.begin();
delay(10000); // GIVE THE SENSOR SOME TIME TO START

h = (int) dht.readHumidity();
t = (int) dht.readTemperature();

data = "";
}

void loop(){


currentMillis = millis();
if(currentMillis - previousMillis > interval) { // READ ONLY ONCE PER INTERVAL
previousMillis = currentMillis;
h = (int) dht.readHumidity();
t = (int) dht.readTemperature();
}

data = "temp1=";

data.concat(t);

data.concat("&hum1=");

data.concat(h);


if (client.connect("www.xxxxxx.com",80)) { // REPLACE WITH YOUR SERVER ADDRESS
client.println("POST /add.php HTTP/1.1");
client.println("Host: xxxxxx.com"); // SERVER ADDRESS HERE TOO
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.print(data);
}

if (client.connected()) {
client.stop(); // DISCONNECT FROM THE SERVER
}

delay(300000); // WAIT FIVE MINUTES BEFORE SENDING AGAIN
}





If you are interested in recreating this project, the zip file with the Arduino code, libraries, php pages, and sql for the mySQL database is available at http://www.green-trust.org/arduino/IOT_files.zip

Customized projects available as well as hosting and support.

This project inspired by http://www.instructables.com/id/PART-1-Send-Arduino-data-to-the-Web-PHP-MySQL-D3js/

No comments:

Post a Comment