MEDIDOR DE CO2

 MEDIDOR DE CO2

 



En este proyecto se va a desarrollar un medidor de co2 utilizando para ello el sensor cs811 y un ESP 32. Se va a utilizar Node-Red para hacer un tratamiento de los datos obtenidos, mostrándolos en una gráfica y almacenándolos en una base de datos. Además, si se supera un valor de ppm (partículas por millón) de CO2 establecido como límite y nos encontramos en horario laboral, se mandará una alerta por correo electrónico al responsable. En la interfaz web del proyecto, se mostrará en directo al valor de las partículas por millón de CO2 que hay en el ambiente, mostrando una alerta visual en caso de que el valor sea alto. También se muestran los ciclos de renovación del aire por hora (ACH). A través de este útil, se asegurará la buena ventilación del aula.

Los datos obtenidos, los enviaremos a una raspberry pi 4, la cual puede estar ubicada en cualquier lugar siempre y cuando tenga conexión a internet. En esta raspberry, tendremos alojados el MQTT y el Nodered. En la entrada ' NODERED-MQTT' de este mismo blog, se explican los pasos para configurar el MQTT. 


INTRODUCCION

La pandemia ocasionada por la Covid-19 ha hecho que los medidores de dióxido de carbono (CO2) estén de moda. Algunas comunidades autónomas apuestan por instalar estos dispositivos en centros educativos con el objetivo de evitar la expansión del virus y los contagios.


Esta tecnología es un aliado perfecto para poner la alerta sobre la mala ventilación de entornos y es que si una persona con coronavirus permanece hablando durante horas en un sitio cerrado, el ambiente se irá llenando de aerosoles infecciosos, una de las principales vías de contagio. Un riesgo que se cuantifica gracias a los medidores de CO2.


En la guía para ventilación de aulas del CSIC, en las diapositivas 16 a 18, se exponen soluciones mediante ventilación natural y en la 25 se añade la posibilidad de purificación. Una vez implementadas las soluciones es necesario verificarlas usando sensores de CO2 como medida indirecta de ventilación.


En exteriores las medidas de CO2 en lugares de baja contaminación están en torno a 420 ppm.




ACH

El ACH, como se ha dicho anteriormente, son las veces (o ciclos) que se renueva el aire de una habitación por hora. Existen mas métodos de comprobar la calidad de la ventilación de un aula, pero esta es la mas extendida y la mas utilizada. Cuanto mayor sea este ACH, mejor será la ventilación del aula. La guía de la universidad de Harvard recomienda 5-6 renovaciones del aire por hora para aulas de 100m2 con 25 estudiantes de 5-8 años.

Existen numerosas maneras de conocer el ACH de un aula, en este caso se va a seguir el siguiente procedimiento:

En este caso, el ACH se ha calculado teniendo en cuenta las características del aula:

-        Volumen en m3

-        N.º de alumnos

-        Ppm instantáneos dentro del aula


También se tienen en cuenta distintos factores como las ppm del aire del exterior o las renovaciones de aire que marcamos como objetivo.

En nuestro caso, el nivel de ACH va a ser mayor debido a que disponemos de un purificador de aire.

Para calcular el nivel de ACH se ha utilizado la siguiente fórmula:





Generación de c02: Es el resultado de multiplicar el numero de ocupantes del aula por los litros por minuto de co2 que genera una persona.




 

Tasa de exhalación


 



Caudal de aire exterior objetivo: Es el volumen del aula multiplicado por las veces que queremos que se renueve el aire en una hora y por el número de minutos que tiene una hora (60).



CexteriorCO2: Es el valor de CO2 presente en el aire del exterior

 


VALORES DE PPM PARA CADA NIVEL DE ACH RECOGIDO








Realizando esta operación, obtenemos los valores de ppm por cada nivel de ACH (de 0 a 12 en este caso), estos valores de ppm los compararemos con la lectura instantánea del sensor y así obtendremos el número de veces que se renueva el aire del aula en una hora.

Aunque se esta mostrando continuamente el valor de ACH en la pantalla, deberemos tenerlo en cuenta únicamente cuando se haya estabilizado, por ejemplo, si entramos en el aula por la mañana, deberemos comprobar el nivel de ACH habiendo pasado al menos una hora desde el inicio de la clase para que los niveles de ppm se hayan estabilizado y de este modo obtener una lectura fiel a la realidad.


PROGRAMA ESP 32

Para publicar el valor de las partículas de co2 por millón en el topic del MQTT, se ha utilizado el mismo programa que en la entrada 'Nodered - MQTT', es por ello que en esta entrada, se va a exponer solamente la parte en la que publicamos el valor.






