![]() Il sensore BME680, leggermente ingrandito |
Se si
utilizza uan delle ultime versioni del sistema operativo
di Raspberry, è necessario creare un ambiente virtuale in
cui installare sia le librerie richieste che i programmi
per il sensore BME680, che permette di creare una piccola
stazione meteorologica: infatti registra con precisione la
temperatura (in gradi Celsius e Farheneith), l'umidità, la
pressione e la qualità dell'aria, oltre a una
valutazione, abbastanza sommaria) dell'altezza sul livello
del mare. Per questo motivo, lo si potrebbe definire il "fratello maggiore" del BME280. |
| |
|
Tabella per la qualità dell'aria |
![]() Le misurazioni però vengono effettuate in Ohm (Ω = valore della resistenza elettrica) e non ho trovato una tabella comparatrice tra i i valori in Ohm e IAQ. Su alcuni siti ho però trovato che la valutazione dei gas con una resistenza superiore a 50.000 Ω uno, a 100.000 Ω l'altro, indichino che l'aria sia di buona qualità. Per essere prudenti, sempre meglio mantenersi prossimi al valore più alto (100.000 Ω). Attenzione: affinchè le misurazioni siano precise, è necessario in un primo tempo lasciare costantemente attivo il BME680 per 48 ore; poi nell'uso normale, attendere circa 30 minuti affinchè si assesti, prima di registrare le misurazioni. |
| |
| |
| Metodi di collegamento tra il tuo computer e il Raspberry |
|
La creazione dell'ambiente
virtuale
|
|
Per lanciare il terzo programma, è necessario caricare una ulteriore libreria, "Flask", con il seguente comando: ![]() La libreria (e le sue dipendenze!) sono state installate con successo! ![]() Ora è possibile lanciare il programma. Per il quarto programma è necessaria la libreria GPIOZERO, con il seguente comando: "pip3 install GPIOZERO". |
| Come collegare il sensore BME280 alla basetta (BDS) |
Il sensore BME680 usa il protocollo I2C. Il sistema operativo del Raspberry usa di default il GPIO2 per SDA e GPIO3 per SCL per I2C. Sulla BDS ci sono quattro connettori che permettono di usare questo protocollo; semplicemente hanno una diversa disposizione dei piedini, in modo da poter connettere il maggior numero possibile di periferiche. In questo caso BME280 è stato connesso sul connettore I2C2. Ricordarsi di scollegare i Jumper su JP7 e JP8, perché altrimenti potrebbero dare dei problemi di funzionamento del sensore- E' sempre necessario fare molta attenzione alla giusta sequenza di collegamento, per evitare di danneggiare il sensore o addirittura il Raspberry! |
![]() Il sensore BME680 deve essere collegato sul connettore I2C2. I jumpers J17 e J18 invece devono essere scollegati! |
| Programmi per BME680 presenti in altre pagine |
| E '
possibile trovare anche altri programmi per BME680 in
altre pagine, perchè abbinati ad altri moduli, come per
esempio un display. Clicca qui per programmi relativi a BME680 presenti nella pagina del display SSD1306 Clicca qui per programmi relativi a BME680 presenti nella pagina di Thingspeak. |
| Primo
programma: visualizzare i dati della stazione
meteorologica sul terminale |
Dopo aver creato e attivato l'ambiente virtuale e la libreria Adafruit_CircuitPython_BME680, potremmo salvare il nostro primo programma, nella cartella "bme680", che con con grande fantasia è stato chiamato "bme680_1.py". Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "bme680"; altrimenti leggi il paragrafo relativo allo scambio dei dati.
Per informazioni sul programma, puoi visualizzare tutte le istruzioni sempre su "Randomnerdstutorial" (siano benedetti!), al seguente indirizzo: https://randomnerdtutorials.com/raspberry-pi-bme280-python/ Il programma presentato era per bme280; ho semplicemente sostituito le informazioni relative al sensore. Attenzione: nell'articolo non è menzionato la creazione dell'ambiente virtuale, necessari per le ultime versioni del sistema operativo! Dopo aver caricato il programma, lanciarlo con il seguente comando:
Il caricamento di un programma sul Raspberry è quasi istantaneo, e mi ha sorpreso dopo i tempi di attesa di vari secondi per effettuare la stessa operazione su un Arduino o su di un ESP32! Ed ecco il risultato dei nostri sforzi: ![]() Nota: in base alla lettura della resistenza misurata per i gas, l'aria si considera pulita se la resistenza è superiore a 50.KΩ/100KΩ; per valori inferiori l'aria è viziata o addirittura inquinata. Nel dubbio, considerare l'aria pura per valori vicini o superiori ai 100KΩ |
|
|
| Secondo programma: visualizzazione e salvataggio dei dati della stazione meteo |
Il secondo programma presentato, bme680_data.py, è simile al precedente, però con una importante aggiunta: salva in un file i risultati delle registraioni. Pertanto lo sketch può essere lanciato e poi lasciato girare non presidiato; quando si desidera vedere l'andamento dei dati, è sufficiente fermare il programma e leggere il file di testo generato. Quando si riattiverà il programma, continuerà a scrivere sullo stesso file. Nel caso esso venga cancellato (o rinominato), ne verrà generato uno nuovo. Naturalmente è sempre possibile leggere i dati in tempo reale sul terminale, come nel programma precedente. ![]() I dati in tempo reale visualizzati sul terminale (ecco le prime tre righe visualizzate) Questo è il file di testo su cui sono stati salvati i dati ![]() ed ecco un estratto dei dati salvati nel file di testo "sensor_readings_bme680.txt". Molto utile, oltre ai dati stessi, la data e l'orario delle registrazioni. Nel programma di testo l'intervallo di registrazione è di 10 secondi. Naturalmente se si desidera effettuare indagini sul lungo periodo, è possibile facilmente variare l'intervallo delle rilevazioni. Aprendo il programma con Geany (o con Thonny) si può facilmente cambiare il nome del file su cui verranno salvate le registrazioni: ![]() Il nome del file è evidenziato nei riquadri verdi. E' necessario cambiarlo in entrambi. E' possibile variare facilmente il periodo di rilevazione dei dati. In Python il tempo è misurato in secondi (mentre in C - programmazione della IDE di Arduino era calcolato in millisecondi). ![]() Come si vede dai dati presenti nel riquadro blu, l'intervallo di registrazione è di 10 secondi. Se si volesse rilevarli ogni 30 minuti, dovremmo scrivere: "time.sleep(1800)"; per un ora "time.sleep(3600)", ecc. Il calcolo dell'altezza sul livello del mare non è molto affidabile, e dipende dalla pressione atmosferica registrata il giorno stesso all'altezza del mare. Si può trovare su un sito specifico, come per esempio https://www.meteo.dfg.unito.it/meteo.php?tabella=ridotta Nel programma viene inserita la pressione atmosferica media (1013,25)sul lidel mare. Sostituirla con quella trovata sul sito per una migliore valutazione della propria altezza. Nota: la qualità dell'aria viene misurata in KΩ (migliaia di Ohm. Considerare l'aria pura per valori vicini o superiori ai 100KΩ ![]() Clicca qui per scaricare il file in formato ".zip". Clicca qui per visualizzare il programma in formato testo. Per le modalità di caricamento del programma nella memoria del Raspberry, vedi il programma precedente. Per informazioni sul programma, puoi visualizzare tutte le istruzioni sempre su "Randomnerdstutorial", al seguente indirizzo: https://randomnerdtutorials.com/raspberry-pi-bme280-data-logger/ Il programma presentato era per bme280; ho semplicemente sostituito le informazioni relative al sensore. Attenzione: nell'articolo non è menzionato la creazione dell'ambiente virtuale, necessari per le ultime versioni del sistema operativo! |
| Terzo programma: visualizzazione dei dati sul proprio browser. |
|
| Il
quarto programma: gestione di un
condizionatore o pompa di calore (e di un purificatore
d'aria) |
Questo programma può essere piuttosto interessante: infatti permette di controllare, in modo del tutto automatico, un condizionatore e un purificatore d'aria. Immaginiamo di possedere un condizionatore con tre funzioni: condizionatore, deumidificatore, pompa di calore. E' necessario inserire nel programma cinque variabili: - tmin: temperatura minima. Nel programma è stata impostata a 18°. - tmax: temperatura massima. Nel programma è stata impostata a 28°. - hmax: umidità massima. Nel programma è stata impostata al 65%. - gqual: qualità dell'aria. Nel programma è stata impostata a 80.000 Ohm. - pmin: pressione atmosferica. Nel programma è stata impostata a 1005 millibar.
Per attuare le informazioni rilevate dal sensore, sono stati inseriti nel programma anche sei variabili relative all'accensione di sei led, e all'attivazione di quattro relè, per gestire il condizionatore e il purificatore d'aria: ledg = LED(12) #led verde. Temperatura e umidità OK. ledr = LED(19) #led rosso. Temperatura alta. Accendere il condizionatore. ledb = LED(18) #led blu. Temperatura bassa. Accendere la pompa di calore ledy = LED(21) #led giallo. Umidità troppo alta. Accedere il deumidificatore. ledp = LED(5) #led bianco. Pressione atmosferica bassa. leda = LED(16) #led arancio. Cattiva qualità dell'aria. Accende il purificatore
Se tutti i parametri sono buoni, si accende un led verde (Led4), ma non si attiva alcun relè. Nel caso di pressione atmosferica bassa, si accende il led bianco (Led5), ma non si intraprende alcuna attività. Perciò si possono attivare quattro relè: - Condizionatore (DG1, GPIO19 - Led1, rosso). Si attiva se la temperauta è troppo alta. - Pompa di calore (DG2, GPIO18 - Led2, blu). Si attiva se la temperauta è troppo bassa. - Deumidificatore (DG3, GPIO21 - Led3, giallo). Il deumidificatore si attiva solamente se non è attivo nè il condizionatore, nè la pompa di calore. - Purificatore d'aria (AD1A, GPIO16 - led su AD1B, arancio). Si attiva se la qualità dell'aria è scarsa. Nota 1: quando si utilizzano dei relè, per evitare danni al Raspberry, è necessario utilizzare l'alimentazione esterna, poccegando un alimentatore e cambiando la posizione dei ponticelli (jumper)V3_SEL e V5_SEL da "INT." a "EXT." Nota 2: al posto di relè singoli, è possibile utilizzare dei relè in batteria, come questi (solo per illustrazione). In questo caso "VCC" andrà collegato a +3v; "GND" a "GND; "R1" a "GPIO19"; "R2" a "GPIO18"; R3 a "GPIO21". "R4" in questo programma non verrà utilizzato.
|
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/ssd280" e lanciarlo con il seguente comando: "python bme280ssd.py" |
|
|