jueves, 1 de diciembre de 2022

Educacont con ThinSpeak y Telegram

Educacont con ThingSpeak y Telegram

Este programa realizado mediante ArduinoBlocks pretende visualizar los datos recogidos por una estación Educacont en una pantalla OLED y al mismo tiempo enviarlos a un canal de ThingSpeak y poder consultarlos desde Telegram.

Listado de materiales:

Placa de control ESP32 STEAMakers compatible con Arduino UNO, cable Dupont Hembra-Hembra, tira de 8 Neopixel, sensor de temperatura y humedad DHT22, sensor de CO y NO2 MiCS 4514, sensor de micropartículas PM 2.5

Conexiones:

Neopixel: D4
DHT22: D5
MiCS 4514 NOX: D3
MiCS 4514 PRE: D6
MiCS 4514 RED: D7
PM 2.5 OUT: D9
PM 2.5 LED: D10

Explicación del programa:

Para hacer funcionar todos los sensores enviando datos a ThingSpeak hemos tenido que utilizar el blog ESP Restart al final del Bucle. Es la solución que hemos encontrado para leer los sensores antes de configurar la conexión Wifi y las comunicaciones, ya que parece que interferían entre ellos.

Los bloques del programa están reunidos en tres grupos: inicializar, bucle y lectura de mensajes de Telegram.

Inicializar:

En primer lugar, se configura la pantalla LCD, con los tres primeros bloques. A continuación se leen los distintos sensores para guardar los valores en las variables correspondientes. A continuación los distintos valores de temperatura, humedad, concentración de CO, NO2 y partículas PM 2,5 se muestran en la pantalla OLED.

En la siguiente imagen se muestra la continuación del conjunto inicializar. Aquí se configura el acceso a la red wifi, la conexión MQTT del ThingSpeak, la conexión al Telegram y la configuración del Neopixel de 8 leds.

Los siguientes bloques no son muy importantes, ya que esta parte del programa, la que mediante una consulta de Telegram nos informa del estado de los diferentes leds del Neopixel aún no ha sido implementada en la última versión de este programa. Aquí encontramos la declaración de las 8 variables Led... y el bloque que apaga el LED 0. La idea era que el encendido o apagado de este led nos indicase en qué parte del programa se encuentra la placa.

No ha habido tiempos de más, pero me hubiera gustado añadir las funcionalidades de otro programa que permitía encender y apagar los leds del Neopixel en verde o rojo y también saber el estado de todos ellos cuando se hace una consulta por Telegram.

De momento lo único que se puede hacer es preguntar por Telegram cuáles son los datos de los sensores, enviando la palabra datos. El problema es que, en principio tal y como se ha programado se esperaba que una vez enviados los datos se pudiera hacer otra cosa con la comunicación con Telegram. El hecho es que desde que le cargué por primera vez el programa y le envié la demanda de datos, no ha parado de enviar el resumen de datos cada dos minutos, aunque desconecte la placa y la vuelva a encender. Parece que Telegram ha tomado el mando para siempre, y eso aunque le cargue otro programa, poniendo por caso que sólo encienda los leds del Neopoixel, y luego le vuelva a cargar éste.

Grupo de mensajes de Telegram:

En este grupo ponemos los diferentes mensajes que nos llegan de Telegram a la variable entrada. Si este valor coincide con datos lo pone en la variable operacion y si esta variable tiene el valor datos comienza el envío de la información de los sensores. Es de hecho una doble estructura condicional innecesaria, pensada para ampliar la funcionalidad de la comunicación con Telegram.

Ahora se trata de componer un texto que metemos en la variable datos con los valores de los diferentes sensores y el texto necesario para que el mensaje pueda entenderse. A continuación el siguiente bloque envía el texto por Telegram y para terminar se ponen a o las variables entrada y operacion a fin de que este envío del resumen de datos se haga una sola vez.

La continuación del programa permitiría introducir el valor numérico correspondiente al píxel que queremos apagar o encender, pero esto ya no funciona.

Tal y como habíamos dicho a continuación se muestran los bloques que permiten asignar un valor entre 0 y 7 en la variable píxel, con una serie de estructuras condicionales. Luego se pasa del valor de la variable de texto pixel a la variable numérica pixel1.

Si todo funcionara bien, ahora con los siguientes bloques se podría conseguir que enviando por Telegram las palabras rojo, verde y negro se pudieran encender o apagar con estos colores los leds correspondientes con el número que antes habíamos enviado. Pero ya digo que de momento esto se pura ficción.

Al final de este grupo se reinician los valores de las variables píxel y entrada para que no interfieran en acciones posteriores.

Bucle:

El bucle hemos dispuesto las comunicaciones con ThingSpeak para enviar los datos de los sensores en los distintos campos del canal. Entre uno y otro se dispone una espera de 16 segundos. A continuación encendemos el led 0 en rojo y disponemos el bloque ESP Restart.

Con este programa podemos consultar los datos de Educacont, directamente en la pantalla OLED y también con ThingSpeak, ThingView y Telegram.

El programa lo podemos encontrar en Arduino Blocks:

http://www.arduinoblocks.com/web/project/1004779

El canal de ThingSpeak es éste:

https://thingspeak.com/channels/1939482

















No hay comentarios: