Este es otro sensor que está dentro del kit del #DesafíoBajoZero y que vamos a usar en nuestro RetoTech, por eso voy a hacer un resumen para tener la información a mano.
Es un sensor que ahora está de moda por lo que conlleva medir la concentración de gas CO2 en el ambiente. Por cierto hay otros sensores, más baratos y más caros pero este es el que
Este sensor, de AMS, es un puede detectar un amplio rango de VOCs (Volatile Organic Compounds). Por eso nos puede calcular los TVOCs (VOCs totales) y el equivalente de CO2 (eCO2) mediante conexión I2C en un rango que va desde el 400 al 8100 de partículas por millón, ppm, aproximadamente. Datasheet aquí
La empresa AMS recomienda que se ponga 48 h en funcionamiento para estabilizar las medidas.
Conexiones:
Vin: Puede usarse con 3,3V y 5 V según microprocesador.
GND: Tierra o GND del microprocesador.
SCL: El reloj y lo conectaremos al pin SCL del I2C (En Arduino MEGA es el D21 y en UNO el A5).
SDA: Se conectará al SDA del I2C del micro y es pin de datos. (En Arduino MEGA es el D20 y en UNO el A4).
INT: Es el pin de interruptor. No se conectará a ningún pin en nuestro caso.
WAKE: Lo conectaremos al GND y es para activar el sensor.
RESET: Es para resetear el sensor. No lo conectaremos nosotros.
Este sensor usa la dirección 0x5A.
Necesitamos la librería Adafruit CCS811 que se encuentra dentro de las opciones de descarga de librería de la propia IDE de arduino.
También se puede encontrar este sensor en marcas blancas
Os dejo unas fotos del proyecto que realicé en el otoño de 2020
Aquí os dejo el programa para el uso del CCS811 y una pantalla OLED de 0,96 pulgadas
Por cierto que los valores tomados como BUENO, REGULAR y PELIGROSO son orientativos. Sugiero que se modifiquen según el proyecto.
/*************************************************** Programa de ejemplo para monitorizar los niveles de Dióxido de Carbono (equivalente) eCO2 y la Tasa de Compuestos Orgánicos Volátiles TVOC y verlos en pantalla OLED 1306 o monitor plotter ***************************************************/ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 12 Adafruit_SSD1306 oled(128,64, &Wire , OLED_RESET); String estado; int co2; #include "Adafruit_CCS811.h" // Incluir la librería del sensor Adafruit_CCS811 ccs; // Crear un objeto sensor void setup() { Serial.begin(115200); 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 Wire.begin(); oled.begin(SSD1306_SWITCHCAPVCC, 0X3C); delay(1000); oled.clearDisplay(); delay(1000); } 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 co2=ccs.geteCO2(); 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(6000); // Hacer la medida cada 2 segundos(2000ms) if (co2 >= 3000) { estado = "peligroso"; } if (co2 <= 1000) { estado = "bueno"; } if (co2 > 1000 && co2 < 3000 ) { estado = "regular"; } oled.clearDisplay(); oled.setTextColor(WHITE); oled.setCursor(0,0); oled.setTextSize(2); oled.print("Nivel CO2"); oled.setTextColor(WHITE); oled.setCursor(0,25); oled.setTextSize(2); oled.print(co2); oled.display(); oled.setTextColor(WHITE); oled.setCursor(90,25); oled.setTextSize(2); oled.print("ppm"); oled.display(); oled.setTextColor(WHITE); oled.setCursor(35,50); oled.setTextSize(2); oled.print(estado); oled.display(); delay(2000); }