Skip to Content

Arduino and CCS811 Total VOC Sensor

Arduino and CCS811 Total VOC Sensor

El sensor CCS811 VO es un sensor de gas de consumo ultrabajo que integra un sensor de gas de óxido metálico que detecta una amplia gama de compuestos orgánicos volátiles (COV).

En este artículo, aprenderemos a utilizar un sensor de COV CCS811 con Arduino.

Los sensores CCS811 VO se utilizan en la monitorización de la calidad del aire interior. El sensor se comunica con una MCU mediante el protocolo I2C. 

El CCS811 incorpora un microcontrolador, un ADC y una interfaz I2C.

Procesa los datos sin procesar y proporciona una lectura de COVT (compuestos orgánicos volátiles totales) o CO2 equivalente. 

En este artículo, usted encontrará los fundamentos del sensor CCS811, seguido por el diagrama de conexión de cableado necesario para construir un proyecto de trabajo utilizando Arduino UNO.

Encontrará ejemplos de código Arduino y una recopilación de preguntas frecuentes sobre los sensores de COV.

Comencemos.

Componentes necesarios para construir un proyecto de sensor VCO y Arduino

Componentes de hardware

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

Conceptos básicos del sensor CCS811 TVOC

En esta sección, conoceremos las características, especificaciones y opciones de conexión disponibles en el sensor de compuestos orgánicos volátiles totales CCS811 de consumo ultrabajo. 

El CCS811 puede proporcionar niveles de COV sin intervención del host, lo que simplifica el diseño de hardware y software.

Los modos optimizados de bajo consumo ayudan a prolongar la duración de la batería en aplicaciones portátiles. 

Aplicaciones del sensor de COV CCS811 Arduino

Las aplicaciones del sensor de COV, CCS811, son las siguientes

  • Control de la calidad del aire interior con teléfonos inteligentes
  • Detección de COV en la automatización de viviendas y edificios
  • Prendas y accesorios

El rango de eCO2 y TVOC del sensor se indica en la siguiente tabla

ParámetroGama de salidaObservaciones
eCO2400 PPM a 8192 PPMLos valores fuera de este rango se recortan
TVOC0 a 1187 PPB

The Sensor module has one ADDR pin option which you can either connect to the ground or to the VCC. The ADDR pin will decide the I2C address as per the table below.

ADDR Estado del pinDirección I2C (hex)Dirección I2C (dec)
Bajo0x5A90
Alta0x5B91

Diagrama de bloques funcional del sensor de COV

A continuación se muestra el diagrama de bloques funcional que representa los bloques internos del sensor de COV.

Diagrama de bloques funcional del sensor de COV

Descripción de la clavija

El sensor de COV CCS811 es un CI de 10 patillas con una almohadilla expuesta. La almohadilla expuesta debe conectarse a tierra para obtener un mejor rendimiento térmico. 

Pin No.Nombre de la clavijaDescripción
1ADDR - Bit de selección de dirección única para permitir la selección de una dirección alternativa. Esto le ayuda a conectar dos sensores a una línea I2C.

- Cuando ADDR está bajo la dirección I²C de 7 bits es decimal 90 / hex 0x5A

- Cuando ADDR está alto la dirección I²C de 7 bits es decimal 91 / hex 0x5B.
2nRESETnRESET es una entrada activa baja y se tira hacia arriba a VDD por defecto. nRESET es opcional, pero puede ser necesario un pull-up externo de 4,7KΩ y/o desacoplamiento del pin nRESET para evitar reinicios erróneos inducidos por ruido.
3nINTnINT es una salida opcional activa baja. El CCS811 la pone a nivel bajo para indicar el final de la medición o que se ha activado un valor umbral establecido.
4PWMSalida PWM del controlador del calefactor. Los pines 4 y 5 deben estar conectados entre sí.
5SentidoSentido de corriente del calefactor. Los pines 4 y 5 deben estar conectados entre sí.
6VDDTensión de alimentación
7nWAKEnWAKE es una entrada activa baja y debe ser afirmada por el host antes de una transacción I²C y mantenerse baja durante todo el proceso.
8AUXPin AUX opcional que puede utilizarse para la detección de la temperatura ambiente con una resistencia NTC externa. Si no se utiliza, dejar sin conectar.
9SDAEl pin SDA se utiliza para datos I²C. Debe conectarse a VDD con una resistencia.
10SCLEl pin SCL se utiliza para el reloj I²C. Debe conectarse a VDD con una resistencia.
EPAlmohadilla expuestaConectar a tierra

El sensor puede funcionar con una tensión en el rango de 1,8 V a 3,6 V. El sensor consume unos 30 mA durante el funcionamiento y 19 uA en modo de reposo.

