String myAPIkey = "OAM1ZJRDAN49H0DX";
#include <SoftwareSerial.h>;
#include <DHT.h>;
SoftwareSerial ESP01(2, 3);
//Constants
#define DHTPIN 7 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE,22); //// Initialize DHT sensor for normal 16mhz Arduino
float humidity, temp_f;
long writingTimer = 17;
long startTime = 0;
long waitTime = 0;
boolean relay1_st = false;
boolean relay2_st = false;
unsigned char check_connection=0;
unsigned char times_check=0;
boolean error;
void setup()
{
Serial.begin(9600);
ESP01.begin(9600);
dht.begin();
startTime = millis();
ESP01.println("AT+RST");
delay(2000);
Serial.println("Connecting to WiFi");
while(check_connection==0)
{
Serial.print(".");
ESP01.print("AT+CWJAP=\"Shruti\",\"3205@3205\"\r\n");
ESP01.setTimeout(5000);
if(ESP01.find("WiFi Connected\r\n")==1)
{
Serial.println("WIFI Connected");
break;
}
times_check++;
if(times_check>3)
{
times_check=0;
Serial.println("Trying to Reconnect..");
}
}
}
void loop()
{
waitTime = millis()-startTime;
if (waitTime > (writingTimer*1000))
{
readSensors();
writeThingSpeak();
startTime = millis();
}
}
void readSensors(void)
{
temp_f = dht.readTemperature();
humidity = dht.readHumidity();
}
void writeThingSpeak(void)
{
startThingSpeakCmd();
// preparacao da string GET
String getStr = "https://api.thingspeak.com/update?api_key=OAM1ZJRDAN49H0DX&field1=0";
getStr += myAPIkey;
getStr +="&field1=";
getStr += String(temp_f);
getStr +="&field2=";
getStr += String(humidity);
getStr += "\r\n\r\n";
GetThingspeakcmd(getStr);
}
void startThingSpeakCmd(void)
{
ESP01.flush();
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149"; // api.thingspeak.com IP address
cmd += "\",80";
ESP01.println(cmd);
Serial.print("Start Commands: ");
Serial.println(cmd);
if(ESP01.find("Error"))
{
Serial.println("AT+CIPSTART error");
return;
}
}
String GetThingspeakcmd(String getStr)
{
String cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ESP01.println(cmd);
Serial.println(cmd);
if(ESP01.find(">"))
{
ESP01.print(getStr);
Serial.println(getStr);
delay(500);
String messageBody = "";
while (ESP01.available())
{
String line = ESP01.readStringUntil('\n');
if (line.length() == 1)
{
messageBody = ESP01.readStringUntil('\n');
}
}
Serial.print("MessageBody received: ");
Serial.println(messageBody);
return messageBody;
}
else
{
ESP01.println("AT+CIPCLOSE");
Serial.println("AT+CIPCLOSE");
}
}
Loading
esp-01
esp-01