- Componentes requeridos
- Diagrama de circuito
- Sensor de temperatura y humedad DHT11
- Programación NodeMCU ESP8266 Monitoreo de temperatura y humedad en vivo
Los microcontroladores tienen una pequeña memoria interna que no es suficiente para guardar los datos generados por los sensores durante mucho tiempo, ya sea que tenga que usar algún dispositivo de memoria externa o puede guardar los datos en alguna nube usando Internet. Además, en ocasiones se vuelve difícil de manejar cuando el sensor se despliega en algún sitio de condiciones extremas donde los humanos no pueden llegar o es difícil visitarlo con frecuencia. Para rectificar este tipo de problemas, siempre buscamos formas en las que queremos monitorear los datos del sensor en tiempo real desde cualquier lugar sin presencia física en ese lugar.
Las bases de datos en tiempo real se pueden utilizar en este escenario donde solo tenemos que conectar algún controlador que se pueda conectar a Internet y pueda intercambiar datos con el servidor en la nube. Los datos del servidor pueden ser útiles para monitorear el comportamiento del sistema en tiempo real, análisis de bases de datos, análisis y procesamiento estadístico e interpretación para casos de uso futuros. Hay muchas plataformas de hardware de IoT y plataformas en la nube disponibles para cumplir este propósito. Si tiene dificultades para encontrar la plataforma adecuada para su aplicación de IoT, siga el enlace.
Anteriormente ya cubrimos ThingSpeak, Adafruit IO y muchos otros softwares de IoT. Hoy construiremos un proyecto similar en el que usaremos un sensor de temperatura y humedad DHT11 y un módulo NodeMCU ESP8266 para registrar la temperatura y la humedad en tiempo real en el servidor de base de datos Firebase de Google.
Dividiremos el proyecto en dos secciones. En primer lugar, comenzaremos ensamblando los componentes de hardware y cargando el firmware en él. Y en segundo lugar, utilizaremos Firebase para configurar NodeMCU para intercambiar datos en tiempo real. Si es nuevo en ESP8266 o Firebase, siga nuestro tutorial anterior sobre el control de LED con Firebase.
Componentes requeridos
- Módulo NodeMCU ESP8266
- Sensor de temperatura y humedad DHT11
Diagrama de circuito
Sensor de temperatura y humedad DHT11
El módulo DHT11 presenta un complejo de humedad y temperatura con una salida de señal digital calibrada, lo que significa que el módulo sensor DHT11 es un módulo combinado para detectar la humedad y la temperatura que proporciona una señal de salida digital calibrada. DHT11 nos da un valor muy preciso de humedad y temperatura y asegura una alta confiabilidad y estabilidad a largo plazo. Este sensor tiene un componente de medición de humedad de tipo resistivo y un componente de medición de temperatura de tipo NTC con un microcontrolador de 8 bits incorporado que tiene una respuesta rápida y rentable y está disponible en un paquete de una sola fila de 4 pines.
Anteriormente usamos ESP12E para actualizar las lecturas DHT11 en el servidor web, aparte de eso, puede verificar todos los proyectos basados en DHT11 donde hemos usado DHT11 para interactuar con muchos otros microcontroladores como Arduino, PIC, Raspberry y una estación meteorológica construida usándolos.
Programación NodeMCU ESP8266 Monitoreo de temperatura y humedad en vivo
El programa completo con video de trabajo se da al final. Aquí explicamos algunas partes importantes del código.
En primer lugar, incluya las bibliotecas para usar ESP8266 y firebase.
#incluir
Descargue e instale las bibliotecas siguiendo los enlaces a continuación:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Mientras compila , si obtiene un error de que la biblioteca ArduinoJson.h no está instalada, instálela usando el enlace que se proporciona arriba.
Programaremos NodeMCU para tomar lecturas del sensor DHT11 y enviarlo a Firebase cada 5 segundos de intervalo. Estableceremos un camino para enviar datos. En este momento, dos parámetros a saber. la humedad y la temperatura se envían en la misma ruta principal y en una ruta secundaria diferente.
Estos dos parámetros son muy importantes para comunicarse con firebase. La configuración de estos parámetros permitirá el intercambio de datos entre y ESP8266 y firebase. Para encontrar estos parámetros para su proyecto, siga nuestro tutorial anterior sobre la configuración de Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // la dirección del nombre del proyecto de firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // la clave secreta generada a partir de firebase
Después de encontrar con éxito las credenciales, simplemente reemplácelas en el código anterior.
Ingrese su SSID y contraseña de Wi-Fi para conectarse con su red.
#define WIFI_SSID "network_name" // ingrese el nombre de su wifi doméstico o público #define WIFI_PASSWORD "contraseña" // contraseña de wifi ssid
Defina el pin de datos DHT en NodeMCU. Puede utilizar cualquier pin GPIO digital en NodeMCU.
#define DHTPIN D4
La biblioteca DHT está hecha para todas las variantes DHT y viene con la opción de qué sensor DHT desea usar, por ejemplo, DHT11 o DHT22. Simplemente elija el sensor DHT correcto y continúe.
#define DHTTYPE DHT11 // seleccione el tipo dht como DHT 11 o DHT22 DHT dht (DHTPIN, DHTTYPE);
Conéctese a la red Wi-Fi seleccionada y también conéctese al servidor de base de datos de Firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Comience a tomar lectura en el pin D4 de NodeMCU.
dht.begin ();
Tome lecturas de humedad y temperatura del sensor DHT y guárdelas como valor flotante.
flotar h = dht.readHumidity (); // ¡La lectura de la temperatura o la humedad tarda unos 250 milisegundos! flotar t = dht.readTemperature (); // Leer la temperatura como Celsius (por defecto)
Simplemente verifique si el sensor DHT está cableado correctamente o si no está dañado y el controlador puede leer lecturas de él. Si las lecturas no se muestran, es probable que el sensor esté dañado, solo muestre un mensaje de error y vuelva a verificar sin continuar.
if (isnan (h) - isnan (t)) {// Compruebe si alguna lectura falló y salga antes (para volver a intentarlo). Serial.println (F ("¡No se pudo leer el sensor DHT!")); regreso; }
Imprima los datos del sensor en el monitor en serie para depurar y guarde los valores de temperatura y humedad en forma de cadena para enviarlos a la base de fuego. También tenga en cuenta que la demora mínima requerida entre dos lecturas del sensor DHT11 es de 2 segundos, por lo que siempre use una demora superior a 2 segundos. Para saber más sobre el DHT11, puede consultar la hoja de datos oficial.
Serial.print ("Humedad:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // convierte la humedad entera en humedad de cadena Serial.print ("% Temperature:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); retraso (4000);
Por último, envíe los datos de temperatura y humedad a firebase en la ruta "your-project.firebaseio.com/DHT11/Humidity/".
Firebase.pushString ("/ DHT11 / Humedad", fireHumid); // configura la ruta y envía las lecturas Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // configurar ruta y enviar lecturas
Puede ver todos los datos en su cuenta de base de fuego. Simplemente vaya a la sección " Base de datos " en " Su proyecto " en " Mi consola " en Firebase.
Para configurar Firebase para enviar y monitorear los datos, puede consultar nuestro tutorial anterior.
A continuación se proporciona el código completo y el video para este monitoreo de temperatura y humedad basado en IoT.