Medición de CO2 con Arduino

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:

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:

Fuente: Aliexpress

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.

Conexión del sensor CCS811 a la placa Arduino UNO

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.

Imagen del «Serial Plotter» mostrando las lecturas del sensor.

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

Salida monitor serie del programa anterior.

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

Montaje circuito. Fuente: JGil

Autor: JGil-admin

Profesor de tecnología IES Pedro Mercedes (Cuenca)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *