diff --git a/dht11-master.zip b/dht11-master.zip new file mode 100644 index 0000000..c101849 Binary files /dev/null and b/dht11-master.zip differ diff --git a/esp8266_thingsspeak_temp_and_humidity.ino b/esp8266_thingsspeak_temp_and_humidity.ino new file mode 100644 index 0000000..fba2c7a --- /dev/null +++ b/esp8266_thingsspeak_temp_and_humidity.ino @@ -0,0 +1,93 @@ +#include //βιβλιοθήκη επιτρέπει την σειριακή επικοινωνία με άλλα ψηφιακά pin του arduino μέχρι ρυθμό 115200bps. +#include //βιβλιοθήκη για το dht11 sensor. +#define RX 2 //παραλαβή από σειριακή επικοινωνία. +#define TX 3 //μετάδοση στη σειριακή επικοινωνία. +#define dht_apin 11 //pin που βρίσκεται το dht11 sensor. +dht11 dhtObject; //δήλωση μεταβλητής της βιβλιοθήκης dht11 +String AP = "Nova"; //AP του Router +String PASS = "123456789?"; //Password του Router +String API = "XHBT4VSASFDYQT4M"; //API του Thingspeak +String HOST = "api.thingspeak.com"; //Host +String PORT = "80"; //Port +int countTrueCommand; //μεταβλητές που θα χρειαστούν παρακάτω +int countTimeCommand; +boolean found = false; +int valSensor = 1; + +SoftwareSerial esp8266(RX,TX); //ορισμός του esp8266. + +void setup() { + Serial.begin(9600); //έναρξη σειριακής επικοινωνίας + esp8266.begin(115200); + sendCommand("AT",5,"OK"); //προληπτικός έλεγχος του ESP8266 για το αν όλα είναι ΟΚ. + sendCommand("AT+CWMODE=1",5,"OK"); //ορισμός του ESP8266 ως CLIENT.[Κωδικός 1=client Κωδικός 2=host Κωδικός 3=both.] + sendCommand("AT+CWJAP=\""+ AP +"\",\""+ PASS +"\"",20,"OK"); //σύνδεση στο δίκτυο με τα στοιχεία που έχουν δοθεί παραπάνω. +} + + +void loop() { //αποστολή των δεδομένων μας(θερμοκρασίας και υγρασίας) στον Server του Thingspeak. + + String getData = "GET /update?api_key="+ API +"&field1="+getTemperatureValue()+"&field2="+getHumidityValue(); //δημιουργία εντολής σε string με σκοπό την μετάδοση θερμοκρασίας/υγρασίας + sendCommand("AT+CIPMUX=1",5,"OK"); + sendCommand("AT+CIPSTART=0,\"TCP\",\""+ HOST +"\","+ PORT,15,"OK"); // έναρξη TCP σύνδεσης. + sendCommand("AT+CIPSEND=0," +String(getData.length()+4),4,">"); // αποστολή των δεδομένων...το σύμβολο ">" επιστρέφεται όταν μεταδοθεί. + esp8266.println(getData);delay(1500);countTrueCommand++; + sendCommand("AT+CIPCLOSE=0",5,"OK"); // τερματισμός TCP σύνδεσης. +} + + +String getTemperatureValue(){ //υπολογισμός τιμής θερμοκρασίας + + dhtObject.read(dht_apin); + Serial.print(" Temperature(C)= "); + int temp = dhtObject.temperature; + Serial.println(temp); + delay(50); + return String(temp); + +} + +String getHumidityValue(){ //υπολογισμός τιμής υγρασίας + + dhtObject.read(dht_apin); + Serial.print(" Humidity in %= "); + int humidity = dhtObject.humidity; + Serial.println(humidity); + delay(50); + return String(humidity); + +} + +void sendCommand(String command, int maxTime, char readReplay[]) { //μετάδοση εντολής + Serial.print(countTrueCommand); + Serial.print(". at command => "); + Serial.print(command); + Serial.print(" "); + while(countTimeCommand < (maxTime*1)) + { + esp8266.println(command); //δώσε την εντολή στο esp8266 + if(esp8266.find(readReplay)) //αν ο esp8266 απάντησε αυτό που περιμέναμε τότε... + { + found = true; + break; + } + + countTimeCommand++; + } + + if(found == true) // επιτυχής + { + Serial.println("OYI"); + countTrueCommand++; + countTimeCommand = 0; + } + + if(found == false) // ανεπιτυχής + { + Serial.println("Fail"); + countTrueCommand = 0; + countTimeCommand = 0; + } + + found = false; + }