- Súčasti sú povinné
- Schéma zapojenia
- Snímač teploty a vlhkosti DHT11
- Programovanie monitorovania živej teploty a vlhkosti NodeMCU ESP8266
Mikrokontroléry majú malú vnútornú pamäť, ktorá nestačí na dlhodobé ukladanie údajov generovaných senzormi, buď musíte použiť nejaké externé pamäťové zariadenie, alebo môžete údaje uložiť na niektorom cloude pomocou internetu. Niekedy je tiež ťažké zvládnuť použitie senzora v extrémnych podmienkach, kam človek nemôže dosiahnuť, alebo je ťažké ho často navštevovať. Na odstránenie tohto druhu problémov vždy hľadáme spôsoby, ako chceme monitorovať údaje senzora v reálnom čase odkiaľkoľvek bez akejkoľvek fyzickej prítomnosti na danom mieste.
V tomto scenári je možné použiť databázy v reálnom čase, keď musíme prepojiť nejaký radič, ktorý je možné pripojiť k internetu a ktorý umožňuje výmenu údajov s cloudovým serverom. Údaje zo servera môžu byť užitočné pri monitorovaní správania systému v reálnom čase, databázovej analýze, štatistickej analýze a spracovaní a interpretácii pre budúce použitie. Na tento účel slúži veľa hardvérových platforiem IoT a cloudových platforiem. Ak narazíte na ťažkosti pri hľadaní správnej platformy pre svoju aplikáciu IoT, kliknite na odkaz.
Predtým sme už pokrývali ThingSpeak, Adafruit IO a mnoho ďalších softvérov IoT. Dnes budeme stavať podobný projekt, kde použijeme snímač teploty a vlhkosti DHT11 a modul NodeMCU ESP8266 na zaznamenávanie teploty a vlhkosti v reálnom čase na databázovom serveri Firebase spoločnosti Google.
Projekt rozdelíme na dve časti. Najskôr začneme s montážou hardvérových komponentov a nahrávaním firmvéru do nich. A za druhé použijeme Firebase na nastavenie s NodeMCU na výmenu údajov v reálnom čase. Ak ste v ESP8266 alebo Firebase nováčikom, postupujte podľa nášho predchádzajúceho tutoriálu o ovládaní LED pomocou Firebase.
Súčasti sú povinné
- Modul NodeMCU ESP8266
- Snímač teploty a vlhkosti DHT11
Schéma zapojenia
Snímač teploty a vlhkosti DHT11
Modul DHT11 je vybavený komplexom vlhkosti a teploty s kalibrovaným digitálnym výstupom signálu. Modul snímača DHT11 je kombinovaný modul na snímanie vlhkosti a teploty, ktorý poskytuje kalibrovaný digitálny výstupný signál. DHT11 nám poskytuje veľmi presnú hodnotu vlhkosti a teploty a zaisťuje vysokú spoľahlivosť a dlhodobú stabilitu. Tento snímač má odporový komponent na meranie vlhkosti a komponent na meranie teploty NTC s 8-bitovým mikrokontrolérom, ktorý má rýchlu odozvu a je efektívny z hľadiska nákladov a je k dispozícii v 4-pólovom jednoradovom balení.
Predtým sme používali ESP12E na aktualizáciu odpočtov DHT11 na webovom serveri, okrem toho môžete skontrolovať všetky projekty založené na DHT11, kde sme použili DHT11 na prepojenie s mnohými ďalšími mikrokontrolérmi, ako sú Arduino, PIC, Raspberry a pomocou nich postavenou meteorologickou stanicou.
Programovanie monitorovania živej teploty a vlhkosti NodeMCU ESP8266
Na konci je uvedený kompletný program s fungujúcim videom. Tu vysvetľujeme niekoľko dôležitých častí kódu.
Najskôr zahrňte knižnice na používanie ESP8266 a firebase.
#include
Stiahnite a nainštalujte si knižnice pomocou nasledujúcich odkazov:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Pri kompilácii , ak sa vyskytne chyba, že knižnica ArduinoJson.h nie je nainštalovaná, nainštalujte si ju pomocou odkazu uvedeného vyššie.
Naprogramujeme NodeMCU tak, aby snímal hodnoty zo snímača DHT11 a každých 5 sekúnd intervalu ich tlačil na Firebase. Nastavíme cestu pre tlačenie údajov. Momentálne dva parametre, viď. vlhkosť a teplota sa posielajú rovnakou nadradenou cestou a odlišnou podradenou cestou.
Tieto dva parametre sú veľmi dôležité pre komunikáciu s firebase. Nastavenie týchto parametrov umožní výmenu dát medzi a ESP8266 a firebase. Ak chcete nájsť tieto parametre pre svoj projekt, postupujte podľa nášho predchádzajúceho tutoriálu o nastavení Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // adresa názvu projektu z firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // tajný kľúč vygenerovaný z firebase
Po úspešnom nájdení poverení stačí nahradiť vyššie uvedený kód.
Na pripojenie k sieti zadajte svoje SSID a heslo Wi-Fi.
#define WIFI_SSID "network_name" // zadajte svoj domáci alebo verejný názov wifi #define WIFI_PASSWORD "heslo" // heslo wifi ssid
Definujte dátový kolík DHT v NodeMCU. V NodeMCU môžete použiť akýkoľvek pin digitálneho GPIO.
# definujte DHTPIN D4
Knižnica DHT je vyrobená pre všetky varianty DHT a prichádza s voliteľnou výbavou, ktorý snímač DHT chcete použiť, napr. DHT11 alebo DHT22. Stačí zvoliť správny snímač DHT a pokračovať.
#define DHTTYPE DHT11 // vyberte typ dht ako DHT 11 alebo DHT22 DHT dht (DHTPIN, DHTTYPE);
Pripojte sa k vybranej sieti Wi-Fi a tiež sa pripojte k databázovému serveru firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Začnite čítať na kolíku D4 NodeMCU.
dht.begin ();
Odčítajte namerané hodnoty vlhkosti a teploty zo snímača DHT a uložte ich ako float value.
float h = dht.readHumidity (); // Čítanie teploty alebo vlhkosti trvá asi 250 milisekúnd! float t = dht.readTemperature (); // Čítať teplotu ako Celzia (predvolené)
Stačí skontrolovať, či je snímač DHT správne zapojený alebo či nie je poškodený a či je z neho regulátor schopný čítať údaje. Ak sa hodnoty nezobrazujú, pravdepodobne je snímač poškodený, stačí zobraziť chybové hlásenie a vrátiť sa späť, aby ste skontrolovali bez ďalšieho postupu.
if (isnan (h) - isnan (t)) {// Skontrolujte, či niektoré načítania zlyhali, a ukončite program skôr (skúste to znova). Serial.println (F ("Nepodarilo sa načítať zo snímača DHT!")); návrat; }
Vytlačte údaje senzora na sériovom monitore na ladenie a uložte hodnoty teploty a vlhkosti vo forme reťazca, aby ste ich mohli odoslať do firebase. Pamätajte tiež, že minimálne požadované oneskorenie medzi dvoma nameranými hodnotami zo snímača DHT11 sú 2 sekundy, preto vždy používajte oneskorenie väčšie ako 2 sekundy. Ak sa chcete dozvedieť viac informácií o DHT11, môžete sa pozrieť do oficiálneho údajového listu.
Serial.print ("Vlhkosť:"); Sériová tlač (h); Reťazec fireHumid = Reťazec (h) + Reťazec ("%"); // prevod celočíselnej vlhkosti na vlhkosť reťazca Serial.print ("% teplota:"); Sériová tlač (t); Serial.println ("° C"); Reťazec fireTemp = Reťazec (t) + Reťazec ("° C"); oneskorenie (4 000);
Nakoniec pošlite údaje o teplote a vlhkosti do firebase na cestu „your-project.firebaseio.com/DHT11/Humidity/“.
Firebase.pushString ("/ DHT11 / Vlhkosť", fireHumid); // nastavenie cesty a odosielanie nameraných hodnôt Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // nastavenie cesty a odosielanie čítaní
Všetky údaje si môžete zobraziť vo svojom účte firebase. Stačí prejsť do sekcie „ Databáza “ v časti „ Váš projekt “ na stránke „ Moja konzola “ vo Firebase.
Ak chcete nastaviť Firebase na odosielanie a sledovanie údajov, pozrite si náš predchádzajúci návod.
Kompletný kód a video pre toto monitorovanie teploty a vlhkosti založené na IoT je uvedené nižšie.