Il sensore CCS811 è uno dei più apprezzati quando parliamo di monitoraggio di qualità dell’aria, perfetto per realizzare un piccolo sistema di rilevamento ambientale smart con Home Assistant
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 una ampia gamma di composti organici volatili (COV). Questo permette applicazioni in ambito di domotica, IoT, automazione e accessori smart.
Acquistali su Amazon:
- ESP32: https://amzn.to/3E29pEs
- CCS811: https://amzn.to/3EuZYxg
Specifiche tecniche
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.
PIN | Descrizione |
---|---|
Vcc | Pin per la tensione a 3,3V |
GND | Ground |
SCL | Clock Line - Interfaccia I²C |
SDA | Data Line - Interfaccia I²C |
WAK | INPUT basso attivo che va impostato basso per mantenere attivo il sensore |
INT | Pin Interrupt per interrompere la misurazione |
RST | Reset |
ADD | Bit 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 |
Collegamenti
Il sensore CCS811 è collegabile al nostro ESP32 tramite interfaccia I2C. I collegamenti sono piuttosto semplici: SDA e SCL vanno connessi ai pin 4 e 0 di ESP32, il Vcc ai 3,3V di ESP32, il GND al GND ed il pin WAKE sempre al GND di ESP32.
Codice
Andiamo a creare un nuovo device su ESPHome e chiamiamolo CCS811 . Saltiamo per il momento la connessione e selezioniamo la scheda che dobbiamo programmare (ESP32).
Una volta creato, clicchiamo su EDIT per modificare il codice.
Questo è il codice per configurare una ESP32 per leggere i dati da un sensore CCS811 e inviarli a Home Assistant tramite ESPHome. Il dispositivo sarà accessibile in rete tramite Wi-Fi e potrà essere aggiornato via OTA (Over-The-Air) senza bisogno di connessione fisica. Potete scaricarlo a questo LINK.
All’inizio, il codice definisce il nome del dispositivo, sia quello tecnico (“ccs811”) che quello più leggibile per Home Assistant (“CCS811”).
esphome:
name: ccs811
friendly_name: CCS811
Poi si specifica che il microcontrollore utilizzato è un ESP32 e che il firmware verrà compilato usando il framework Arduino, che è più semplice e supportato rispetto ad altre alternative come ESP-IDF.
esp32:
board: esp32dev
framework:
type: arduino
Il codice attiva il logger, che serve a registrare gli eventi e inviare messaggi di debug. Inoltre, viene attivata l’API di ESPHome, che permette a Home Assistant di comunicare con il dispositivo in modo sicuro grazie a una chiave di crittografia.
logger:
api:
encryption:
key: "6sJALLng86YWZe3HWRGGeGzuNc1lOgbWy5TdmhYP1+s="
Per evitare di dover collegare il dispositivo fisicamente ogni volta che si vuole aggiornare il firmware, viene attivata la modalità OTA (Over-The-Air), con una password di sicurezza. Inoltre, è presente la funzione captive portal, che permette di riconfigurare il Wi-Fi direttamente da un browser in caso di problemi di connessione.
captive_portal:
ota:
- platform: esphome
password: "29f64951123f99bbc7853e7b1c5dfd4f"
Per collegarsi alla rete, il codice usa le credenziali Wi-Fi salvate nei secrets di ESPHome (file separato non visibile nel codice). Se la connessione fallisce, il dispositivo crea un hotspot Wi-Fi di emergenza (“Ccs811 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ccs811 Fallback Hotspot"
password: "3vEHNIpDmBLB"
Trattandosi di un sensore che lavora su interfaccia I2C, questa sezione configura la comunicazione I2C tra l’ESP32 ed il sensore BME280, impostando il pin GPIO4 dell’ESP32 come linea SDA ed il pin GPIO0 come linea SCL. La funziona scan abilita la scansione automatica dei dispositivi connessi al bus I2C, verificando quali dispositivi I2C sono collegati e il loro indirizzo.
i2c:
sda: 4
scl: 0
scan: true
id: bus_a
Il sensore viene integrato impostando la comunicazione con I2C, definendo poi le misurazione per CO2 e TVOC. Impostiamo l’indirizzo di lettura come 0x5A e chiediamo al sensore di ripetere la lettura ogni 2 secondi.
sensor:
- platform: ccs811
eco2:
name: "eCO2"
tvoc:
name: "TVOC"
address: 0x5A
update_interval: 2s
Salvate e verificate con Validate se il codice è stato scritto correttamente.
Collegate la ESP32 al computer tramite cavo USB, e cliccate su Install.
Conclusa l’installazione, integriamo il device su Home Assistant. Dovrebbe essere arrivata una notifica sulla plancia. In ogni caso, per integrarlo andate su Impostazioni -> Dispositivi e servizi e apparirà il dispositivo CCS811 da integrare.
Autorizzate la configurazione ed otterrete quanto segue.