- Componenten vereist
- Schakelschema
- DHT11 Temperatuur- en vochtigheidssensor
- Programmering NodeMCU ESP8266 Live temperatuur- en vochtigheidsbewaking
Microcontrollers hebben een klein intern geheugen dat niet genoeg is om door sensoren gegenereerde gegevens voor een lange tijd op te slaan, ofwel moet u een extern geheugenapparaat gebruiken of u kunt de gegevens via internet in een cloud opslaan. Soms wordt het ook moeilijk om te beheren wanneer de sensor wordt ingezet op een locatie met extreme omstandigheden waar mensen niet bij kunnen of het moeilijk is om daar vaak te bezoeken. Om dit soort problemen op te lossen, kijken we altijd naar de manieren waarop we de sensorgegevens in realtime willen volgen vanaf elke locatie zonder enige fysieke aanwezigheid op die plaats.
De realtime databases kunnen worden gebruikt in dit scenario, waarbij we slechts een controller hoeven te koppelen die op internet kan worden aangesloten en die gegevens kunnen uitwisselen met een cloudserver. De servergegevens kunnen nuttig zijn bij het monitoren van real-time systeemgedrag, database-analyse, statistische analyse en verwerking, en interpretatie voor toekomstig gebruik. Er zijn veel IoT-hardwareplatforms en cloudplatforms beschikbaar om dit doel te dienen. Als u problemen ondervindt bij het vinden van het juiste platform voor uw IoT-toepassing, volg dan de link.
Eerder behandelden we al ThingSpeak, Adafruit IO en vele andere IoT-software. Vandaag gaan we een soortgelijk project bouwen waarbij we een temperatuur- en vochtigheidssensor DHT11 en een NodeMCU ESP8266-module gebruiken om de temperatuur en vochtigheid in realtime te loggen op de Firebase-databaseserver van Google.
We verdelen het project in twee delen. Ten eerste beginnen we met het samenstellen van de hardwarecomponenten en het uploaden van firmware erin. En ten tweede zullen we Firebase gebruiken om met NodeMCU in te stellen om realtime gegevens uit te wisselen. Als u ESP8266 of Firebase nieuw bent, volgt u onze vorige tutorial over het bedienen van LED met Firebase.
Componenten vereist
- NodeMCU ESP8266-module
- DHT11 Temperatuur- en vochtigheidssensor
Schakelschema
DHT11 Temperatuur- en vochtigheidssensor
De DHT11-module heeft een vochtigheids- en temperatuurcomplex met een gekalibreerd digitaal uitgangssignaal. DHT11-sensormodule is een gecombineerde module voor het meten van vochtigheid en temperatuur die een gekalibreerd digitaal uitgangssignaal geeft. DHT11 geeft ons een zeer nauwkeurige waarde van vochtigheid en temperatuur en zorgt voor een hoge betrouwbaarheid en stabiliteit op lange termijn. Deze sensor heeft een weerstandscomponent voor vochtigheidsmeting en een component voor temperatuurmeting van het NTC-type met een ingebouwde 8-bit microcontroller die snel reageert en kosteneffectief is en beschikbaar is in een 4-pins pakket met een enkele rij.
We hebben eerder ESP12E gebruikt om de DHT11-metingen op de webserver bij te werken, behalve dat je alle op DHT11 gebaseerde projecten kunt bekijken waar we DHT11 hebben gebruikt om te communiceren met veel andere microcontrollers zoals Arduino, PIC, Raspberry en het ingebouwde weerstation ermee.
Programmering NodeMCU ESP8266 Live temperatuur- en vochtigheidsbewaking
Aan het einde wordt het complete programma met werkende video gegeven. Hier leggen we enkele belangrijke delen van de code uit.
Neem eerst de bibliotheken op voor het gebruik van ESP8266 en firebase.
# omvatten
Download en installeer de bibliotheken door de onderstaande links te volgen:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Als u tijdens het compileren een foutmelding krijgt dat de ArduinoJson.h-bibliotheek niet is geïnstalleerd, installeer deze dan via de bovenstaande link.
We zullen NodeMCU programmeren om metingen te doen van de DHT11-sensor en deze om de 5 seconden naar Firebase te sturen. We zullen een pad instellen voor het pushen van gegevens. Op dit moment twee parameters namelijk. vochtigheid en temperatuur worden verzonden in hetzelfde ouderpad en een ander kindpad.
Deze twee parameters zijn erg belangrijk om te communiceren met firebase. Door deze parameters in te stellen, wordt de gegevensuitwisseling tussen en ESP8266 en firebase mogelijk gemaakt. Volg onze vorige tutorial over Firebase Setup om deze parameters voor uw project te vinden.
#define FIREBASE_HOST "uw-project.firebaseio.com" // het projectnaamadres van firebase-id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // de geheime sleutel gegenereerd vanuit firebase
Nadat u de inloggegevens met succes hebt gevonden, vervangt u de bovenstaande code.
Voer uw Wi-Fi SSID en wachtwoord in om verbinding te maken met uw netwerk.
#define WIFI_SSID "netwerknaam" // voer uw huis- of openbare wifi-naam in #define WIFI_PASSWORD "wachtwoord" // wachtwoord van wifi ssid
Definieer de DHT-gegevenspin in NodeMCU. U kunt elke digitale GPIO-pin gebruiken in NodeMCU.
# definiëren DHTPIN D4
De DHT-bibliotheek is gemaakt voor alle DHT-varianten en wordt geleverd met de optie welke DHT-sensor u wilt gebruiken voor bijvoorbeeld DHT11 of DHT22. Kies gewoon de juiste DHT-sensor en ga verder.
#define DHTTYPE DHT11 // selecteer dht type als DHT 11 of DHT22 DHT dht (DHTPIN, DHTTYPE);
Maak verbinding met het geselecteerde Wi-Fi-netwerk en maak ook verbinding met de firebase-databaseserver.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begin met lezen op pin D4 van NodeMCU.
dht.begin ();
Meet de vochtigheid en temperatuur van de DHT-sensor en sla deze op als float-waarde.
zweven h = dht.readHumidity (); // Het aflezen van temperatuur of vochtigheid duurt ongeveer 250 milliseconden! zweven t = dht.readTemperature (); // Lees de temperatuur als Celsius (de standaard)
Controleer gewoon of de DHT-sensor correct is bedraad of niet beschadigd is en de controller de metingen ervan kan aflezen. Als de meetwaarden niet worden weergegeven, is de sensor waarschijnlijk beschadigd, laat gewoon een foutmelding zien en keer terug om het opnieuw te controleren zonder verder te gaan.
if (isnan (h) - isnan (t)) {// Controleer of het lezen is mislukt en sluit vroeg af (om het opnieuw te proberen). Serial.println (F ("Lezen van DHT-sensor mislukt!")); terugkeren; }
Print sensorgegevens in seriële monitor voor foutopsporing en sla de waarden van temperatuur en vochtigheid op in stringvorm om deze naar de firebase te sturen. Merk ook op dat de minimum vereiste vertraging tussen twee metingen van de DHT11-sensor 2 seconden is, dus gebruik altijd een vertraging van meer dan 2 seconden. Voor meer informatie over de DHT11 kunt u het officiële gegevensblad raadplegen.
Serial.print ("Vochtigheid:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // converteer integer vochtigheid naar string vochtigheid Serial.print ("% Temperatuur:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); vertraging (4000);
Stuur ten slotte de temperatuur- en vochtigheidsgegevens naar firebase op het pad "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // setup pad en verzend metingen Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // setup-pad en verzend metingen
U kunt alle gegevens in uw firebase-account zien. Ga gewoon naar het gedeelte " Database " in " Uw project " bij " Mijn console " in Firebase.
Om Firebase in te stellen voor het verzenden en controleren van de gegevens, kunt u onze vorige tutorial raadplegen.
Volledige code en video voor deze op IoT gebaseerde temperatuur- en vochtigheidsmonitoring wordt hieronder gegeven.