Medición de CO2 con nodeMCU y ArduinoBlock

Introducción

En una entrada anterior, hicimos pruebas de medición de CO2 utilizando una placa Arduino y visualizando los datos en el ordenador mediante «Serial Plotter».

En esta ocasión, vamos a transmitir las mediciones a una plataforma en Internet como es https://io.adafruit.com/ y como sistema de programación probaremos el sistema por bloques http://www.arduinoblocks.com/

Recordamos que el proyecto tiene por objetivo monitorizar las condiciones ambientales de un aula escolar mediante al menos tres magnitudes: Temperatura, Humedad relativa y concentración de CO2. Los datos captados por los sensores son procesados por un microcontrolador nodeMCU , enviados a un broker del tipo MQTT de la empresa Adafruit.io y visualizados en forma de indicadores y gráficos históricos.
Por otra parte, aunque no sería necesario para este proyecto, sería posible que un segundo nodeMCU suscrito al broker encienda el led de su placa a modo de alarma cuando los niveles de CO2 superan un umbral determinado.

Materiales necesarios

Placa board de montaje de prototipos.
Sensor DHT11 de humedad y temperatura.
Sensor de CO2 del tipo CCS811 denominado CJMCU-811, de Aliexpress.

Resistor de 4,7 kΩ
Cables dupont para conexiones
nodeMCU esp8266
Cable USB para alimentación y carga del programa.

Funcionamiento

El proyecto se ha llevado a cabo en dos fases de forma incremental. En una primara fase, simplemente se ha utilizado un nodeMCU para capturar datos de temperatura, humedad relativa y eCO2 . Estos datos se han publicado utilizando el protocolo MQTT en una plataforma de IoT en la nube como Adafruit.io y visualizados a través gráficos incluidos en tableros (dashboards) de Adafruit.io.
En una segunda fase, el proyecto ha evolucionado añadiendo un sistema de alarma que avise cuando los niveles de eCO2 superan el umbral de 700 ppm. Para ello, se ha incluido en el dashboard de Adafruit.io un indicador de led que muestra un color marrón cuando el nivel es inferior a 700 ppm y de color azul cuando dicho nivel es superior. Una segunda unidad de nodeMCU se suscribe al broker de Adafruit.io con el topic de «estadodelled» de forma que enciende el led incluido en su placa (de color azulado) cuando la alarma se ha activado y se mantiene apagado cuando la alarma está inactiva.
En la figura 1 puede verse el tablero diseñado para la fase 1 del proyecto. Únicamente se muestran los valores medidos de temperatura, humedad relativa y concentración de eCO2 , así como sus gráficos históricos.

Figura 1: Tablero o dashboard con indicadores e históricos de las medidas (fase 1)

La figura 2 muestra el aspecto del programa confeccionado en ArduinoBlock para el envío de datos al broker. Puede apreciarse la ventana de ArduinoBlocks Conector mostrando que el sistema está preparado para cargar el programa en el microcontrolador.

Figura 2: Programa en ArduinoBlock en la fase 1

Programa Arduino Blocks

En la fase 1, recordamos que únicamente hemos utilizado una unidad de nodeMCU para capturar los datos ambientales. El programa utilizado puede apreciarse en la figura 3.

Figura 3: Programa para nodeMCU (Unidad 1) en la fase 1

En una segunda fase, se han utilizado dos unidades de nodeMCU. La unidad 1 recoge los datos ambientales y, mediante publicación, envía los datos al broker en Adafruit.io. La unidad 2, mediante suscripción al feed del estadodelled, activa o desactiva el encendido del led de la placa según el estado que indique el broker. En el dashboard se ha pintado el led de color azul cuando está encendido porque es el mismo color que el led incrustado en la placa del nodeMCU.
En la figura 4 puede verse el programa que publica los datos ambientales en el broker. Con respecto a la fase 1, se ha añadido el código correspondiente a la publicación del estado del led (encendido en azul) si los niveles de CO2 sobrepasan los 700 ppm. En caso contrario, el led se mantiene apagado (de color marrón).


Figura 4: Programa para nodeMCU (Unidad 1) en la fase 2

Las figuras 5 y 6 muestran el aspecto de dashboard con los niveles de CO2 por encima de 700 ppm (led azul) y por debajo de 700 ppm (led marrón) respectivamente.

La segunda unidad nodeMCU se encarga de encender (o apagar) el led «onboard» incrustado en su propia placa según indique el estado del led en el broker, mediante suscripción.

El programa de arduinoblock cargado en el cliente (unidad 2 nodeMCU) se muestra a continución en la figura 9:


Figura 9: Programa en el cliente (Unidad 2 de nodeMCU)

Montaje eléctrico (Unidad 1 nodeMCU)

El montaje del nodeMCU encargado de tomar las medidas ambientales es el siguiente:

Montaje eléctrico de la unidad encargada de gestionar los sensores de humedad, temperatura y CO2

Esquemático (Unidad 1 nodeMCU)

Esquemático en el que se aprecian los sensores utilizados.

Fotos del proyecto

Montaje práctico. La unidad 1 recoge los datos ambientales. La segunda unidad enciende la alarma (led)