Las líneas de código de la imagen superior, son las correspondientes a la publicación en el topic 'ppm' del valor de partes por millón de co2.

En las primeras líneas, vamos a utilizar distintas funciones de la librería Adafruit_CCS811.h, para obtener el valor instantáneo de co2. Almacenaremos este valor en una variable tipo int. Después, se preparan los datos para ser publicados , y es que para publicar el valor de ppm, este tiene que set tipo char, es por ello que utilizamos la instrucción dtostrf para convertir el tipo int en tipo char.

A continuación, con la función publish, publicamos en el MQTT, indicando el nombre del topic, y el contenido que vamos a publicar. Después de esto hacemos un Delay de 5 segundos entre lectura y lectura.


NODE RED


Se ha utilizado Node Red para establecer comunicación con al base de datos y para la manipulación de los datos en sí. Mediante distintos nodos, escribimos o leemos información de la base de datos (fecha, hora, valor de ppm, ACH). Estos valores, se muestran en pantalla a través de una gráfica y una tabla. Podremos también, visualizar los valores leídos el día que seleccionemos mediante un calendario. Se muestran también en pantalla, los valores obtenidos instantáneamente, tanto de co2 como el ach.




Dashboard




En la imagen superior, se muestra el Dashboard de Node Red, que es la pantalla de visualización donde se muestran los resultados, como se puede ver, están presentes los indicadores instantáneos, la gráfica, la tabla y un selector de fecha.




Flujo




El flujo de la imagen superior, es el correspondiente a la lectura de los valores instantáneos (VALORES PPM CO2 Y ACH). Como se puede ver, se establece una conexión con el MQTT y a continuación, se muestran los valores obtenidos en dos indicadores.

En la misma imagen, debajo de los títulos 'INSERTAR EN LA BASE DE DATOS' y 'OBTENEMOS DATOS DE LA BASE', podemos ver la parte del flujo correspondiente a la comunicación con la base de datos. Esta comunicación se ejecuta mediante comandos SQL. En esta misma parte del flujo, una vez extraídos los datos, estos se muestran en los distintos elementos del Dashboard (tabla, gráfica, etc.)




Flujo




En el flujo de la imagen superior, bajo el título 'SELECCION DE FECHA', se encuentra la parte del flujo que nos permite seleccionar una fecha del calendario. Bajo el título 'ENVIO DE CORREO DE ALERTA', se encuentra la parte del flujo mediante la cual enviamos un correo electrónico de alerta en caso de superar un valor determinado de PPM en un horario establecido.

A continuación se muestra algún ejemplo del código utilizado para el desarrollo de esta práctica. Se han utilizado distintos lenguajes de programación como java script, SQL o instrucciones en formato json.






En la imagen superior, podemos ver una instrucción muy utilizada en este flujo, mediante esta instrucción, declaramos una variable para después, mediante la instrucción flow.get, poder llamarla en cualquier otra parte del flujo.









En la imagen superior, podemos ver un archivo e  formato json, mediante el cual vamos a controlar lo que se muestra en la gráfica.








En la imagen superior, se puede ver un fragmento de código correspondiente a la comunicación con la base e datos, en este caso se trata de una inserción de datos en la base.


BASE DE DATOS


Para este ejercicio, se ha utilizado el software de gestión de base de datos mariaDB, el cual es un derivado de MySQL, al igual que este y como hemos visto anteriormente, se controla mediante instrucciones SQL.







MONTAJE


A continuación, se muestra el montaje de esta práctica, que en este caso se ha realizado en una placa de circuito impreso (PCB)











Como se puede ver en las imágenes superiores, es una pcb sencilla, que incorpora el sensor, unos header hembra para pinchar el ESP 32 y una regleta de 2 contactos para la alimentación. A continuación se muestra el diseño de la PCB:








En la imagen superior, se muestra la hoja del esquemático de la PCB, en ella se pueden ver los distintos componentes utilizados así como las conexiones entre ellos.








En la imagen superior, se muestra el diseño de la PCB, podemos ver las pistas, los pads, los drills. para las pistas de POWER (+5v y GND) se ha utilizado un ancho de pista de 40, mientras que para las pistas de señal, se ha utilizado un ancho de pista de 20.  Esta PCB no tiene pistas por la cara top y tampoco tiene ninguna vía.


ENLACES DE DESCARGA


Comentarios

Entradas populares de este blog

ESCRITURA/LECTURA PT100 LABVIEW

ADQUISICION DE DATOS LABVIEW (DAQ)