The board has an onboard 5 V to 3.3 V converter. Hence you can use the board with Arduino UNO without any issues. 

En la siguiente imagen encontrarás la conexión básica necesaria para completar el circuito.

El host puede poner el módulo en reposo utilizando el pin nWAKE.

módulo en reposo mediante el pin nWAKE

Modos de funcionamiento del sensor CCS811

El sensor CCS811 admite cinco modos de funcionamiento diferentes. Los distintos modos posibles le permiten elegir la mejor configuración para su aplicación específica. 

  • Modo 0 - Modo de funcionamiento en reposo, baja corriente.
  • Modo 1 - Modo de potencia constante, mide el IAQ cada segundo.
  • Modo 2 - Modo de calentamiento por impulsos y las mediciones se realizan cada 10 segundos.
  • Modo 3 - Las mediciones se realizan cada hora.
  • Modo 4 - Modo de potencia constante - La medición del sensor se realiza cuatro veces por segundo.

-> Lea nuestra guía sobre lo que puede construir con Adruino.

Instrucciones paso a paso para conectar el sensor de COV con Arduino UNO

En esta sección, vamos a construir un proyecto utilizando Arduino UNO y el sensor CCS811 VOC.

Las líneas I2C de los pines del sensor CCS811 están disponibles para conectarse al Arduino UNO. 

Empecemos con las conexiones de hardware.

A continuación se muestra el tablero que utilizaremos para completar las conexiones.

Conectar el sensor de COV con Arduino UNO

Puedes encontrar varias variantes de placa, pero la conexión primaria y el código Arduino siguen siendo los mismos.

varias variantes de tablero

En las próximas secciones conectaremos el Arduino al sensor de COV CCS811.

¿Cómo conectar el sensor CCS811 al Arduino UNO?

A continuación se muestra la guía paso a paso para completar las conexiones mínimas necesarias para conectar el Arduino y CCS811 VOC Sensor. 

Paso 1: Comience con las conexiones GND.

Comienza con las conexiones GND

Puedes conectar cualquier pin GND disponible en la placa Arduino UNO.

Conecta el pin de tierra del sensor CCS811 al pin GND del Arduino.

Always start with the ground connections. Connecting the GND pins first avoids accidental damage to the boards. 

Paso 2: Conectar el pin I2C Clock

Conectar la clavija de reloj I2C

Conecta el pin A5 del Arduino UNO al pin SCL del sensor.

El pin de reloj I2C del Arduino es el pin A5.

La línea de datos I2C del pin A4 es SDA. 

Paso 3: Conectar el pin de datos I2C

Conectar el pin de datos I2C

Conecta el pin A4 del Arduino UNO al pin SDA del sensor.

El pin de reloj I2C del Arduino es el pin A5.

La línea de datos I2C del pin A4 es SDA. 

Paso 4: Conectar el pin WAKE

Conectar el pin WAKE

Conecte el pin WAKE a masa. Si conecta el pin WAK a alta tensión, pondrá el CCS811 en reposo.

Conectar el pin Wake al pin GND mantiene el dispositivo activo. 

Conecta el pin WAKE al pin GND del Arduino UNO.

Paso 5: Conectar la clavija de alimentación

Conecte la clavija de alimentación

Conecta el pin VCC del sensor al pin 5V del Arduino UNO. 

Ejemplo de código Arduino para el proyecto del sensor de COV Arduino y CCS811

En esta sección, recorreremos el código Arduino de ejemplo para verificar el módulo sensor de COV. 

Tienes que instalar la librería Adafruit CCS811 para usar el código de ejemplo. 

  1. Vaya a Herramientas → Gestionar bibliotecas
  2. Busca el Adafruit CCS811 en la barra de búsqueda y pulsa Enter
  3. Por favor, haga clic en el botón INSTALL una vez que localice la biblioteca Adafruit CCS811
Biblioteca CCS811 de Adafruit

Proyecto 1: Código básico de prueba del sensor CCS811

El código Arduino a continuación lee los datos del sensor a través de I2C. Los datos se imprimirán en el terminal serie.

Puedes abrir el terminal para ver los mensajes.

#include "Adafruit_CCS811.h"
 
Adafruit_CCS811 ccs;
 
void setup() {
  Serial.begin(9600);
 
  Serial.println("CCS811 test");
 
  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
 
  // Wait for the sensor to be ready
  while(!ccs.available());
}
 
void loop() {
  if(ccs.available()){
    if(!ccs.readData()){
      Serial.print("CO2: ");
      Serial.print(ccs.geteCO2());
      Serial.print("ppm, TVOC: ");
      Serial.println(ccs.getTVOC());
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }
  delay(500);
}

Los datos del terminal serie muestran los mensajes.

Los datos del terminal serie muestran los mensajes
Salida de monitorización en serie

Proyecto 2: Visualización de datos de COV en una pantalla OLED

El código Arduino a continuación lee los datos del sensor a través de I2C. Los datos se mostrarán en la pantalla OLED.

La pantalla OLED está conectada al Arduino UNO a través de la línea I2C. 

/* This demo shows how to display the CCS811 readings on an Adafruit I2C OLED.
 * (We used a Feather + OLED FeatherWing)
 */
 
#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
 
#include <"dafruit_SSD1306.h"
#include "Adafruit_CCS811.h"
 
Adafruit_CCS811 ccs;
Adafruit_SSD1306 display = Adafruit_SSD1306();
 
void setup() {  
  Serial.begin(115200);
 
  if(!ccs.begin()){
    Serial.println("Failed to start sensor! Please check your wiring.");
    while(1);
  }
 
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
 
  // Show image buffer on the display hardware.
  // Since the buffer is intialized with an Adafruit splash screen
  // internally, this will display the splash screen.
  display.display();
  delay(500);
 
  // Clear the buffer.
  display.clearDisplay();
  display.display();
 
  //calibrate temperature sensor
  while(!ccs.available());
  float temp = ccs.calculateTemperature();
  ccs.setTempOffset(temp - 25.0);
 
  Serial.println("IO test");
 
  // text display tests
  display.setTextSize(1);
  display.setTextColor(WHITE);
}
 
 
void loop() {
  display.setCursor(0,0);
  if(ccs.available()){
    display.clearDisplay();
    float temp = ccs.calculateTemperature();
    if(!ccs.readData()){
      display.print("eCO2: ");
      Serial.print("eCO2: ");
      float eCO2 = ccs.geteCO2();
      display.print(eCO2);
      Serial.print(eCO2);
     
      display.print(" ppm\nTVOC: ");
      Serial.print(" ppm, TVOC: ");      
      float TVOC = ccs.getTVOC();
      display.print(TVOC);
      Serial.print(TVOC);
     
      Serial.print(" ppb   Temp:");
      display.print(" ppb\nTemp: ");
      Serial.println(temp);
      display.println(temp);
      display.display();
    }
    else{
      Serial.println("ERROR!");
      while(1);
    }
  }
  delay(500);
}

Preguntas frecuentes sobre el sensor de COV CCS811 y los proyectos Arduino

He incluido una lista de las preguntas más frecuentes sobre los proyectos realizados con Arduino y el sensor de COV.

Si tiene más preguntas, por favor publíquelas en la sección de comentarios.

Estaré encantado de responderles. 

1. ¿Qué significa VOC?

COV son las siglas de Compuestos Orgánicos Volátiles. Los COV son un grupo de sustancias químicas que se encuentran habitualmente en los materiales utilizados para construir y mantener la casa y el equipamiento doméstico.

Posteriormente, los COV se liberan lentamente en el aire.

2. ¿Qué mide un sensor de COV?

El sensor de COV mide directamente los gases reductores peligrosos para la salud humana. 

Algunos sensores proporcionan los datos en PPM y otros en valor porcentual.

Los gases que arden y se esparcen por el aire son alcoholes, aldehídos, cetonas, ácidos orgánicos, aminas, cloraminas orgánicas, etc. 

3. ¿Qué parámetros pueden medirse con un sensor CCS811?

Puede medir el CO2 equivalente (eCO2) con un rango de medición de 400 a 8192 PPM (partes por millón).

El intervalo de COV es de 0 ppb a 1187 ppb. Todos los valores fuera del intervalo se recortan. 

4. ¿Cuáles son las fuentes habituales de COV?

Las fuentes habituales de COV son las pinturas, los adhesivos, las alfombras, los suelos de vinilo, la gasolina, los cosméticos, las fotocopiadoras, la limpieza en seco, el tabaco, los ambientadores, la combustión de madera, etc. 

Conclusión

En este artículo, cubrimos el funcionamiento y las características del sensor de COV basado en el sensor CCS811. 

Cubrimos los detalles de conexión y proporcionamos algún código de ejemplo para probar la conexión entre Arduino y el sensor CCS811. 

El sensor de COV es una parte vital de cualquier sistema de control de la calidad del aire. Es versátil y fácil de usar.

Puede mejorar aún más el sensor de COV utilizando sensores adicionales de temperatura y PM para construir un sistema completo de vigilancia de la calidad del aire

Si tienes alguna opinión para mejorar el artículo, compártela en la sección de comentarios.

Su valiosa aportación me ayuda a mejorar la calidad del artículo y a aportar más contenido útil en el futuro. 

No olvides compartir el artículo con tus compañeros entusiastas de Arduino.