Sensore CCS811: rilevamento di Anidride Carbonica e TVOC

Possiamo monitorare la qualità dell’aria che respiriamo grazie  a diversi sensori per le nostre dev-board. Uno di questi è il CCS811, un sensore digitale con interfaccia I2C in grado di rilevare la presenza di CO2  e di composti organici volatili nell’aria. Il CCS811 è un sensore a bassissima potenza che integra un sensore di gas a ossido di metallo (MOX) per rilevare a ampia gamma di composti organici volatili (COV). Questo permette applicazioni in ambito di domotica, IoT, automazione e accessori smart.

Specifiche

Il CCS811 è sviluppato su chip AMS e possiede un’unità microcontrollore (MCU), che include un convertitore analogico-digitale (ADC). Di ridotte dimensioni (20 x 14 mm), il CCS811 possiede 8 pin e lavora con una tensione di 3,3V, ma possiamo erogargli comunque i 5V. Una volta collegato tramite interfaccia I2C alla dev-board, il sensore misurerà la  concentrazione di CO2  (anidride carbonica) in un intervallo compreso tra 400 e 8192 parti per milione (ppm) e la concentrazione di TVOC (composto organico volatile totale) in un intervallo compreso tra 0 e 1187 parti per miliardo (ppb).

Inoltre, il CCS811 è dotato di un pin Interrupt che possiamo configurare se una lettura supera o è uguale ad un valore impostato dell’utente, e di un pin ADD (address) per modificare l’indirizzo del sensore sull’interfaccia I2C.

PINDescrizione
VccPin per la tensione a 3,3V
GNDGround
SCLClock Line - Interfaccia I²C
SDAData Line - Interfaccia I²C
WAKINPUT basso attivo che va impostato basso per mantenere attivo il sensore
INTPin Interrupt per interrompere la misurazione
RSTReset
ADDBit di selezione dell'indirizzo singolo per consentire la selezione di un indirizzo alternativo
• Quando ADD è basso, l'indirizzo I²C a 7 bit è 90 / hex 0x5A decimale
• Quando ADD è alto, l'indirizzo I²C a 7 bit è 91 decimale / hex 0x5B

Lista componenti su Amazon:

 

Lista componenti su Aliexpress:



Collegamenti

I collegamenti sono piuttosto semplici: SDA e SCL vanno connessi ai pin SDA e SCL di Arduino (in alternativa possiamo usare A4 e A5), il Vcc ai 3,3V di Arduino, il GND al GND ed il pin WAKE sempre al GND di Arduino.

Codice

Per poter configurare correttamente questo sensore sul nostro Arduino UNO necessitiamo della libreria Adafruit_CCS811-master. Una volta scaricata e caricata sulla IDE, procediamo alla stesura dello sketch (che potete scaricare QUI). Iniziamo come sempre includendo la libreria su elencata e creando l’oggetto ccs per gestire il sensore.


#include "Adafruit_CCS811.h"

Adafruit_CCS811 ccs;

Passiamo ora nel VOID SETUP dove avviamo il monitor seriale, facciamo apparire il messaggio di avvio del sensore, poi lo inizializziamo ed attendiamo qualche secondo affinché il sensore si avvii. Una volta avviato stampiamo un messaggio che ci comunica che è pronto.


Serial.begin(9600);
Serial.println("Avvio CCS811");

ccs.begin();
while(!ccs.available()){
Serial.print(".");
delay (1000);
}

Serial.println("CCS811 Pronto!");

Nel VOID LOOP leggiamo i dati rilevati dal sensore, creiamo due variabili intere che leggeranno dalle funzioni ccs.geteCO2() e ccs.getTVOC() i relativi valori. Stampiamo, infine, i valori appena letti su monitor seriale, ponendo accanto ad ogni rilevazione la corretta unità di misura.


ccs.readData();

int co2 = ccs.geteCO2();
int tvoc = ccs.getTVOC();

Serial.print("CO2: ");
Serial.print(co2);
Serial.print(" ppm \tTVOC: ");
Serial.print(tvoc);
Serial.println(" ppb");
delay(500);

Otterremo così una lettura quantomeno affidabile sui valori di CO2 e TVOC nell’aria.