Aggiungere sensori di qualità dell'aria compensati a Internet delle cose

Contributo di Editori nordamericani di DigiKey

Aggiungendo sensori di qualità dell'aria agli impianti di edifici intelligenti, i progettisti possono inserire un allarme tempestivo sull'accumulo di gas e prodotti chimici pericolosi. Tuttavia, i sensori di questo tipo normalmente in commercio mancano delle funzionalità integrate necessarie per entrare a far parte di una rete di edifici intelligenti. È però possibile ricorrere a kit di sviluppo intuitivi per aggiungere la potenza di calcolo e la capacità wireless richieste per superare questa inadeguatezza.

Il tipo più diffuso di dispositivo per la qualità dell'aria usato per determinare la concentrazione in ppm di CO2 o di composti organici volatili (VOC) nell'ambiente si basa su un elemento elettrochimico a semiconduttore che genera una tensione di uscita proporzionale alla concentrazione del gas o della sostanza chimica misurata. Tuttavia, la temperatura e l'umidità incidono sulla precisione di misurazione. I sensori di temperatura e umidità potrebbero fornire i dati per un algoritmo di compensazione continua per migliorare la precisione dell'uscita di un sensore di qualità dell'aria, ma normalmente non sono integrati in questo tipo di sensori.

Inoltre, l'attuale offerta di sensori di qualità dell'aria non dispone della tecnologia wireless comune ad altri tipi di sensori e che è richiesta per la connettività alle reti di edifici intelligenti.

Date queste carenze, per un ingegnere è più difficile progettare sensori di qualità dell'aria per reti wireless per applicazioni domestiche, commerciali e industriali.

La sfida posta da questa progettazione è stata tuttavia facilitata dalla recente introduzione di kit di sviluppo per i prodotti di monitoraggio della qualità dell'aria che includono sensori di temperatura e umidità, come pure la connettività wireless. Questo articolo descrive come utilizzare questi kit di sviluppo per accorciare il ciclo di progettazione di un prodotto per il rilevamento della qualità dell'aria.

Caratteristiche del sensore MOS

Per il monitoraggio della qualità dell'aria, esistono diversi tipi di sensori. Ad esempio, rilevatori elettrochimici (EC), di tipo non dispersivo a raggi infrarossi (NDIR), a fotoionizzazione (PID) e termici.

Quello però che si avvicina di più ai requisiti di monitoraggio per le applicazioni per edifici intelligenti è il tipo a semiconduttore in ossido di metallo (MOS). Questi dispositivi sono compatti, abbastanza economici, possono funzionare a batterie (con una capacità sufficiente ad alimentare periodicamente il riscaldatore del sensore MOS) e l'intervallo di rilevamento risponde alle concentrazioni tipiche di CO2 e VOC nei luoghi di lavoro al chiuso (Figura 1).

Grafico della variazione della concentrazione di CO2 e VOC in una camera da letto

Figura 1: Variazione della concentrazione di CO2 e VOC in una camera da letto nel corso di una giornata. (Immagine per gentile concessione di IDT)

Quando è in funzione, l'elemento di rilevamento viene riscaldato a diverse centinaia di gradi Celsius (˚C). La temperatura esatta determina la selettività dell'elemento per un particolare gas o una particolare sostanza chimica. La sensibilità dipende dallo spessore del materiale.

I sensori sono fabbricati con elementi di rilevamento a semiconduttori di tipo n o tipo p. L'elemento di rilevamento assorbe (tipo p) o desorbe (tipo n) la sostanza chimica bersaglio, mentre una reazione elettrochimica con il composto bersaglio aggiunge o rimuove elettroni dalla banda di conduzione del semiconduttore. La migrazione degli elettroni modifica linearmente la resistività o la conduttività dell'elemento di rilevamento rispetto a un valore noto di base (Figura 2).

Grafico della resistività di un elemento di un sensore MOS

Figura 2: La resistività di un elemento del sensore MOS cambia linearmente in risposta a un cambiamento nella concentrazione della sostanza chimica bersaglio. In questo esempio è l'etanolo. (Immagine per gentile concessione di IDT)

