Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS






 




Pagina principale per Raspberry



Informazioni di base




La basetta sperimentale (BDS)


Applicazioni



Librerie e programmi
  • La gestione delle librerie

  • Programmi applicativi
    • Protocollo_I2C
    • I2C_BME280
    • I2C_BME680
    • I2C_ Display_LCD_1602
    • I2C_Display_SSD1306
    • I2C_SGP30-SGP40
    • SPI_RFID_RC522
    • One-wire_18B20
    • DHT11/DHT22
    • Motore_elettrico
    • Servomotore
    • Motore a passo
    • Encoder_Joystick
    • Pulsanti/piccoli_sensori
    • Led
    • Telecamera_OpenCV
    • Gestione_immagini
    • Ingressi_Analogici
    • Display: LCD1602
    • Display: SSD1306 Oled
    • Display: ST7735
    • Ingressi analogici
    • Programmi vari














 








 
















Raspberry PI 3/4/5
Programmi per BME680

680
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
air
Questa è la tabella offerta dalla Bosh (produttore del sensore) per la valutazione della 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

Uno dei problemi che è necessario affrontare rapidamente è quello di connettersi tra il proprio computer e il Raspberry.

1: trasferimento di file: hai scaricato il programma che desideri dal Web sul tuo computer,
il metodo più semplice per portarlo sul Raspberry (ma non certo il più elegante) è caricarlo su di una chiavetta e poi trasferirlo sul microcomputer.
Un altro sistema più sofisticato consiste nell'utilizzare il programma di trasferimento FTP "Filezilla", ma questo richiede un minimo di configurazione. Per informazioni precise, vedi questo articolo presente su "Randomnerdstutorial".

2: desktop remoto: può essere molto comodo poter gestire il Raspberry dal proprio computer, perchè evita l'uso di un uteriore monitor, tastiera e stampante. Per effettuare il collegamento VLC, vedi questo esauriente articolo su "Randomnerdstutorial".





La creazione dell'ambiente virtuale

Ipotizziamo che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocaretlla "BME680" in cui creeremo l'ambiente virtuale (che chiameremo "280"), le librerie necessarie e i programmi.
Nota: naturalmente i nomi dati alle sottocartelle possono essere variati a piacere. Postulando che si siano create le cartelle indicate, si può iniziare con la programmazione.
Aprire un terminale (la quarta icona in alto a destra) term e digitare quanto segue:

680

si è digitato l'indirizzo della proppria cartella (bme680) e si è entrati all'inteno di essa.
Ora è necessario creare l'ambiente virtuale (virtual environment) che nomineremo "680".
 a1
Questo comando creerà il nostro ambiente virtuale. sarà necessario qualche secondo.
a2

questo è il comando per attivare l'ambiente virtuale. quando sarà attivo, si vedrà tra parentesi alla sinistra della linea di comando.
Ora che l'ambiente virtuale è attivo, possiamo installare al suo interno le librerie necessarie. La prima è "Adafruit_CircuitPython_BME680". Ecco il comando necessario:
a3

a4

e dopo alcuni secondi apparirà:
a questo punto si può installare il nostro programma!

Per lanciare il terzo programma, è necessario caricare una ulteriore libreria, "Flask", con il seguente comando:
a7
La libreria (e le sue dipendenze!) sono state installate con successo!
a8
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!

a6
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.


Quando hai caricato il programma nella cartella indicata, lo puoi visualizzare con il programma "Geany" o "Thonny", entrambi presenti di default sul tuo Raspberry.
geany

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:


b1

per lanciare un programma, digitare "python" + il nome del programma in oggetto.

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:

b2

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.

c1

  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
c2
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:
c5
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).
c4
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Ω

c3

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.

Con questo terzo programma si fa un piccolo salto di livello: si passa dalla visualizzazione (o dal salvataggio di dati) all'interno della memoria delm Raspberry, alla visualizzazione sul proprio browser, sempre che sia sulla stessa rete WiFi.
Affinchè questo programma funzioni, sarà necessario installare le seguenti librerie aggiuntive:
- Flask, Board, Adafruit_blinka
Vedi il paragrafo dedicato all'ambiente virtuale.

Per lanciare il programma, "bme680_webs.py":
c6

Quando sarà stato caricato in memoria, appariranno una serie di dati:
c7
Nel riquadro rosso è inserito l'indirizzo el Raspberry, da inserire nel proprio browser (http://192.168.1.169), seguito dalla porta (:5000). Naturalmente l'indirizzo tcp/ip che vedrai dipende da quello che il tuo router ha attribuito al Raspberry.

Ed ecco il risultato:
c8
Direi interessante! Piccola nota: ho evidenziato in alto l'icona del cerchio, che serve per aggiornare i dati visualizzati, perchè non avviene automaticamente.

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 programmale informazioni relative al primo programma.


Nota: il programma originale da cui ho tratto informazione era per BME680. Ecco il link:
https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas.pdf?timestamp=1576067576






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.

5v

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

6v

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.


Attenzione: quando ai relè si collegano degli apparecchi da allacciare alla rete elettrica a 220v, si corrono gravi pericoli, anche mortali! In questi casi rivolgersi sempre a personale esperto e qualificato!




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"











Per contatti: etdiy@centroanahata.it