- Požadované komponenty
- Kruhový diagram
- Snímač teploty a vlhkosti DHT11
- Programování monitorování teploty a vlhkosti v reálném čase NodeMCU ESP8266
Mikrokontroléry mají malou vnitřní paměť, která nestačí k dlouhodobému ukládání dat generovaných senzory, buď musíte použít nějaké externí paměťové zařízení, nebo můžete data uložit na nějaký cloud pomocí internetu. Někdy je také obtížné to zvládnout, když je senzor nasazen v nějakém extrémním prostředí, kam se člověk nedostane, nebo je obtížné ho často navštěvovat. Abychom tento druh problémů napravili, vždy hledáme způsoby, jak chceme monitorovat data senzorů v reálném čase odkudkoli bez fyzické přítomnosti na tomto místě.
V tomto scénáři lze použít databáze v reálném čase, kde musíme pouze propojit nějaký řadič, který lze připojit k internetu a může si vyměňovat data s cloudovým serverem. Data serveru mohou být užitečná při monitorování chování systému v reálném čase, databázové analytice, statistické analýze a zpracování a interpretaci pro případ budoucího použití. K tomuto účelu je k dispozici spousta hardwarových platforem IoT a cloudových platforem. Pokud narazíte na potíže při hledání správné platformy pro vaši aplikaci IoT, postupujte podle odkazu.
Dříve jsme již pokryli ThingSpeak, Adafruit IO a mnoho dalších IoT softwarů. Dnes budeme stavět podobný projekt, kde použijeme čidlo teploty a vlhkosti DHT11 a modul NodeMCU ESP8266 pro záznam teploty a vlhkosti v reálném čase na databázovém serveru Firebase společnosti Google.
Projekt rozdělíme na dvě části. Nejprve začneme s montáží hardwarových komponent a nahráním firmwaru do nich. A za druhé použijeme Firebase k nastavení s NodeMCU pro výměnu dat v reálném čase. Pokud jste v ESP8266 nebo Firebase noví, postupujte podle našeho předchozího tutoriálu o ovládání LED pomocí Firebase.
Požadované komponenty
- Modul NodeMCU ESP8266
- Snímač teploty a vlhkosti DHT11
Kruhový diagram
Snímač teploty a vlhkosti DHT11
Modul DHT11 je vybaven komplexem vlhkosti a teploty s kalibrovaným výstupem digitálního signálu, což znamená, že modul senzoru DHT11 je kombinovaný modul pro snímání vlhkosti a teploty, který poskytuje kalibrovaný digitální výstupní signál. DHT11 nám dává velmi přesnou hodnotu vlhkosti a teploty a zajišťuje vysokou spolehlivost a dlouhodobou stabilitu. Tento snímač má odporovou součást pro měření vlhkosti a součást pro měření teploty typu NTC s vestavěným 8bitovým mikrokontrolérem, který má rychlou odezvu a je efektivní z hlediska nákladů a je k dispozici ve 4kolíkovém jednořadém balení.
Dříve jsme používali ESP12E k aktualizaci údajů DHT11 na webovém serveru, kromě toho můžete zkontrolovat všechny projekty založené na DHT11, kde jsme použili DHT11 k propojení s mnoha dalšími mikrokontroléry, jako je Arduino, PIC, Raspberry a pomocí nich postavená meteorologická stanice.
Programování monitorování teploty a vlhkosti v reálném čase NodeMCU ESP8266
Na konci je uveden kompletní program s fungujícím videem. Zde vysvětlujeme několik důležitých částí kódu.
Nejprve zahrňte knihovny pro používání ESP8266 a firebase.
#zahrnout
Stáhněte a nainstalujte knihovny pomocí následujících odkazů:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Pokud se při kompilaci zobrazí chyba, že knihovna ArduinoJson.h není nainstalována, nainstalujte ji prosím pomocí odkazu uvedeného výše.
Naprogramujeme NodeMCU tak, aby odečítal hodnoty ze snímače DHT11 a každých 5 sekund intervalu jej tlačil na Firebase. Nastavíme cestu pro předávání dat. Právě teď dva parametry viz. vlhkost a teplota jsou odesílány stejnou rodičovskou cestou a jinou dětskou cestou.
Tyto dva parametry jsou velmi důležité pro komunikaci s firebase. Nastavení těchto parametrů umožní výměnu dat mezi ESP8266 a Firebase. Chcete-li tyto parametry pro svůj projekt najít, postupujte podle našeho předchozího tutoriálu o nastavení Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // adresa názvu projektu z firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // tajný klíč vygenerovaný z firebase
Po úspěšném nalezení pověření stačí nahradit výše uvedený kód.
Chcete-li se připojit k síti, zadejte své SSID a heslo Wi-Fi.
#define WIFI_SSID "network_name" // zadejte název vašeho domácího nebo veřejného wifi #define WIFI_PASSWORD "heslo" // heslo wifi ssid
Definujte datový kolík DHT v NodeMCU. V NodeMCU můžete použít jakýkoli pin Digital GPIO.
#define DHTPIN D4
Knihovna DHT je vytvořena pro všechny varianty DHT a je dodávána s možností, které čidlo DHT chcete použít např. Pro DHT11 nebo DHT22. Stačí zvolit správný snímač DHT a pokračovat.
#define DHTTYPE DHT11 // vyberte typ DHT jako DHT 11 nebo DHT22 DHT DHT (DHTPIN, DHTTYPE);
Připojte se k vybrané síti Wi-Fi a také se připojte k databázovému serveru firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Začněte odečítat na pinu D4 NodeMCU.
dht.begin ();
Odečtěte hodnoty vlhkosti a teploty ze snímače DHT a uložte je jako plovoucí hodnotu.
float h = dht.readHumidity (); // Čtení teploty nebo vlhkosti trvá asi 250 milisekund! float t = dht.readTemperature (); // Číst teplotu ve stupních Celsia (výchozí)
Stačí zkontrolovat, zda je snímač DHT správně zapojen nebo není poškozen a řídicí jednotka je schopna z něj číst hodnoty. Pokud se hodnoty nezobrazují, pravděpodobně je senzor poškozen, stačí zobrazit chybovou zprávu a vrátit se ke kontrole, aniž byste pokračovali vpřed.
if (isnan (h) - isnan (t)) {// Zkontrolujte, zda některá čtení selhala, a ukončete předčasně (zkuste to znovu). Serial.println (F ("Nepodařilo se přečíst ze snímače DHT!")); vrátit se; }
Vytiskněte data snímače na sériovém monitoru pro ladění a uložte hodnoty teploty a vlhkosti ve formě řetězce a odešlete je do firebase. Mějte také na paměti, že minimální požadovaná prodleva mezi dvěma odečty ze snímače DHT11 jsou 2 sekundy, proto vždy používejte prodlevu delší než 2 sekundy. Chcete-li se dozvědět více o DHT11, můžete se podívat do oficiálního datového listu.
Serial.print ("Vlhkost:"); Sériový tisk (h); Řetězec fireHumid = Řetězec (h) + Řetězec ("%"); // převod celočíselné vlhkosti na vlhkost řetězce Serial.print ("% teplota:"); Serial.print (t); Serial.println ("° C"); Řetězec fireTemp = Řetězec (t) + Řetězec ("° C"); zpoždění (4000);
Nakonec odešlete data o teplotě a vlhkosti do firebase na cestu „your-project.firebaseio.com/DHT11/Humidity/“.
Firebase.pushString ("/ DHT11 / Vlhkost", fireHumid); // nastavení cesty a odeslání čtení Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // nastavení cesty a odeslání údajů
Ve svém účtu firebase vidíte všechna data. Stačí přejít do sekce „ Databáze “ v části „ Váš projekt “ na stránce „ Moje konzole “ ve Firebase.
Chcete-li nastavit Firebase pro odesílání a monitorování dat, podívejte se na náš předchozí tutoriál.
Níže je uveden kompletní kód a video pro toto sledování teploty a vlhkosti založené na IoT.