Introducción
Debido a la situación de la COVID19 que atravesamos, uno de los retos que nos planteamos es la correcta ventilación de nuestras aulas para evitar la transmisión del virus por medio de aerosoles. Una forma indirecta de detectar si un aula necesita ventilación es medir los niveles de CO2 producidos por la respiración de las personas. Existen estudios que indican unos valores de referencia de CO2 por encima de los cuales el aula debería ser ventilada.
Iniciamos en las asignaturas de Tecnología un proyecto técnico de construcción de sensores de CO2 que nos ayuden a visualizar el problema planteado.
Estos desarrollos se enmarcan dentro de un proyecto técnico escolar educativo y no profesional, por lo que no puede garantizarse la exactitud de las medidas, por lo que no existe ninguna validación o garantía de correcto funcionamiento. Todos los resultados son meramente informativos.
La idea del proyecto es comenzar probando algún sensor de CO2 con placas Arduino. En una segunda fase, utilizaremos placas más económicas y reducidas como la ESP8266 (tipo NodeMCU) con wifi con el fin de adentrarnos en el Internet de las Cosas y enviar datos en tiempo real de mediciones de varias aulas.
Referencias utilizadas
Para este proyecto, vamos a inspirarnos en las siguientes referencias:
- https://learn.adafruit.com/adafruit-ccs811-air-quality-sensor/arduino-wiring-test Instrucciones de la librería de Adafruit con el sensor CCS811. En la programación hemos utilizado la librería de Adafruit.
- https://learn.sparkfun.com/tutorials/ccs811-air-quality-breakout-hookup-guide
- Proyecto CODOS de Miguel Ángel Casanova: https://github.com/miguelangelcasanova/codos
- Sensor utilizado: CJMCU-811 copia china del sensor CCS811 de Adafruit:
Medición de CO2: Placa Arduino UNO
En este montaje, utilizamos como microcontrolador una placa Arduino UNO y un sensor de CO2 del tipo CCS811 que monitoriza la calidad del aire:

Las características del sensor podemos verlas en el siguiente documento, extraido de la propia web de Aliexpress:
Esquema de montaje
La conexión es sencilla. Se utiliza el protocolo de conexión I2C. El sensor de Adafruit utiliza en el protocolo I2C la dirección 0x5A. Lo desconozco en el caso del sensor utilizado CCS811 procedente de Aliexpress.

Los pines de conexión son:
Conexiones:
Vcc – pin de 3.3V (o 5V) del Arduino. Las pruebas se han hecho con 3.3 V.
GND – GND del Arduino
SDA – SDA o A4 en Arduino UNO
SCL – SCL o A5 en Arduino UNO
Wake o AWake – GND del Arduino, aunque también podría controlarse con pin de salida digital (OFF)
Pruebas de funcionamiento
Hemos utilizado una velocidad de 115200 baudios. Tener esto en cuenta cuando se muestre el monitor serie.
La visualización de datos también se puede realizar utilizando Serial Plotter, como se ve en la figura.
Los picos corresponden a momentos en los que hemos soplado sobre el sensor, lo que parece indicar que el sensor funciona. Habría que hacer una calibración para ver si los valores indicados corresponderían con los valores reales.

También pueden visualizarse los resultados de las medidas utilizando el «Monitor Serie»:

Código del programa de pruebas
/***************************************************************************************************************************************** Programa de ejemplo para monitorizar los niveles de Dióxido de Carbono (equivalente) eCO2 y la Tasa de Compuestos Orgánicos Volátiles TVOC Fuente: https://github.com/miguelangelcasanova/codos/blob/master/dev/arduino/plotter/plotter.ino Referencia: https://learn.adafruit.com/adafruit-ccs811-air-quality-sensor/arduino-wiring-test *****************************************************************************************************************************************/ #include "Adafruit_CCS811.h" // Incluir la librería del sensor Adafruit_CCS811 ccs; // Crear un objeto sensor void setup() { Serial.begin(115200); // Inicializar el puerto serie // Serial.println("Programa para graficar los datos del sensor CCS811 mediante el Serial Plotter del IDE de Arduino"); Serial.println("CO2, TVOC"); if(!ccs.begin()){ // Intentar inicializar el sensor Serial.println("¡No se ha podido inicializar el sensor! Por favor, comprueba el cableado."); while(1); } while(!ccs.available()); // Esperar a que el sensor esté preparado } void loop() { if(ccs.available()){ // Si el sensor está disponible if(!ccs.readData()){ // Cuando haya datos Serial.print(ccs.geteCO2()); // Obtener y enviar el nivel del CO2 por el puerto serie Serial.print(", "); // Separar los valores de CO2 y de TVOC Serial.println(ccs.getTVOC()); // Obtener y enviar la tasa de TVOC, enviarla por el puerto serie y acabar la dupla de datos } else{ Serial.println("ERROR!"); // Cuando ocurra un error while(1); // El dispositivo deja de funcionar } } delay(2000); // Hacer la medida cada 2 segundos(2000ms) }
Foto del montaje
