Enviar datos de DHT22 a Adafruit usando ESP8266

Hoy vamos a ver cómo enviar datos (específicamente temperatura y humedad) recogidos del sensor DHT22 a Adafruit.

Lo que usaremos para enviar los datos será la tarjeta NodeMCU ESP8266, aunque el código explicado aquí funciona para muchas más tarjetas.

Librerías necesarias

Te recomiendo usar VSCode con PlatformIO para programar la tarjeta. Mostraré la guía para instalar las librerías desde PlatformIO, pero si usas el IDE de Arduino puedes encontrarla por el mismo nombre.

Vamos a leer la temperatura con el DHT22, así que por favor mira este post en donde se indica cómo instalar las librerías y descargar el encabezado faltante, no es muy largo.

También necesitamos las librerías de Adafruit.

Busca adafruit communication e instala Adafruit IO Arduino.

Busca adafruit mqtt e instala Adafruit MQTT Library.

Finalmente busca ArduinoHttpClient e instala ArduinoHttpClient.

Al final debe verse así:

Librerías necesarias para conectar ESP8266 y DHT22 con Adafruit

Configuración de Adafruit

Veremos todo lo que se tiene que hacer en el sitio web de Adafruit.

Dashboard

Vamos a crear un dashboard en donde mostraremos una gráfica de la temperatura y la humedad. Comenzamos creando un escritorio o dashboard.

Ve al sitio de adafruit: https://io.adafruit.com/ (si no tienes cuenta, crea una y todo eso, ¿ya sabes, no?)

Ahora en Dashboards selecciona View All y más tarde en Actions elige Create a new Dashboard:

Crear nuevo dashboard en Adafruit

Ponle un nombre y descripción que quieras. Luego haz click en Create.

Feeds

Necesitamos dos feeds, uno de temperatura y otro de humedad. Más tarde vamos a poner estos feeds en el escritorio creado anteriormente.

Ve a Feeds > View All y en Actions haz click en Create a new Feed:

Crear nuevo feed en Adafruit

Elige el nombre que gustes, pero recuérdalo. Yo creé uno con el nombre Temperatura y otro con el nombre Humedad.

Repite el paso para crear el Feed de humedad. No olvides los nombres, pues más tarde los vamos a usar.

Gráfica Line Chart

Como último paso regresa a Dashboards > View All y haz click en el que creamos anteriormente. En la parte derecha selecciona create a new block, en el tipo selecciona Line Chart:

Crear nuevo bloque de tipo Line Chart

Después de eso, elige los feeds creados anteriormente:

Seleccionar feeds

En la siguiente ventana puedes dejar todo intacto o configurarlo a tu gusto. Yo lo he dejado así:

Configuración del bloque

Claves de Adafruit IO

En la parte derecha hay un apartado que dice AIO KEY, al hacer click en el mismo te dará tu usuario y clave. Hay que copiarlas para usarlas más tarde.

AIO KEY

Eso es todo lo necesario en la parte de Adafruit.

Código fuente

Veremos ahora la parte para conectarnos a Adafruit, crear los feeds y enviarlos al servidor para graficarlos. Recuerda que vamos a leer el sensor DHT22.

Archivo de configuración config.h

Según los ejemplos de Adafruit podemos colocar nuestra clave en el archivo config.h, el mío se ve así:

Configuramos dos cosas: las claves de acceso a Adafruit, y las claves para conectar a la red WiFi, pues obviamente necesitamos internet para acceder.

Por cierto, aquí se crea una variable llamada io, que es de tipo AdafruitIO_Wifi pasándole nuestras credenciales.

Creación de feeds en código

Dentro del código vamos a crear igualmente los feeds; son de tipo AdafruitIO_Feed y al instanciarlos deben tener los nombres que te dije que tenías que anotar:

Nota: con el plan gratuito y todo eso, no deberíamos alimentar a los feeds en menos tiempo de 5 segundos. Es decir, hay que enviar datos cada 5 (o más) segundos.

Leer temperatura

Ahora leemos el sensor y enviamos los datos. La parte importante es cuando invocamos al método save del feed, pasándole el valor.

No olvides lo del sensor DHT22 y el pin D8, que ya expliqué anteriormente pero en resumen si usas el D8 debes desconectar el sensor al subir el código. Eres libre de usar otro pin igualmente.

Poniendo todo junto

El código main.cpp se ve así:

Demostración

Hay que subir el código al ESP8266 y conectar el sensor como normalmente se hace.

ESP8266 con DHT22 enviando datos a Adafruit

Después puedes ir a la página de Adafruit y ver los resultados en el dashboard, que se irán actualizando cada 5 segundos:

Escritorio en Adafruit – Ver gráfica de temperatura y humedad alimentada por DHT22

Si quieres verlo en vivo puedes entrar a mi dashboard, solo que no te garantizo que se vea al momento de que leas esto, pues probablemente ya habré desconectado el sensor.

Conclusión

Adafruit es un buen servicio para ver nuestros datos en tiempo real, aunque yo prefiero crear servidores propios, pero es cosa de cada persona.

Vimos cómo leer el sensor, pero realmente podemos hacer muchas cosas más. Por ejemplo, encender y apagar una bombilla usando un relevador… solo que eso es cosa de otro post.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario