//
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
// ,
unsigned long pauseTime = 60000;
//
unsigned long currentTime;
unsigned long previousTime = 0;
// D10 D18B20
// ONE WIRE
#define ONE_WIRE_BUS 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// WiFi
#define SSID ┬л┬╗
#define PASS ┬л┬╗
// IP thingspeak.com
#define IP ┬л184.106.153.149┬╗
// GET API thingspeak.com
String GET = ┬лGET /update?key=API&field1=┬╗;
// ESP8266
// AT- ;
// ( AT- v0.21 SDK 0.9.5
//
esp8266.ru/esp8266-sdk-0-9-5-v0-21 )
SoftwareSerial esp(11, 12); // RX, TX
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
void setup()
{
// :
esp.begin(9600); // - ESP8266 9600
Serial.begin(9600); // - COM- ( )
sensors.begin(); //
lcd.begin(16, 2); // LCD-
lcd.clear();
// ESP8266 AT
Send(┬лAT┬╗);
delay(1000);
// OK,
if(esp.find(┬лOK┬╗)){
Serial.println(┬лESP8266 Ready: OK┬╗);
connectWiFi();
previousTime = millis() + 2*pauseTime;
}
}
void loop(){
currentTime = millis();
if(currentTime тАФ previousTime > pauseTime) {
//
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
//
char buffer[10];
String temp = dtostrf(tempC, 4, 1, buffer);
// thingspeak.com
updateData(temp);
lcd.setCursor(0,0);
lcd.print(temp);
lcd.print("\xDF"┬лC┬╗); // \xDF тАФ
previousTime = currentTime;
}
}
// ESP8266 thingspeak.com
void updateData(String data){
// thingspeak.com
String cmd = ┬лAT+CIPSTART=\┬╗TCP\",\"";
cmd += IP;
cmd += "\",80";
Send(cmd);
delay(3000);
if(esp.find(┬лOK┬╗))
Serial.println(┬лCONNECT TO IP: OK┬╗);
else
Serial.println(┬лCONNECT TO IP: Error┬╗);
//
cmd = GET;
cmd += data;
cmd += "\r\n";
esp.print(┬лAT+CIPSEND=┬╗);
esp.println(cmd.length());
// ESP8266
if(esp.find(">")){
Serial.print(">");
//
esp.print(cmd);
Serial.print(cmd);
if(esp.find(┬лOK┬╗)) Serial.println(┬лDATA SEND: OK┬╗);
else Serial.println(┬лDATA SEND: Error┬╗);
}
else{
Send(┬лAT+CIPCLOSE┬╗);
if(esp.find(┬лOK┬╗)) Serial.println(┬лCONNECTION FOR IP CLOSE: OK┬╗);
else Serial.println(┬лCONNECTION FOR IP CLOSE: Error┬╗);
}
Serial.println();
}
// ESP8266
void Send(String cmd){
Serial.print(┬лSEND TO ESP8266: тАЮ);
esp.println(cmd);
Serial.println(cmd);
}
// WiFi
boolean connectWiFi(){
esp.println(тАЬAT+CWMODE=1┬╗);
delay(2000);
String cmd=┬лAT+CWJAP=\┬╗";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Send(cmd);
delay(5000);
if(esp.find(┬лOK┬╗)){
Serial.println(┬лCONNECT TO WIFI: OK┬╗);
return true;
}
else{
Serial.println(┬лCONNECT TO WIFI: Error┬╗);
return false;
}
}