La humedad y la temperatura son parámetros muy comunes para medir en muchos lugares como granjas, invernaderos, médicos, industrias, hogares y oficinas. Ya cubrimos la medición de humedad y temperatura usando Arduino y mostramos los datos en la pantalla LCD.
En este proyecto de IoT vamos a monitorear la humedad y la temperatura a través de Internet usando ThingSpeak, donde mostraremos los datos actuales de humedad y temperatura a través de Internet usando el servidor ThingSpeak. Se logra mediante las comunicaciones de datos entre Arduino, módulo de sensor DHT11, módulo WIFI ESP8266 y LCD. El termómetro de escala Celsius y el medidor de humedad de escala de porcentaje muestra la temperatura ambiente y la humedad a través de una pantalla LCD y también la envía al servidor ThingSpeak para monitoreo en vivo desde cualquier parte del mundo.
Configuración de trabajo y ThingSpeak:
Este proyecto basado en IoT tiene cuatro secciones, en primer lugar, el sensor de humedad y temperatura DHT11 detecta los datos de humedad y temperatura . En segundo lugar, Arduino Uno extrae los datos del sensor DHT11 como número adecuado en porcentaje y escala Celsius, y los envía al módulo Wi-Fi. En tercer lugar , el módulo Wi-Fi ESP8266 envía los datos al servidor de ThingSpeak. Y finalmente ThingSpeak analiza los datos y los muestra en forma de gráfico. La pantalla LCD opcional también se utiliza para mostrar la temperatura y la humedad.
ThingSpeak proporciona una muy buena herramienta para proyectos basados en IoT para Arduino. Al usar el sitio ThingSpeak, podemos monitorear nuestros datos a través de Internet desde cualquier lugar, y también podemos controlar nuestro sistema a través de Internet, utilizando los Canales y páginas web proporcionados por ThingSpeak. ThingSpeak 'recopila' los datos de los sensores, 'analiza y visualiza' los datos y 'actúa' desencadenando una reacción. Aquí explicamos cómo enviar datos al servidor ThingSpeak mediante el módulo WIFI ESP8266:
1. En primer lugar, el usuario debe crear una cuenta en ThingSpeak.com, luego iniciar sesión y hacer clic en Comenzar.
2. Ahora vaya al menú 'Canales' y haga clic en la opción Nuevo canal en la misma página para continuar con el proceso.
3. Ahora verá un formulario para crear el canal, complete el Nombre y la Descripción según su elección. Luego, complete las etiquetas 'Humedad' y 'Temperatura' en el Campo 1 y el Campo 2, marque las casillas de verificación de ambos Campos. También marque la casilla de verificación para la opción 'Hacer público' a continuación en el formulario y finalmente Guardar el canal. Ahora se ha creado su nuevo canal.
4. Ahora haga clic en la pestaña 'Claves API' y guarde las claves API de escritura y lectura, aquí solo estamos usando la clave de escritura. Debe copiar esta clave en char * api_key en el código.
5. Después, haga clic en 'Importar / Exportar datos' y copie la URL de solicitud GET de actualización de canal de información, que es:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Ahora el usuario debe abrir "api.thingspeak.com" usando la función httpGet con la postUrl como "update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0" y luego enviar datos usando la fuente de datos o actualizar la dirección de solicitud.
Antes de enviar los datos, el usuario debe editar esta cadena de consulta o postUrl con campos de datos de temperatura y humedad, como se muestra a continuación. Aquí hemos agregado ambos parámetros en la cadena que necesitamos enviar usando la solicitud GET al servidor, después de eso, hemos usado httpGet para enviar los datos al servidor. Consulte el código completo a continuación.
Sprintf (postUrl, "¿actualizar? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Todo el proceso se demuestra en la sección de Video, al final de este artículo.
El trabajo de este proyecto se basa en la comunicación en serie de un solo cable para obtener datos de DHT11. Primero Arduino envía una señal de inicio al módulo DHT y luego DHT da una señal de respuesta con los datos que contienen. Arduino recopila y extrae los datos en dos partes, primero la humedad y la segunda, la temperatura, y luego los envía a una pantalla LCD de 16x2 y al servidor ThingSpeak. ThingSpeak muestra los datos en forma de gráfico como se muestra a continuación:
Puede obtener más información sobre el sensor DHT11 y su interfaz con Arduino aquí.
Descripción del circuito:
Las conexiones para este proyecto de monitoreo de temperatura y humedad ThingSpeak son muy simples. Aquí se utiliza una pantalla de cristal líquido para mostrar la temperatura y la humedad, que está directamente conectada a Arduino en modo de 4 bits. Los pines de la pantalla LCD RS, EN, D4, D5, D6 y D7 están conectados a los pines digitales Arduino número 14, 15, 16, 17, 18 y 19. Esta pantalla LCD es opcional.
El módulo del sensor DHT11 está conectado al pin digital 12 de Arduino. Los pines Vcc y GND del módulo Wi-Fi ESP8266 están conectados directamente a 3.3V y GND de Arduino y CH_PD también está conectado con 3.3V. Los pines Tx y Rx de ESP8266 están conectados directamente a los pines 2 y 3 de Arduino. La biblioteca serial de software también se usa aquí para permitir la comunicación serial en los pines 2 y 3 de Arduino. Ya hemos cubierto la Interfaz del módulo Wi-Fi ESP8266 con Arduino en detalle.
Parte de programación:
La programación parte de este proyecto juega un papel muy importante para realizar todas las operaciones. En primer lugar, incluimos las bibliotecas necesarias e inicializamos las variables.
#include "dht.h" // Incluye biblioteca para dht #include
Después, ingrese su clave Write API y tome algunas cadenas.
char * api_key = "SIWOYBX26OXQ1WMS"; // Ingrese su clave de API de escritura de ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
En la función de bucle vacío () leemos la temperatura y la humedad y luego mostramos esas lecturas en la pantalla LCD.
La función void send2server () se utiliza para enviar los datos al servidor. La función Send2server es una rutina de servicio de interrupción del temporizador, que llama cada 20 segundos. Cuando llamamos a la función de actualización, se llama a la rutina de servicio de interrupción del temporizador.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "¿actualizar? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }