Con todo esto de la pandemia, se ha visto que hay ventilar (sí, nos ha hecho falta una pandemia), con una buena ventilación la probabilidad de contagiar el virus (y cualquier enfermedad que se distribuya por aerosoles) baja de manera drástica. Un indicador de cómo de buena es la ventilación en un recinto cerrado, es el nivel de CO2 en el ambiente, y en esta entrada vamos a ver cómo usar un MH-Z19B para avisar de cuando ventilar!
Mucho cuidado! Parece ser que ya hay avisos de copias fraudulentas de MH-Z19B en el mercado, sobre todo aliexpress. De momento (18-ene-2021), el vendedor más fiable es este (link)
Vídeo de cómo fabriqué el mío
Carro de la compra
Aquí te dejo todos los enlaces de lo que necesitas para poder tu propio sensor de CO2:
- Sensor MH-Z19B: Elegir el modelo de 5000ppm y fijarse que sea el modelo “B” (Se puede hacer con el C, pero no aseguro que el código sea el mismo)
- Arduino Nano o Arduino Pro Mini: Da igual cual elijas, solo recuerda que si eliges el Pro mini, vas a necesitar uno de estos para programarlo.
- LEDs y Resistencias variadas
- (Opcional) Pantalla OLED, para usar mi código necesitas la pantalla de 128×32
- (Opcional) Tira LED: a poder ser RGB para poder tener diferentes colores.
- (Opcional) Transistores BJT o MOSFET: Estos dependerán de cada caso particular y del número de LEDs que queráis iluminar. Si quieres saber más:
¿Porqué es importante medir el CO2?
Con la pandemia, una de las mayores preocupaciones son los contagios en aulas y centros cerrados, por ello mucha gente estuvo estudiando cómo impedir que el virus moviera en las clases de los más peques. Se vio, que en recintos cerrados mal ventilados, la exposición al virus era mayor, y por tanto incrementaba la posibilidad de contagio.
Además de eso, niveles de CO2 mayores, provocan que nuestra capacidad de atención disminuya, nos sintamos incómodos, y en niveles extremos lleguemos a intoxicarnos. Por ello, se ve que es aún más importante en aulas, donde la capacidad de atención es muy importante. A continuación os dejo una tabla donde se ven las concentraciones de CO2 y su efecto en la salud de las personas.

¿Cómo funciona el MH-Z19B y qué otros sensores hay?
Principalmente, para el mundo DIY, hay dos tipos de sensores de CO2, los sensores químicos y los NDIR. De los primero tenemos generalmente el CCS811, estos sensores generan una diferencia de voltaje al reaccionar el CO2 del aire con un producto del interior del sensor. La principal ventaja de estos sensores es que generalmente son más baratos pero por contra, los resultados obtenidos de las mediciones son peores.
Por otro lado tenemos los sensores NDIR, en los cuales la concentración de CO2 se mide mirando la absorción de luz infrarroja cuando pasa a través del aire. Estos sensores, son más precisos pero también bastante más caros. En este grupo tenemos 2 sensores principalmente el MH-Z19B y el MH-Z14A (dentro de nuestro presupuesto).

El MH-Z19B tiene en su interior un emisor LED de infrarrojos que emite la luz que va a ser medida. Además, tiene un sensor para medir la cantidad de luz recibida y poder así calcular la concentración de CO2.
Primeras pruebas
Para las primeras pruebas conectamos el MH-Z19B a una Raspberry Pi 3, y guardamos los datos con InfluxDB + Grafana. Aquí os dejo la conexión del sensor a la rPi3.

Con Grafana podemos ver de manera muy sencilla, como evoluciona a lo largo del tiempo los valores de CO2 en mi taller. En rojo, he marcado las franjas que corresponden a las noches, donde debería alcanzar el mínimo. El valor de CO2 base, es decir la concentración de CO2 media en el aire limpio es de 400ppm. Los sensores MH-Z19B tienen un sistema para autocalibrarse, siempre y cuando se ventile la habitación donde están regularmente.

Viendo que el sensor trabaja de manera correcta, podemos pasar ya a montar nuestro sensor basado en Arduino.
La electrónica
En mi caso concreto estoy usando una tira LED RGB de 12V así que además de toda la electrónica normal, para poder alimentarlo desde un USB, necesito un STEP-UP para elevar el voltaje de 5V a 12V. Este es el diagrama general: Los 5V alimentan el Arduino, el Step-up, el MH-Z19B y la pantalla OLED. Entre el Arduino y la tira RGB, tenemos un pequeño circuito para que el Arduino pueda mandar la señal PWM a cada color del RGB.

Por separado, y de manera más correcta aquí tenéis los esquemas tanto para el Arduino, como para el circuito de transistores:
El código fuente y los ficheros 3D
El código fuente y los ficheros 3D, además del esquemático, lo tenéis en mi Github así que no dudéis en pasaros por ahí. No entro mucho en detalle porque no tiene mayor misterio, lo único que hay que saber es que en mi caso:
- Los colores RGB tienen un pequeño “latido” suben y bajan un poco de intensidad
- El ABC (Auto-calibración) está encendido todo el rato, por lo que sería necesario ventilar el sitio donde esté el sensor.
- La pantalla muestra una cara alegre o triste según el nivel de CO2