Fra i sensori MOS in commercio per applicazioni domotica vi è quello fornito da ams. CCS811B è una soluzione di sensore MOS digitale che incorpora un microcontroller, un convertitore analogico/digitale (ADC) e un'interfaccia I2C (Figura 3). Questo dispositivo elabora le misurazioni grezze del sensore per emettere valori "VOC totale equivalente" (eTVOC) e valori "CO2 equivalente" (eCO2). Il sensore è disponibile in un contenitore a 10 conduttori di 2,7 x 4,0 x 1,1 mm.

Schema del sensore MOS digitale CCS811B di ams

Figura 3: Il sensore MOS digitale CCS811B di ams include un microcontroller per l'elaborazione integrata dei dati grezzi dei sensori. (Immagine per gentile concessione di ams)

Ogni sensore MOS ha una resistenza di base caratteristica per una determinata composizione, temperatura e umidità dell'aria. Questi dati vengono utilizzati come base per calcolare la concentrazione di gas o di sostanze chimiche: la differenza di resistenza rispetto al valore di base è proporzionale alla concentrazione di gas o di sostanze chimiche.

Sul campo, la temperatura ambiente e l'umidità influenzano la resistenza di base del sensore, modificandone la sensibilità e, di conseguenza, la precisione. Un aumento della temperatura ambiente, ad esempio, aumenta la resistenza di base del sensore (per una data umidità), mentre un aumento dell'umidità può ridurla (per una data temperatura).

I produttori di sensori consigliano di abbinare il sensore di qualità dell'aria con sensori di temperatura e umidità, così che un microprocessore di supervisione possa eseguire un algoritmo per compensare in modo continuo le variazioni della resistenza di base.

Un dispositivo diffuso per questa applicazione è BME280 di Bosch Sensortec. BME280 combina umidità, pressione e temperatura in formato digitale in un contenitore LGA con un ingombro di 2,5 x 2,5 x 0,93 mm. Il sensore è dotato di un'interfaccia I2C per comunicare con un microprocessore esterno e richiede un'alimentazione tra 1,71 e 3,6 V. Quando il sensore è in modalità di sospensione, il consumo di corrente scende a 0,1 μA.

I sensori MOS in commercio sono privi della connettività integrata necessaria per collegarsi a una rete wireless. Tuttavia, esistono molti chip wireless a basso consumo progettati per interfacciarsi direttamente con i sensori. Molti di questi dispositivi includono anche microprocessori integrati che sono abbastanza potenti da eseguire gli algoritmi richiesti per elaborare i dati grezzi dei sensori e compensare le variazioni di umidità e temperatura. (Per ulteriori informazioni sulle tecnologie wireless idonee per questa applicazione, vedere l'articolo di DigiKey "Confronto tra le tecnologie wireless a basso consumo".)

Sviluppo di un sensore base di qualità dell'aria

Per progettare un sistema di monitoraggio della qualità dell'aria connesso in modalità wireless è necessario combinare in un unico sistema un sensore MOS discreto, un sensore di umidità e temperatura, un transceiver wireless e (in alcuni casi) un microprocessore. Tale complessità può rendere questo compito arduo e dispendioso in termini di tempo.

Tuttavia, il mercato offre diversi kit di sviluppo che facilitano notevolmente la progettazione iniziale e il processo di collaudo. Uno di questi è la scheda di breakout combinata SEN-14348 Qwiic di SparkFun Electronics. Questo kit combina un sensore di qualità dell'aria CCS811B con un sensore BME280 per la compensazione di temperatura e umidità e include due interfacce fisiche I2C sotto forma di connettori Qwiic polarizzati a 4 pin (Figura 4).

Immagine della scheda di breakout SEN-14348 di SparkFun

Figura 4: La scheda di breakout SEN-14348 di SparkFun combina un sensore CCS811B con un dispositivo BME280 per la compensazione di temperatura e umidità. (Fonte dell'immagine: SparkFun)

Anche se SEN-14348 può essere utilizzato come base per la progettazione di un sensore di qualità dell'aria con compensazione di temperatura e umidità, non è una soluzione completa. Nonostante CCS811B includa un microprocessore, ha capacità limitate che vanno poco al di là della supervisione delle misurazioni periodiche e della compensazione di base. Applicazioni più complesse, come il monitoraggio delle soglie di qualità dell'aria o il calcolo delle concentrazioni a lungo termine di gas o sostanze chimiche, richiedono capacità che sono superiori a quelle del microprocessore. Per supportare applicazioni più avanzate, SEN-14348 deve essere collegato a un microprocessore più potente.

Per lo sviluppo iniziale, SparkFun suggerisce di collegare la scheda di breakout SEN-14348 a un computer compatibile con Arduino, come RedBoard. RedBoard si collega a un PC tramite un cavo USB (che fornisce anche alimentazione alla scheda) per caricare il codice dall'IDE di Arduino. Per utilizzare RedBoard con la scheda di breakout Qwiic occorre adattare il computer con uno shield DEV-14352 Qwiic. Lo shield alloggia un connettore I2C e regola anche l'alimentazione a 5 V di RedBoard fino ai 3,3 V richiesti per i sensori sulla scheda di breakout SEN-14348.

Per iniziare, lo sviluppatore deve scaricare da Github le librerie di Arduino per CCS811 di SparkFun e BME280. I sensori sono configurati dall'IDE di Arduino con informazioni quali frequenza di campionamento, coefficienti di filtro a risposta impulsiva finita (FIR) e modalità di sovracampionamento.

Il frammento di codice seguente mostra la routine per inizializzare il sensore BME280 prima di eseguire le letture (la routine di inizializzazione per CCS811 è simile).

Copy

#include <SparkFunBME280.h>

#include <SparkFunCCS811.h>

#define CCS811_ADDR 0x5B //Indirizzo I2C predefinito

//#define CCS811_ADDR 0x5A //Indirizzo I2C alternativo

//Oggetti sensore globale

CCS811 myCCS811(CCS811_ADDR);

BME280 myBME280;

void setup()

{

Serial.begin(9600);

Serial.println();

Serial.println("Applica i dati BME280 a CCS811 per la compensazione

.");

//Inizializza il sensore CCS811 e stampa lo stato di errore di .

begin()

CCS811Core::status returnCode = myCCS811.begin();

if (returnCode != CCS811Core::SENSOR_SUCCESS)

{

Serial.println("Problema con CCS811");

printDriverError(returnCode);

}

else {

Serial.println("CCS811 online");

}

//Inizializza BME280

//Per I2C, abilitare quanto segue e disabilitare la sezione SPI

myBME280.settings.commInterface = I2C_MODE;

myBME280.settings.I2CAddress = 0x77;

myBME280.settings.runMode = 3; //Modalità normale

myBME280.settings.tStandby = 0;

myBME280.settings.filter = 4;

myBME280.settings.tempOverSample = 5;

myBME280.settings.pressOverSample = 5;

myBME280.settings.humidOverSample = 5;

//La chiamata di .begin() determina il caricamento delle impostazioni

delay(10); //Assicurarsi che il sensore abbia avuto abbastanza tempo per attivarsi. B

ME280 richiede 2 ms per avviarsi.

byte id = myBME280.begin(); //Restituisce ID di 0x60 se

riesce

if (id != 0x60)

{

Serial.println("Problema con BME280");

}

else {

Serial.println("BME280 online");

}

}

Frammento di codice 1: routine di inizializzazione per il sensore BME280 prima di eseguire le letture. (Codice sorgente: SparkFun)

Per effettuare le letture dai sensori, è necessario aggiungere al codice un loop vuoto ("sketch" di Arduino) (frammento di codice 2).

Copy

void loop() {

if (myCCS811.dataAvailable()) //Controllare se CCS811 ha dati nuovi (è il sensore più lento)

{

myCCS811.readAlgorithmResults(); //Leggere l'ultimo da CCS81

1 e aggiornare le variabili tVOC e CO2

//getWeather(); //Ottenere gli ultimi dati su umidità/pressione/temperatura

da BME280

printData(); //Stampare evidenziando tutti i dati

}

else if (myCCS811.checkForStatusError()) //Controllare se C

CS811 ha generato un errore

{

Serial.println(myCCS811.getErrorRegister()); //Stampa

tutti i flag di errore CSS811 rilevati

}

delay(2000); //Attendere la prossima lettura

}

Frammento di codice 2: routine per l'acquisizione e la stampa delle letture dal sensore CCS811. (Codice sorgente: SparkFun)

I dati ambientali ("ENV_DATA") da BME280 vengono scritti su CCS811 per poter applicare un fattore di compensazione alla resistenza di base per tenere conto dell'effetto della temperatura e dell'umidità.

Le informazioni riguardanti l'umidità e la temperatura vengono comunicate come numero intero a 16 bit senza firma con una risoluzione di 1/512% di umidità relativa e 1/512 gradi. Il valore predefinito per l'umidità è 50 percento (= 0x64, 0x00). Ad esempio, 48,5% di umidità = 0x61, 0x00. La lettura della temperatura include un offset con mappatura 0 a -25 °C. Il valore predefinito è 25 °C (= 0x64, 0x00). Ad esempio, 23,5 °C = 0x61, 0x00.

L'immissione della temperatura e dell'umidità da BME280 in CCS811 consente al microprocessore di applicare l'algoritmo di compensazione (frammento di codice 3).

Copy

void loop() {

//Controllare se i dati sono disponibili

if (myCCS811.dataAvailable())

{

//Il richiamo di questa funzione aggiorna le variabili globali tVOC ed

eCO2

myCCS811.readAlgorithmResults();

//printData recupera i valori di tVOC ed eCO2

printData();

float BMEtempC = myBME280.readTempC();

float BMEhumid = myBME280.readFloatHumidity();

Serial.print("Applicazione di nuovi valori (gradi C, %): ");

Serial.print(BMEtempC);

Serial.print(",");

Serial.println(BMEhumid);

Serial.println();

//Invia i dati della temperatura a CCS811

myCCS811.setEnvironmentalData(BMEhumid, BMEtempC);

}

else if (myCCS811.checkForStatusError())

{

Serial.println(myCCS811.getErrorRegister()); //Stampa

tutti i flag di errore CSS811 rilevati

}

delay(2000); //Attendere la prossima lettura

}

Frammento di codice 3: Immissione dei dati di temperatura e umidità per consentire al sensore CCS811 di eseguire un algoritmo di compensazione. (Codice sorgente: SparkFun)

Aggiunta di un sensore di qualità dell'aria a IoT

Anche se il breakout SEN-14348 di SparkFun, il computer Arduino e lo shield consentono il controllo e la raccolta dei dati sulla qualità dell'aria, il sistema non offre connettività wireless. Il kit Pioneer CY8CKIT-042-BLE-A PSoC 4 BLE di Cypress Semiconductor include funzionalità wireless per soddisfare questo requisito.

Questo kit è uno strumento di sviluppo progettato per aiutare gli ingegneri a sviluppare applicazioni di sensori wireless. Consente loro di codificare e compilare le applicazioni e quindi di portare il firmware sul SoC Bluetooth Low Energy PSoC 4 di Cypress. Il SoC incorpora un processore a 32 bit, 48 MHz Arm® Cortex®-M0 e una radio Bluetooth Low Energy.

In questo caso, tramite la connessione I2C della scheda di breakout i suoi dati compensati sulla qualità dell'aria vengono inviati a un connettore I2C sulla scheda a circuiti stampati del kit. Oltre a ricevere dati dalla linea SDA dell'interfaccia I2C, il processore è in grado di resettare, interrompere e mettere a riposo i sensori.

Per programmare e mettere a punto un progetto per un sensore della qualità dell'aria, quando si utilizza il kit è richiesto un certo lavoro di sviluppo. Cypress offre lo strumento di emulazione host Windows CySmart (in esecuzione su un PC) e un dongle Bluetooth Low Energy per la codifica e il collaudo. Sia il dongle che il kit Pioneer possono essere collegati contemporaneamente a un PC host comune durante il processo di sviluppo (Figura 5).

Immagine degli strumenti di sviluppo Bluetooth Low Energy di Cypress (fare clic per ingrandire)

Figura 5: Cypress fornisce strumenti di sviluppo Bluetooth Low Energy e un dongle (configurato come dispositivo Bluetooth Low Energy centrale) per agevolare lo sviluppo del firmware dell'applicazione con il kit Pioneer PSoC 4 BLE. (Immagine per gentile concessione di Cypress Semiconductor)

Il processo di sviluppo con il kit Pioneer CY8CKIT-042-BLE-A PSoC 4 BLE è articolato in quattro fasi:

  • Creare il progetto nella pagina schematica di PSoC Creator
  • Scrivere il firmware per inizializzare e gestire gli eventi Bluetooth Low Energy
  • Programmare il SoC Bluetooth Low Energy tramite il kit Pioneer
  • Testare il progetto utilizzando lo strumento di emulazione host CySmart (o l'app mobile)

(Per ulteriori informazioni sullo sviluppo di applicazioni Bluetooth Low Energy, vedere l'articolo di DigiKey "SoC e strumenti Bluetooth Low Energy compatibili con Bluetooth 4.1, 4.2 e 5 pronti ad affrontare le sfide IoT").

Il firmware dell'applicazione permette al SoC Bluetooth Low Energy di raccogliere ed elaborare i dati dei sensori e, attraverso un collegamento Bluetooth Low Energy, trasmettere le informazioni ad esempio a uno smartphone a fini di analisi e visualizzazione.

I dati del sensore potrebbero poi essere inviati dallo smartphone a un server cloud per essere salvati e, eventualmente, attivare notifiche "If This Then That" (IFTTT) basate su di essi. Ad esempio, la lettura di un valore di CO2 costantemente alto nella camera da letto di un bambino potrebbe attivare una notifica sullo smartphone di un genitore per consigliare di aumentare la ventilazione.

La connessione al cloud direttamente dal sensore è un po' più complessa. I SoC Bluetooth Low Energy come il componente di Cypress in genere sono privi di uno strato di rete IPv6 nativo. La soluzione consiste nell'inviare i dati Bluetooth a un "gateway" utilizzando un protocollo alternativo per la connessione al cloud (ad esempio Wi-Fi).

Cypress e SparkFun hanno deciso di collaborare ancora una volta per renderlo possibile. Usando il kit Pioneer CY8CKIT-062-BLE PsoC 6 BLE di Cypress e uno shield aggiuntivo per IoT PSoC Pioneer DEV-14531 di SparkFun (dotato di un modulo XBee Wi-Fi XB2B-WFWT-001), è possibile sviluppare una rete che preleva dal sensore i dati compensati sulla qualità dell'aria, trasmettendoli attraverso un collegamento Bluetooth Low Energy dal kit Pioneer CY8CKIT-042-BLE-A PSoC 4 BLE al kit Pioneer CY8CKIT-062-BLE PSoC 6 BLE e da lì (tramite Wi-Fi) al cloud (Figura 6). (Per ulteriori informazioni sull'uso di moduli Wi-Fi per la connessione al cloud, vedere l'articolo tecnico di DigiKey "Moduli 802.11x: i kit di sviluppo possono semplificare la progettazione wireless per IoT".)

Schema del sistema wireless realizzato con i kit di sviluppo di Cypress e SparkFun

Figura 6: Questo sistema wireless realizzato con i kit di sviluppo di Cypress e SparkFun utilizza Bluetooth Low Energy e Wi-Fi per inviare al cloud i dati dei sensori sulla qualità dell'aria. (Immagine per gentile concessione di DigiKey)

Conclusione

Grazie alla crescente consapevolezza degli effetti nocivi per la salute derivanti dall'accumulo di VOC e gas come CO2 in edifici a ventilazione controllata, l'inclusione di sensori di qualità dell'aria nella rete degli edifici intelligenti sta prendendo sempre più piede.

I sensori di qualità dell'aria oggi in commercio non hanno il potente microprocessore integrato e la connettività wireless tipica di altri sensori (modulari). Tuttavia, grazie a strumenti di progettazione di facile utilizzo, un ingegnere può non solo compensare i dati grezzi sulla qualità dell'aria per gli effetti della temperatura e dell'umidità, ma anche trasmettere in modalità wireless le informazioni attraverso una rete Bluetooth Low Energy e, tramite una rete di smartphone o un modulo Wi-Fi, inviarle al cloud.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo editore

Editori nordamericani di DigiKey