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 BME280

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 BME280, che permette di creare una piccola stazione meteorologica: infatti registra con precisione la temperatura (in gradi Celsius e Farheneith), l'umidità, la pressione - e con una approssimazione abbastanza inaffidabile - l'altezza sul livello del mare, ma in effetti questa è un'informazione opzionale.


280
il piccolo sensore BME280








BME280 o BMP280?
mp
I moduli BME280 (a sinistra) e BMP280 (a destra), fortemente ingranditi.

I moduli con i sensori BMP280 e BME280 sono estremamente simili, e possono essere facilmente confusi, anche in fase di acquisto, poichè certi siti, come per esempio Aliexpress, non sono molto chiari nei codici e nella descrizione degli articoli. Perciò bisogna stare un poco attenti.
Ricordo che BME280 misura la temperatura, pressione e umidità; mentre BMP280 misura solamente temperatura e pressione. Essi richiedono librerie differenti.
Si possono riconoscere guardando (meglio con una lente) i sensori. Quello di BME280 è leggermente più grande e quadtato; quello di BMP280 è più piccolo e bombato.






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

Ipotizziamco che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocaretlla "BME280" 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 quatra icona in alto a destra) term e digitare quanto segue:

1a

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

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 è attino, possiamo installare al suo interno le librerie necessarie. La prima è "RPI.BME280". Ecco il comando necessario:
4a

5a


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



Per lanciare il terzo programma, "bme280_webs.py", è necessario installare alche le seguenti librerie nell'ambiente virtuale:
la prima è "Flask":
1c
La libreria (insieme alle sue dipendenze) è stata salvata.
2c

La seconda necessaria è "Board":
4c
Anche questa libreria è stata salvata con successo.
5c

...e infine "Adafruit-blinka":
6c
Salvata anche la terza, ch è piuttosto corposa!

7c

Per il programma bme280_temp.py è necessaria una ulteriore libreria: gpiozero
z1
z2



Come collegare il sensore BME280 alla basetta (BDS)
Il sensore BME280 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.
E' sempre necessario fare molta attenzione alla giusta sequenza di collegamento, per evitare di danneggiare il sensore o addirittura il Raspberry!

i2c
La connessione del sensore sulla basetta su I2C2



Programmi per BME280 presenti in altre pagine

E ' possibile trovare anche altri programmi per BME280 in altre pagine, perchè abbinati ad altri moduli, come per esempio un display.

Clicca qui per programmi relativi a BME280 presenti nella pagina del display SSD1306

Clicca qui per programmi con BME280 con il sensore di qualità dell'aria SGP30.
Clicca qui per programmi con BME280 con Telegram



Primo programma: visualizzare i dati della stazione meteorologica sul terminale

Dopo aver creato e attivato l'ambiente virtuale e la libreria RPI.280, potremmo salvare il nostro primo programma, nella cartella "bme280", che con con grande fantasia è stato chiamato "bme280_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  "bme280"; 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/
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:
6a
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:
7a
Il programma continuerà ad aggiornare i dati fino a quando non si premeranno contemporaneamente i tasti
"Ctrl" + "C"




Secondo programma: visualizzazione e salvataggio dei dati della stazione meteo
Il secondo programma presentato, bme280_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.

1b
  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
2b
ed ecco un estratto dei dati salvati nel file di testo "sensor_readings_bme280.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:
3b
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).
4b
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.

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/



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, "bme280_webs.py":
8c

Quando sarà stato caricato in memoria, appariranno una serie di dati:
9c
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:
10c
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
Le uniche variazioni sono quelle relative al sensore e al colore dei dati visualizzati sul browser.






Il quarto programma: la gestione di un condizionatore/pompa di calore

Questo programma può essere piuttosto interessante: infatti permette di controllare, in modo del tutto automatico, un condizionatore.
Immaginiamo di possedere un condizionatore con tre funzioni: condizionatore, deumidificatore, pompa di calore.
E' necessario inserire nel programma tre 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%.

d6

Naturalmente i valori impostati possono essere variati a piacere.
Il programma funziona nel modo seguente:
- se la temperatura è maggiore di tmax, si accende il condizionatore, attivando il relè su DG1 e il led rosso;

- se la temperatura è minore di tmin, si accende la pompa di calore, attivando il relè su DG2 e il led blu;
- se l'umidità è maggiore a hmax, si accende il deumidificatore, attivando il relè su DG3 e il led giallo;
- se la temperuatura è compresa tra tmin e tmax, e l'umidità inferiore a hmax, si accende semplicemente il led verde.
Nota 1: il deumidificatore si accende solamente se non è attivato il condizionatore o la pompa di calore, perchè non è possibile utilizzare due funzioni contemporaneamente, oltre che del tutto inutile. Una linea di programme evita questo problema.


Saranno inseriti i seguenti moduli:
- un sensore BME280 sul connettore I2C2;
- un relè (RL1) KY-019 - HW-482 sul connettore DG1 e un led rosso su Led1 - GPIO19;
- un relè (RL2) KY-019 - HW-482 sul connettore DG2 e un led blu su Led2 - GPIO18;
- un relè (RL3) KY-019 - HW-482 sul connettore DG3 e un led giallo su Led3 - GPIO21;
- un led verde su Led4 - GPIO12;
- un led bianco su Led5 - GPIO5.

b2801

Nota 2: 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 3: 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.

Se il proprio condizionatore/pompa di calore può essere controllato dall'esterno (in genere è prevista una morsettiere per il controllo attraverso dei relè),
- collegare l'uscita del relè presente su DG1 alla funzione condizionatore;
- collegare l'uscita del relè presente su DG2 alla funzione pompa di calore;
- collegare l'uscita del relè presente su DG3 alla funzione deumidificatore.


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 file in formato ".zip"
Clicca qui per visualizzare il file.

Dopo aver scaricato il programma nella cartella selezionata (nel nostro caso, /Desktop/Projects/dht11), scompattare il programma dht_temp.py e lanciarlo con il seguente comando: "python dht_temp.py".

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.








Per contatti: etdiy@centroanahata.it

 
















Salvata anche la terza!