Display portatile e autonomo per il monitoraggio della qualità dell’aria per particelle da 2.5 µm

Fai attenzione alla tua salute. In questo periodo, data la pandemia dovuta al COVID-19, quasi ci si dimentica che esistono altre ragioni che ci inducono ad indossare una mascherina. Ci sono luoghi nel mondo dove indossarla non è solo consigliabile, ma anche necessario da molto tempo. È il caso, ad esempio, delle grandi metropoli dell'Asia, dove praticare sport all'esterno è problematico dato l'alto grado di inquinamento dell'aria, specialmente per quel che riguarda le particelle da 2.5 μm, conosciute con il nome PM2.5.

Un'alta concentrazione di queste piccole particelle nell'aria può essere nociva e pericolosa per la nostra salute. Il display PM2.5 presentato in questo articolo può essere sfruttato per monitorare la qualità dell'aria. Ho già realizzato un display PM2.5 ricaricabile tramite pannello solare, ma questo non si adattava bene ad un uso interno. Ho realizzato anche una versione di base ESP32, con la quale ho testato differenti tipi di sensori inviando poi i dati raccolti via WiFi a Thingspeak, ma questa versione non era portatile. L'obiettivo principale di questo progetto è quello di realizzare un dispositivo che sia il più compatto possibile, alimentato a batterie, con un'autonomia di diverse settimane, capace di mostrare l'indice di PM2.5 presente nell'aria in modo permanente. Questo display portatile può essere posizionato all'esterno e può, per esempio, essere fissato su una finestra tramite ventosa, in modo da poter controllare il livello di PM2.5 dall'interno costantemente. Naturalmente può essere utilizzato anche in ambienti interni.

Considerazioni progettuali

La scelta del rilevatore di particelle d'aria è molto importante. In un progetto precedente, ho testato svariati tipi di sensori, come il sensore Sharp GP2Y10 per esterni. Comunque, se vogliamo un design compatto, di tutti i sensori testati, il Plantower PMS7003 [10] è l'unico utilizzabile. Possiede un'interfaccia seriale per la trasmissione dei dati di misurazione. Quando ordini questo sensore, assicurati di acquistarlo assieme all'apposito connettore. Siccome il sensore necessita fino a 100mA a 5V per funzionare (principalmente per via della mini ventola interna), esso non può operare in maniera continuata, le batterie si scaricherebbero in pochissimo tempo. La tensione di alimentazione è fornita da una batteria al litio, e perciò è necessario utilizzare un convertitore DC-DC (da 3.8 V a 5 V) in modalità true shut-down.

Il display che ho scelto è un LCD alfanumerico 8x2 monocromatico. Con il display permanente consuma meno di 1 mA. Display a colori e display OLED non possono essere usati dato l'elevato consumo di corrente di cui necessitano, ciò influenzerebbe negativamente l'autonomia e la riuscita del progetto. Per una visualizzazione rapida della misurazione PM2.5 viene aggiunto un grafico a barre a LED. Ogni specifico livello viene rappresentato da un LED acceso, è possibile rappresentare una gamma di sei livelli PM2.5 associando ognuno di essi a 5 LED di diverso colore come illustrato nella Tabella 1, dove il livello più alto viene segnalato con l'accensione di entrambi i LED blu e rosso (marrone nella Tavola). Tutti i LED sono a bassa potenza, per esempio, la serie Kingbright WP71xx che ha una corrente diretta di 2 mA. Una versione a bassa potenza e luminosità elevata può essere utile se l'apparecchiatura viene posizionata all'esterno.

Possono essere aggiunti (opzionalmente) anche dei display per la temperatura e l'umidità utilizzando un sensore I2C SHT20/SHT21. Il software supporta anche il sensore di temperatura DS1820 1-Wire, ma tale applicazione non è stata testata in questo progetto. Il cuore del setup è un PIC18F2520 con versione MAX931 per il monitoraggio della tensione di batteria e un caricabatteria per batterie al litio LTC4054 come periferiche.

