Umiditatea și temperatura sunt parametri foarte obișnuiți pentru măsurarea în multe locuri, cum ar fi ferma, sera, medicale, acasă și birouri. Am acoperit deja măsurarea umidității și temperaturii folosind Arduino și am afișat datele pe ecranul LCD.
În acest proiect IoT vom monitoriza umiditatea și temperatura pe internet folosind ThingSpeak, unde vom afișa datele curente privind umiditatea și temperatura pe internet utilizând serverul ThingSpeak. Se realizează prin comunicațiile de date între Arduino, modulul senzor DHT11, modulul ESP8266 WIFI și LCD. Termometrul la scară Celsius și indicatorul de umiditate la scară procentuală afișează temperatura și umiditatea ambiantă printr-un afișaj LCD și, de asemenea, îl trimite către serverul ThingSpeak pentru monitorizare live de oriunde din lume.
Lucrul și configurarea ThingSpeak:
Acest proiect bazat pe IoT are patru secțiuni, în primul rând senzorul de umiditate și temperatură DHT11 detectează datele privind umiditatea și temperatura . În al doilea rând, Arduino Uno extrage datele senzorului DHT11 ca număr adecvat în procente și scară Celsius și le trimite către modulul Wi-Fi. În al treilea rând , modulul Wi-Fi ESP8266 trimite datele către ThingSpeak's Sever. Și, în cele din urmă, ThingSpeak analizează datele și le arată într-o formă grafică. LCD opțional este, de asemenea, utilizat pentru a afișa temperatura și umiditatea.
ThingSpeak oferă un instrument foarte bun pentru proiectele bazate pe IoT pentru Arduino. Prin utilizarea site-ului ThingSpeak, ne putem monitoriza datele de pe Internet de oriunde și ne putem controla sistemul și prin Internet, utilizând canalele și paginile web furnizate de ThingSpeak. ThingSpeak „Colectează” datele de la senzori, „Analizează și vizualizează” datele și „Acționează” declanșând o reacție. Aici vă explicăm cum să trimiteți date către serverul ThingSpeak utilizând modulul ESP8266 WIFI:
1. În primul rând, utilizatorul trebuie să creeze un cont pe ThingSpeak.com, apoi să se conecteze și să facă clic pe Începeți.
2. Acum accesați meniul „Canale” și faceți clic pe opțiunea Canal nou de pe aceeași pagină pentru proces ulterior.
3. Acum veți vedea un formular pentru crearea canalului, completați numele și descrierea conform alegerii dvs. Apoi completați „Umiditate” și „Temperatură” în etichetele Câmpului 1 și Câmpul 2, bifați casetele de selectare pentru ambele Câmpuri. De asemenea, bifați caseta de selectare pentru opțiunea „Faceți public” de mai jos în formular și, în final, Salvați canalul. Acum noul dvs. canal a fost creat.
4. Acum faceți clic pe fila „Chei API” și salvați tastele API de scriere și citire, aici folosim doar cheia de scriere. Trebuie să copiați această cheie în char * api_key din cod.
5. După aceasta, faceți clic pe „Import / Export de date” și copiați URL-ul de solicitare GET Feed Feed de canal de actualizare, care este:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Acum utilizatorul trebuie să deschidă „api.thingspeak.com” utilizând funcția httpGet cu postUrl ca „update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” și apoi să trimită date folosind feedul de date sau să actualizeze adresa cererii.
Înainte de a trimite datele, utilizatorul trebuie să editeze acest șir de interogare sau postUrl cu câmpuri de date de temperatură și umiditate, așa cum se arată mai jos. Aici am adăugat ambii parametri în șirul pe care trebuie să îi trimitem folosind cererea GET către server, după ce am folosit httpGet pentru a trimite datele către server. Verificați codul complet de mai jos.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Întregul proces este demonstrat în secțiunea Video, la sfârșitul acestui articol.
Funcționarea acestui proiect se bazează pe comunicații seriale cu un singur fir pentru preluarea datelor din DHT11. Mai întâi Arduino trimite un semnal de pornire către modulul DHT și apoi DHT dă un semnal de răspuns cu date conținând. Arduino colectează și extrage datele în două părți, mai întâi este umiditatea și a doua este temperatura și apoi le trimite la serverul LCD 16x2 și ThingSpeak. ThingSpeak afișează datele sub formă de grafic după cum urmează:
Puteți afla mai multe despre senzorul DHT11 și interfața acestuia cu Arduino aici.
Descrierea circuitului:
Conexiunile pentru acest proiect de monitorizare a temperaturii și umidității ThingSpeak sunt foarte simple. Aici este utilizat un afișaj cu cristale lichide pentru afișarea temperaturii și umidității, care este conectat direct la Arduino în modul pe 4 biți. Pinii LCD, respectiv RS, EN, D4, D5, D6 și D7 sunt conectați la pinul digital Arduino numărul 14, 15, 16, 17, 18 și 19. Acest LCD este opțional.
Modulul senzor DHT11 este conectat la pinul digital 12 al Arduino. Pinii Vcc și GND ai modulului Wi-Fi ESP8266 sunt conectați direct la 3,3V, iar GND al Arduino și CH_PD este conectat și la 3,3V. Pinii Rx și Tx ai ESP8266 sunt conectați direct la pinii 2 și 3 din Arduino. Software Serial Library este, de asemenea, utilizat aici pentru a permite comunicarea în serie pe pinii 2 și 3 din Arduino. Am acoperit deja în detaliu interfațarea modulului Wi-Fi ESP8266 către Arduino.
Partea de programare:
Programarea unei părți a acestui proiect joacă un rol foarte important pentru a efectua toate operațiunile. În primul rând includem bibliotecile necesare și inițializăm variabilele.
#include "dht.h" // Inclusiv biblioteca pentru dht #include
După aceasta, introduceți cheia API de scriere și luați câteva șiruri.
char * api_key = "SIWOYBX26OXQ1WMS"; // Introduceți cheia API de scriere din ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
În funcția buclă nulă () citim temperatura și umiditatea și apoi afișăm acele citiri pe ecranul LCD.
funcția void send2server () este utilizată pentru a trimite datele către server. Funcția Send2server este o rutină de serviciu de întrerupere a temporizatorului, apelând la fiecare 20 de secunde. Când apelăm funcția de actualizare, se apelează rutina de întrerupere a temporizatorului.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }