- Components necessaris
- Esquema de connexions
- Sensor de temperatura i humitat DHT11
- Programació NodeMCU ESP8266 Monitorització de temperatura i humitat en directe
Els microcontroladors tenen poca memòria interna que no és suficient per estalviar dades generades pels sensors durant molt de temps, ja sigui que heu d’utilitzar algun dispositiu de memòria extern o bé podeu desar les dades en algun núvol mitjançant Internet. A més, en algunes ocasions es fa difícil de gestionar quan el sensor es desplega en algun lloc de condicions extremes on l’ésser humà no pot arribar o és difícil visitar-lo amb freqüència. Per corregir aquest tipus de problemes, sempre examinem les maneres en què volem controlar les dades del sensor en temps real des de qualsevol lloc sense presència física en aquest lloc.
Les bases de dades en temps real es poden utilitzar en aquest escenari, en el qual només hem de connectar algun controlador que es pugui connectar a Internet i que pugui intercanviar dades amb un servidor en el núvol. Les dades del servidor poden ser útils per controlar el comportament del sistema en temps real, l’anàlisi de bases de dades, l’anàlisi i el processament estadístic i la interpretació per a casos d’ús futurs. Hi ha moltes plataformes de maquinari i plataformes de núvol disponibles per a aquest propòsit. Si trobeu dificultats per trobar la plataforma adequada per a la vostra aplicació IoT, seguiu l'enllaç.
Anteriorment ja tractàvem ThingSpeak, Adafruit IO i molts altres programes IoT. Avui construirem un projecte similar on utilitzarem un sensor de temperatura i humitat DHT11 i un mòdul NodeMCU ESP8266 per registrar la temperatura i la humitat en temps real al servidor de bases de dades Firebase de Google.
Dividirem el projecte en dues seccions. En primer lloc, començarem per muntar els components del maquinari i carregar-hi el firmware. I, en segon lloc, utilitzarem Firebase per configurar amb NodeMCU per intercanviar dades en temps real. Si no coneixeu ESP8266 o Firebase, seguiu el nostre tutorial anterior sobre el control del LED mitjançant Firebase.
Components necessaris
- Mòdul NodeMCU ESP8266
- Sensor de temperatura i humitat DHT11
Esquema de connexions

Sensor de temperatura i humitat DHT11
El mòdul DHT11 presenta un complex d'humitat i temperatura amb una sortida de senyal digital calibrada que significa que el mòdul de sensor DHT11 és un mòdul combinat per detectar la humitat i la temperatura que proporciona un senyal de sortida digital calibrat. DHT11 ens proporciona un valor d’humitat i temperatura molt precís i garanteix una alta fiabilitat i estabilitat a llarg termini. Aquest sensor té un component de mesura de la humitat de tipus resistiu i un component de mesura de temperatura de tipus NTC amb un microcontrolador de 8 bits incorporat que té una resposta ràpida i rendible i està disponible en un paquet de 4 pins d’una sola fila.

Anteriorment hem utilitzat ESP12E per actualitzar les lectures DHT11 al servidor web, a part d’això, podeu comprovar tots els projectes basats en DHT11 on hem utilitzat DHT11 per relacionar-nos amb molts altres microcontroladors com Arduino, PIC, Raspberry i construir una estació meteorològica que els utilitza.
Programació NodeMCU ESP8266 Monitorització de temperatura i humitat en directe
Al final es dóna un programa complet amb vídeo de treball. Aquí expliquem algunes parts importants del codi.
En primer lloc, incloure les biblioteques per utilitzar ESP8266 i firebase.
#incloure
Descarregueu i instal·leu les biblioteques seguint els enllaços següents:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Durant la compilació , si teniu un error que la biblioteca ArduinoJson.h no està instal·lada, instal·leu-la mitjançant l'enllaç indicat anteriorment.
Programarem NodeMCU per agafar lectures del sensor DHT11 i passar-lo a Firebase cada 5 segons d’interval. Establirem un camí per empènyer les dades. Ara mateix hi ha dos paràmetres, a saber. la humitat i la temperatura s’envien en el mateix camí principal i en un camí infantil diferent.
Aquests dos paràmetres són molt importants per comunicar-se amb Firebase. La configuració d’aquests paràmetres permetrà l’intercanvi de dades entre ESP8266 i firebase. Per trobar aquests paràmetres per al vostre projecte, seguiu el nostre tutorial anterior sobre la configuració de Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // l'adreça del nom del projecte de l'identificador de firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // la clau secreta generada des de firebase
Després de trobar correctament les credencials, només cal que substituïu el codi anterior.
Introduïu el vostre SSID i contrasenya Wi-Fi per connectar-vos amb la vostra xarxa.
#define WIFI_SSID "network_name" // introduïu el vostre nom de casa o de wifi públic #define WIFI_PASSWORD "password" // contrasenya de wifi ssid
Definiu el pin de dades DHT a NodeMCU. Podeu utilitzar qualsevol pin GPIO digital a NodeMCU.
#defineix DHTPIN D4
La biblioteca DHT està feta per a totes les variants de DHT i inclou l'opció del sensor DHT que voleu utilitzar per exemple, DHT11 o DHT22. Només heu de triar el sensor DHT adequat i continuar.
#define DHTTYPE DHT11 // seleccioneu el tipus dht com DHT 11 o DHT22 DHT dht (DHTPIN, DHTTYPE);
Connecteu-vos a la xarxa Wi-Fi seleccionada i connecteu-vos també al servidor de bases de dades de firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Comenceu a fer la lectura al pin D4 de NodeMCU.
dht.begin ();
Feu lectures d'humitat i temperatura del sensor DHT i estalvieu-les com a valor flotant.
flotador h = dht.readHumidity (); // La temperatura o la humitat de la lectura triguen uns 250 mil·lisegons! flotador t = dht.readTemperature (); // Llegiu la temperatura com Celsius (per defecte)
Simplement comproveu si el sensor DHT està correctament cablejat o no està danyat i el controlador pot llegir-ne les lectures. Si les lectures no es mostren, probablement el sensor estigui danyat, només cal que mostreu un missatge d'error i torneu a comprovar-ho sense continuar.
if (isnan (h) - isnan (t)) {// Comproveu si alguna lectura ha fallat i sortiu aviat (per tornar-ho a provar). Serial.println (F ("No s'ha pogut llegir del sensor DHT!")); tornar; }
Imprimiu les dades del sensor al monitor sèrie per depurar-les i deseu els valors de temperatura i humitat en forma de cadena per enviar-les a la base de foc. Tingueu en compte també que el retard mínim necessari entre dues lectures del sensor DHT11 és de 2 segons, de manera que utilitzeu sempre un retard superior a 2 segons. Per obtenir més informació sobre el DHT11, podeu consultar el full de dades oficial.
Serial.print ("Humitat:"); Serial.print (h); String fireHumid = Cadena (h) + Cadena ("%"); // converteix la humitat sencera en cadena d’humitat Serial.print ("% Temperatura:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); retard (4000);
Per fi, envieu les dades de temperatura i humitat a Firebase al camí "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Humitat", fireHumid); // configurar el camí i enviar lectures Firebase.pushString ("/ DHT11 / Temperatura", fireTemp); // configureu el camí i envieu lectures
Podeu veure totes les dades al vostre compte de firebase. Només cal que aneu a la secció " Base de dades " de "El vostre projecte " a " La meva consola " a Firebase.

Per configurar Firebase per enviar i controlar les dades, podeu consultar el nostre tutorial anterior.
A continuació es mostra un codi complet i un vídeo per a aquesta monitorització de temperatura i humitat basada en l'IoT.
