Medición del CO2 con subida de datos a la nube. Motivación y primeros pasos.
Cuando comenzó a divulgarse información que alertaba sobre que uno de los principales modos de contagio por SARS-CoV-2 era inhalando los ahora ya famosos aerosoles, se puso en evidencia la importancia de la medición de CO2 en espacios cerrados de forma que diera una idea de la necesidad de ventilación o renovación de aire de los mismos.
Obviamente, cuanto más se ventile, mejor, de esto no cabe duda, pero estamos en invierno, y permanecer en una oficina o un aula con las ventanas abiertas permanentemente puede que no sea ni lo más agradable ni tampoco lo más conveniente. Midiendo la concentración de CO2 podemos saber cuán viciado está el aire que respiramos y mantener un equilibrio en la ventilación, maximizando el confort térmico dentro de los parámetros de salubridad del aire, que siguen siendo prioritarios. En román paladino: Ventilar lo adecuado, ni poco ni en exceso.
Con estas premisas pensé en que se podía hacer algún medidor low-cost con Arduino o similares, y me puse a ello. No es una idea original, pude ver que en la red hay numerosos ejemplos e información muy útil.
MQ-135: Un dolor
Comencé las pruebas con un Arduino Uno y un sensor MQ-135. Ese sensor es tremendamente barato y no mide sólo CO2 sino que es sensible a un buen número de sustancias, de hecho, cuando lo quería volver loco le acercaba un trapo con isopropílico a las narices y los valores se disparaban. En un principio, el que fuera sensible a varias sustancias (monóxido y dióxido de carbono, alcoholes, dióxido de nitrógeno, amoniaco, benceno…) no debería de ser un problema en sí mismo: si el sensor arrojaba un valor alto era que lo que estábamos respirando no era muy sano. El problema era que no hay forma de saber qué está excitando el sensor. El sensor arroja una única señal, trasladar eso a un valor de ppm para el CO2 se realiza mediante un algoritmo, pero si excitamos el sensor con otra sustancia nos dará una lectura de CO2 tan elevada como irreal. Quizás para un entorno libre de pandemias, medianamente controlado y «normal» pueda tener algo de utilidad para saber la «calidad del aire», pero ahora que estamos usando hidrogeles, viricidas con base de alcohol, etc. sincera y humildemente, creo que estos sensores no sirven en absoluto para medir la concentración de CO2

Y no acaban ahí los problemas. Ya para empezar hay que “quemarlo”, esto es, tenerlo unas 24 horas a 5 voltios. Luego, tras ese tiempo, hay que “calibrarlo”. La única forma de hacerlo en casa sin más aparataje es ponerlo en la ventana y, “presuponiendo” que el valor que ahí tiene que arrojar es de 400, realizar unos ajustes para “hacer que marque 400” y listo.
Pero no.
Lo calibré unas cuantas veces y en cada una de ellas el ajuste era distinto. Además, cada vez que se apagaba y se volvía a encender había que esperar un buen rato para tener lecturas coherentes. Había ratos en que las mediciones “parecían” correctas, y otros en las que eran de lo más erráticas.
Conclusión: un dolor.
MH-Z19B: Fácil (o casi)
Cuando ya empezaba a hartarme del MQ-135 encargué allende los mares un MH-Z19B, y en cuanto llegó metí a los MQ en un cajón. Como de la noche al día.

Con un par de minutillos que le demos al MH-Z19B lo tenemos mandando valores “correctos”, pero ojo, contextualizando “correctos” en el ámbito en el que lo queremos usar: medir la concentración de CO2 en un espacio cerrado como una oficina, un despacho, un aula, nuestro domicilio, etc. para saber cuándo tenemos que ventilar.
El MH-Z19B puede encontrarse en torno a unos 15 euros actualmente. Porcentualmente es mucho más caro que el MQ-135, pero comparado con otro tipo de sensores este es tremendamente barato, aunque la precisión no es la misma. En el ámbito industrial una precisión de un +-5% es una auténtica aberración, pero para nuestros propósitos cumple perfectamente.
El «casi» viene por la autocalibración de estos sensores, que facilita mucho su uso pero que es un tanto particular. Hablaremos de ello en otras entradas.
Una placa para controlarlos a todos

Las primeras pruebas fueron con una placa de Arduino, pero ya desde antes de empezar con el mecano la idea era conectarlo a una red wifi y mandar los datos a donde fuera. Buscando información encontré que había unas placas basadas en el ESP8266, muy baratas, pequeñas, con wifi y compatibles con el IDE de Arduino, así que empecé las pruebas con ellas porque simplificaban mucho las cosas y funcionaron de maravilla.

Pero al mismo tiempo descubrí otras, las ESP32, que son como las anteriores pero bien vitaminadas. Una excelente comparativa está aquí:
https://www.luisllamas.es/comparativa-esp8266-esp32/
Al final opté por estas últimas porque tienen unas cuantas ventajas y me permitían hacer otra serie de pruebas de las que ya hablaré… si es que consigo algo.

Los datos en la nube
Para enviar los datos a algún sitio y representarlos en una web hay varias opciones: montar unas tablas y enviar los datos por POST, usar MQTT… O lo más rápido: ThingSpeak
ThingSpeak tiene sus limitaciones, pero comparado con la rapidez y comodidad a la hora de poner los datos en una web frente a los anteriores sistemas a muchos les compensará con creces. En mi caso me sirve como punto de partida para tener los datos disponibles y mientras tanto me voy enterando de qué es eso del MQTT y montando un servidor para ello. Esto ya lo dejamos para posteriores entradas.
ThingSpeak tiene una opción gratuita que para proyectos de pequeña envergadura como este cumple perfectamente, así que no nos va a costar ni un duro. Y lo mejor, en unos minutos tenemos un canal, o más, funcionando y mostrando datos. Más no se puede pedir.
Niveles y alertas
Con los datos en la nube ya podemos realizar un seguimiento y tomar nuestras notas en cuanto a situación y medidas. No obstante la prioridad es avisarnos de cuándo tenemos que ventilar. El montaje lleva una pantalla en la que se nos muestran los datos tomados por los sensores cada cinco segundos y además un par de leds que, según el nivel alcanzado, se encienden uno u otro para avisarnos de que debemos abrir las ventanas.
En el apartado de niveles y alertas se referencian varias normativas y documentos que nos indican los valores de salubridad del aire y de confort en cuanto a temperatura y humedad. Sabiendo estos parámetros y haciendo una lectura de los valores de CO2 podremos establecer las alarmas para actuar en consecuencia y regular la necesaria ventilación.
Pero debo insistir y hacer un inciso de lo más serio: Lo principal es la calidad del aire. Si cerramos las ventanas para estar calentitos, alguien puede resultar muerto, literalmente, quizás no nosotros, pero sí un padre, una madre o cualquiera de nuestros mayores.
https://momo.isciii.es/public/momo/dashboard/momo_dashboard.html
Con este tema del COVID, tontadicas las justas.
Nota: La imagen de cabecera se ha realizado utilizando como base una imagen de Полина Андреева (mystraysoul) en Pixabay