Il consumo energetico complessivo del rilevatore dipende principalmente dall'intervallo esistente tra le misurazioni. Secondo le specifiche tecniche del PMS7003, è necessario che l'accensione del dispositivo avvenga almeno 30 secondi prima di poter effettuare la prima misurazione affidabile. Di default l'intervallo è settato su 20 minuti, ma può essere modificato nel menù. Con queste impostazioni di default e una batteria da 1000 mAh, questo rilevatore può funzionare fino a due settimane senza essere ricaricato. Le dimensioni della batteria dipendono dal tipo di alloggiamento scelto per il dispositivo. Può essere utilizzata qualsiasi batteria a litio, LiPo o prismatica. Aver sviluppato una custodia compatta per questo progetto significa che la batteria dovrà essere più grande possibile (in termini di volume) e occupare lo spazio rimanente. Ho trovato una batteria a 1100 mAh che ben si adatta al progetto.

Caratteristiche del display PM2.5

La misurazione di particelle da 2.5 μm viene eseguita a intervalli regolari. L'intervallo temporale tra una misurazione e la seguente può essere modificato attraverso il menù, si può scegliere tra 10, 60 e 20 minuti, quest'ultima opzione sembra essere il miglior compromesso tra accuratezza della misurazione e consumo energetico. Ogni ora il programma calcola la media delle ultime misurazioni e solo una di esse viene archiviata in una tabella. Ci sono diversi modi per calcolare la qualità dell'aria (relativamente al livello di PM2.5). In questo progetto sono due i metodi disponibili:

> IQA: media aritmetica su 24 h

> Nuova versione AQI: calcolo della media ponderata dei dati raccolti in 12 h (detta qui NQI). La misurazione più recente ha una rilevanza (un peso) maggiore di quella calcolata 11 ore fa. Il metodo NQI è settato di default.

La barra a LED per il livello di misurazione delle particelle può mostrare:

> La misurazione più recente (l'ultima)

> La misurazione media dell'ultima ora

> IQA o NQI

I LED possono essere spenti durante la notte per ridurre il consumo delle batterie. Una fotoresistenza LDR (Light Dependent Resistor) rileva il grado di luminosità dell'ambiente e passa dalla modalità diurna a quella notturna. Un'opzione interessante per poter visualizzare il livello di PM2.5 in tempo reale. Il sensore è attivo in modo permanente e il valore visualizzato viene aggiornato ogni secondo. Questa modalità consuma molta corrente ed esaurisce le batterie in breve tempo.

Altri valori visualizzabili:

> Visualizzazione di temperatura e umidità

> Schermo a 3 cifre per la visualizzazione della tensione di batteria (per esempio "384" sta per 3.84 V)

> Quando la tensione di batteria è bassa, il display LED lampeggia indicando il bisogno di ricarica.

È inclusa una connessione opzionale per la ricarica della batteria tramite una cella solare di 5 V per uso esterno. Le impostazioni del menù sono salvate nella EEPROM interna del microcontroller. Tutti gli altri valori, tabelle e variabili, vengono resettati quando l'unità viene spenta o riavviata.

Calcolo dell'indice di qualità dell'aria

Esistono diversi metodi per calcolare l'indice di qualità dell'aria. In questo progetto vengono implementate due versioni. La prima calcola la media su 24 h utilizzando il metodo di calcolo degli USA, i dettagli di tale metodo possono essere consultati in [1]. Lo svantaggio di questo metodo sta nel fatto che il calcolo viene eseguito con dati relativi a 24 ore: ciò implica che il valore si ottiene utilizzando dati relativamente vecchi. Per questo motivo viene utilizzata un'altra metodologia di calcolo (NowCast) per ottenere una media ponderata. Tale metodologia implica che le misurazioni relative all'ultima ora hanno più peso nel calcolo finale delle misurazioni eseguite nelle 11 ore precedenti. Anche questa è una media calcolata sui dati di 12 ore. Tale metodologia viene qui chiamata NQI (New Quality Index), la quale mantiene le stesse limitazioni della prima versione menzionata. Il link [2] fornisce ulteriori dettagli relativi a tale metodo di calcolo. Per semplificare ulteriormente il concetto: il valore dell'indice inerente all'ultima ora ha un peso del 50%, per quel che riguarda l'ora precedente (-2) il peso corrisponde al 25%, per la terzultima ora (-3) il peso è del 12.5%, etc. Un'implementazione pratica dell'algoritmo è discussa nel link [3].

L'hardware

Lo schema rappresentato nella Figura 1 mostra l'hardware del display per il monitoraggio della qualità dell'aria. Il convertitore boost DC-DC per il sensore PMS7003 è un LT3525ESC6-5 (U6). Si tratta di un convertitore step-up detto "true shut-down". La maggior parte dei convertitori boost DC-DC ha una funzione di spegnimento capace di arrestare il transistor di commutazione nel circuito smorzatore (Choke Circuit). Ma poi la tensione in uscita comunque segue l'input attraverso il circuito smorzatore a diodi (Diode-Choke Circuit) e comunque consuma corrente.

I circuiti true shut-down spengono il convertitore in modo che davvero nessuna corrente possa passare all'output. L'unico vero problema inerente a questo circuito integrato è il processo di saldatura: le dimensioni sono ridotte ed è quindi consigliabile munirsi di pasta per saldatura e di una stazione saldante ad aria calda. Il regolatore LP2980 3.3 V (U7) viene controllato da U1, ossia un comparatore con isteresi MAX931. Questo spegne il regolatore se la tensione di batteria scende sotto i 3.2 V e la riattivazione può avvenire solo se la tensione supera i 3.8 V. Questa funzione, non necessariamente utile in modalità normale, è necessaria quando si utilizza il pannello solare per la ricarica. Il comparatore MAX931 blocca anche il convertitore DC-DC tramite diodo D5 al fine di prevenire un'inizializzazione non intenzionale in condizioni di batteria scarica.

Il collegamento seriale viene condiviso tra il connettore esterno J8 (per tracciamento e download) e il sensore PMS7003 (connesso a J1). Il segnale TX proveniente dal microcontroller è connesso a entrambi i connettori. Il segnale RX viene inviato tramite diodo-OR D2-D12. Siccome il software non invia comandi al PMS nella versione corrente del firmware, il resistore R16 (0 Ohm) non viene montato. Per il sensore SHT20/21 la connessione I2C viene realizzata tramite simulazione del software, attraverso la porta B.0, la porta B.1 senza utilizzare l'I2C interno del PIC (Peripheral Interface Controller) (che viene usato per il display).

L'LCD utilizzato in questo progetto, un Eastrising Serial COG 8x2 LCD Module I2C Character Display [7] ha un'interfaccia I2C ed è connesso attraverso U3. Il caricabatteria per batterie al litio è un LTC4054 (o l'equivalente EUP8054, U4). Può essere alimentato sia tramite USB (J2) oppure tramite un pannello solare esterno connesso a J4. La corrente è limitata dai due resistori R19-R20 a 400 mA. Il LED D4 ha la funzione di indicare quando la batteria è in carica ed è posizionato vicino al connettore USB. Il connettore J4 è utilizzato per connettere il pannello solare a 5 V, il quale ricarica la batteria tramite diodo Schottky D7. I 5 LED costituenti il grafico a barre (da D8 a D11 e D13) vengono controllati dal controller PIC. I resistori per la limitazione della corrente presenti in ogni LED dipendono dal tipo di LED utilizzato (a bassa potenza o meno) e dalla tensione diretta di ogni LED a seconda del suo colore. Il LED D1 (rosso) si accende quando il convertitore DC-DC e il sensore di particelle sono accesi.

Per il display, i condensatori C10 e C11 possono avere una capacità che spazia da 1 μF a 2.2 μF, versione a 10 V. La retroilluminazione del display non viene utilizzata (e può perciò essere rimossa prima della fase di montaggio). Questa è fissata sul circuito stampato con nastro biadesivo. È altamente raccomandabile l'acquisto del display munito dell'apposito connettore. La luminosità del display per le modalità diurna e notturna viene rilevata da una fotoresistenza (C1) posizionata sul pannello frontale ed è connessa all'ingresso analogico AN0 del microcontroller.

Figura 1: L'hardware del display PM2.5

Assemblaggio del PCB

Schema elettrico e PCB sono stati realizzati utilizzando il software CAD Novarm's DipTrace, i file di progettazione possono essere scaricati dalla pagina di progetto di Elektor Labs al link [9]. Tutti i componenti eccetto i LED sono SMD. La fase più complessa riguarda la saldatura del convertitore DC-DC, che si può eseguire utilizzando pasta per saldatura e una stazione saldante ad aria calda. Data la compattezza della custodia, risulta piuttosto difficile montare i connettori standard al fine di connettere i due sensori. È quindi preferibile saldare i fili direttamente sul circuito. Solo la batteria e il display utilizzano il connettore.

Ci sono due soluzioni per la programmazione del microcontroller: si può connettere un PicKit3 a J7, oppure tramite il connettore seriale condiviso con il sensore PMS7003. In quest'ultimo caso, il microcontroller deve essere programmato con un bootloader prima della saldatura e il PMS7003 deve essere disconnesso ogniqualvolta il microprocessore (uC) venga riprogrammato. Io utilizzo sempre il bootloader "Tiny bootloader", che può essere trovato all'URL [6]. È necessario che la versione integrata in PIC abbia i giusti valori per il watchdog (in questo caso 256 ms) e la sorgente va con esso ricompilata.

.asm e .hex di questo bootloader per il PIC18F2520 sono inclusi nel download del software sulla pagina di progetto di Elektor Labs [9].

Software

Il software viene sviluppato in C con una versione più vecchia del compiler MikroC. Può in seguito essere trasferito alla versione più recente, MikroC Pro, ma io personalmente non l'ho provato. Sorgente e file HEX possono essere scaricati sulla pagina di progetto di Elektor Labs [9].

Il firmware è piuttosto semplice:

> Init

> Infinite loop con button test

> Visualizzazione degli schermi, livello dei LED (a seconda della rilevazione della luminosità giorno/notte)

> Ogni xx minuti, accendere il convertitore DC-DC a 5 V per il sensore di particelle. Attendere 30 secondi, dopodiché il valore PM2.5 è leggibile sullo schermo e il convertitore DC-DC si spegne

> Ogni ora un calcolo del valore medio

> Archiviazione di tale valore in una tabella rappresentante la media mobile costituita da 24 posizioni (rappresentanti 24 h)

> Calcolo dell'IQA (media mobile su 24 h) oppure NQI (media mobile ponderata sui dati delle ultime 12 h)

La funzione calculation_aqi() calcola il valore dell'indice di qualità dell'aria seguendo il principio della media semplice sui dati raccolti in 24 h. Una tabella contiene gli ultimi 24 valori e così semplicemente viene calcolata la media. La funzione calculation_nqi() calcola la media ponderata dell'indice di qualità dell'aria. Per la formula pratica consultare il punto [3] nelle referenze. La conversione di tali valori in indici (0-500) viene effettuata dalla funzione conversion_aqi() secondo la formula indicata nel documento [1] per gli USA.

Il loop principale del software può essere terminato tramite l'istruzione "sleep". Il processore si riattiva quando viene innescato il prossimo watchdog, ricordando che l'intervallo di watchdog deve essere settato su 256 ms (nel caso del PIC18F2520 questo passaggio va eseguito nel momento della programmazione del microcontroller). Questo intervallo è abbastanza breve per non mancare di premere il tasto al momento giusto.

Sarebbe meglio disporre di un lasso di tempo maggiore, se il consumo di corrente non fosse un problema, ma in questo caso sarebbe più probabile commettere l'errore e non premere il pulsante al momento giusto. Il software funziona anche senza il sensore di temperatura/umidità ma, naturalmente, in loro assenza il display mostrerà valori non validi per questi due fattori.

Custodia

La custodia è stata progettata in ThinkerCad e stampata con stampante 3D. È una custodia semplice, con aperture per il sensore SHT e per il sensore PMS7003 poste sulla parte superiore, una per l'ingresso dell'aria, una per l'uscita della stessa. La versione più recente del progetto può essere scaricata [4]. È stato anche sviluppato un supporto per la cella solare. Questo è collocato nella parte posteriore della custodia, fissato con dei piccoli ganci [5]. L'hardware compatto a batterie funziona davvero bene, ma il design può sempre essere perfezionato e migliorato. Per esempio, lo schema e il PCB dispongono già di un connettore [J6] per un LCD grafico a bassa potenza di 128x64 px [8], ma questo non è né testato né supportato nella versione attuale del firmware, quindi J6 e tutti i condensatori ad esso vicini nello schema elettrico possono tranquillamente venire omessi. Sfortunatamente, l'inquinamento dell'aria è un problema in crescendo che non riguarda esclusivamente le metropoli asiatiche. Possedere un display PM2.5 per il monitoraggio della qualità dell'aria può rivelarsi molto utile, ma per essere onesti fino in fondo: è davvero triste constatare che ne abbiamo bisogno.

Operazioni

Tenere il pulsante VAL premuto a lungo (S6) per accedere al menù di configurazione. Ciò consente all'utente di:

> Modificare il lasso temporale della misurazione (10 min-60 min) utilizzando i pulsanti + e -, per poi confermare le modifiche premendo VAL

> Attivare i LED del display durante le ore notturne (si/no)

> Selezionare che tipo di valori saranno visualizzati sul display a LED (ultima misurazione, AQI/NQI, media dell'ultima ora)

> Selezionare l'indice da visualizzare (AQI/NQI)

Premere il pulsante VAL vi permetterà di consultare i diversi schermi disponibili. Il carattere precedente il valore specifico sullo schermo indica che tipo di valore viene visualizzato:

L: Ultima misurazione, ossia la più recente

H: La media dell'ora corrente

Q: Qualità, Indice di Qualità dell'Aria, IQA o NQI (a seconda delle impostazioni di menù)

T: Temperatura (in centigradi)

H: Umidità (in %)

I: Istantaneo, il display si aggiorna ogni secondo

Il grafico a barre a LED mostrerà il valore specificato nel menù, eccetto per la modalità I (valore istantaneo). In questo caso, il grafico a barre mostra l'indice dell'ultimo valore rilevato dal sensore, che viene aggiornato ogni secondo. Il valore istantaneo mostra, sulla seconda linea dello schermo, il valore corrispondente al numero di particelle rilevate dal sensore e l'indice di calcolo della qualità dell'aria preceduto dalla lettera Q. Un display mostra anche i valori minimi e massimi dell'indice per il lasso di tempo corrispondente alle ultime 24 h.

Riferimenti

[1] Air quality index: https://en.wikipedia.org/wiki/Air_quality_index

[2] Recalculation of the air quality index (Nowcast): https://en.wikipedia.org/wiki/NowCast_(air_quality_index)

[3] Practical formula for calculating the NQI: www.epa.gov/airnow/faq/Nowcast-formula.pptx

[4] Enclosure: www.tinkercad.com/things/gznm3a4WifP-new-boitier-dust-11

[5] Solar panel bracket: www.tinkercad.com/things/b3mohI2DzIa-copy-of-copy-of-boitier-dust-6

[6] PIC bootloader: www.etc.ugal.ro/cchiculita/software/picbootloader.htm

[7] Alphanumeric display: www.buydisplay.com/character-display/character-display-panel?interface=461&resolution=135

[8] Graphic display: www.buydisplay.com/1-4-inch-graphic-128x64-lcd-module-serial-spi-st7565-black-on-white

[9] This project’s Elektor Labs page: www.elektormagazine.com/labs/portable-display-pm25-1-1

[10] PMS7003 datasheet: www.pdf-archive.com/2017/04/12/plantower-pms-7003-sensor-data-sheet/plantower-pms-7003-sensor-data-sheet.pdf

WEB LINK

ARTICOLO ORIGINALE IN INGLESE AL LINK: Portable, Stand-Alone Air Quality Display for 2.5 µm Particles | Elektor Magazine

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend