#include dht DHT; #define DHT22_PIN 6 // WiFi #define SSID "BTHub4-S5TP" #define PASS "PASSWORD" // the ESP8266 should flash a blue LED when the Arduino flashes the TX on its board. // if the ESP8266 doesn't connect to WiFi unplug/plug the RST pin which goes to 3.3V void setup() { Serial.begin(115200); // dht22 Serial2.begin(9600); // wifi Serial.println("Type,\tstatus,\tHum. (%),\tTemp. ('C)"); //WiFi setup Serial2.println("AT"); Serial.println("AT sent - checking..."); delay(5000); char okcheck[]="OK"; if(Serial2.find(okcheck)){ Serial.println("OK, found. Connecting"); connectWiFi(); Serial.println("Yay! Should be connected now.");} else{ Serial.println("NOT CONNECTED TO WIFI"); } } //========================================= void loop() { // read from DHT22 TempHum(); // data for Thingspeak: String SendTempLevel = String((float)DHT.temperature, 0); String SendHumLevel = String((float)DHT.humidity, 0); // send to Thingspeak updateTemp(SendTempLevel, SendHumLevel); delay(3000); } //=========================================== void TempHum(){ // READ DATA Serial.print("DHT22, \t"); int chk = DHT.read22(DHT22_PIN); switch (chk) { case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } // DISPLAY DATA Serial.print(DHT.humidity, 1); Serial.print(",\t\t"); Serial.println(DHT.temperature, 1); } //========================================== void updateTemp(String SendTempLevel, String SendHumLevel){ String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += "184.106.153.149"; // api.thingspeak.com cmd += "\",80"; Serial2.println(cmd); char errorcheck[]="Error"; if(Serial2.find(errorcheck)){ Serial.println("AT+CIPSTART error"); return; } // prepare GET string String getStr = "GET /update?api_key="; getStr += "8KS0CVMQ12A7D817"; getStr += "&field1="; getStr += String(SendTempLevel); getStr += "&field2="; getStr += String(SendHumLevel); getStr += "\r\n\r\n"; // prepare to send data cmd = "AT+CIPSEND="; cmd += String(getStr.length()); Serial2.println(cmd); // send data char greaterthanchar[]=">"; if(Serial2.find(greaterthanchar)){ Serial2.print(getStr); Serial.println("Yay! String should be sent."); }else{ Serial2.println("AT+CIPCLOSE"); Serial.println("Oops! - AT+CIPCLOSE"); // seems to not send first time, but OK afterwards } // thingspeak needs 15 sec delay between updates delay(16000); } //=============================== boolean connectWiFi(){ Serial2.println("AT+CWMODE=1"); delay(2000); String cmd="AT+CWJAP=\""; // add SSID and password cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; // send string Serial2.println(cmd); delay(5000); // was the login accepted? char okcheck[]="OK"; if(Serial2.find(okcheck)){ Serial.println("Login accepted"); return true; }else{ Serial.println("Login not accepted."); return false; } }