| Il
sensore DHT11 (o DHT22) è usato in moltissimi programmi per
Rasberry, Arduino, ESPxxx, in quanto è molto versatile,
robusto e di un costo veramente modesto. in genere è già montato su di un modulo a tre pin (sigla KY-015 o HW-507), molto utile in quanto non richiede componenti aggiuntivi per essere utilizzato. |
![]() |
| |
|
|
| Come
inserire il sensore sulla BDS |
| In
questo programma il sensore di temperatura e umidità è stato
inserito sul connettore DG3 (GPIO21) della BDS. Fare
attenzione a inserirlo con il giusto ordine di piedini. Il
simbolo "-" del sensore deve essere connesso a "GND" della
basetta; "S" invece a "P21". Un errato collegamento del
sensore alla BDS potrebbe rapidamente danneggiarlo. Nota 1: il "PWE Sel." permette di selezionare la tensione di alimentazione a 3,3v oppure a 5v per entrambi gli zoccoli DG2 e DG3. Selezionando la tensione +5v per questo sensore, potrebbe danneggiare gravemente il Rasberry. Portare molta attenzione a questa scelta. Nota 2: il DHT11/DHT22 potrebbe essere anche collegato indifferentemente sugli zoccoli "DG1" o "DG2". In questo caso però bisogna modificare il programma, inserendo "D19" per "DG1" e "D18" per "DG2" nella riga del programma in cui si determina il GPIO da usare. In caso di necessità (come nel secondo programma) il sensore può essere inserito sul connettore ONE-WIRE (GPIO4) |
![]() Come posizionare il sensore su DG3. ![]() Se si usa DG1, sostituire con "board.D19"; per DG2, digitare "board.D18"; con ONE-WIRE, digitare "board.D4" |
| |
|
|
| DHT11 o DHT22? |
| Spesso si acquista un "DHT11", ma quando lo si testa mostra dei dati sballati. Si può pensare che sia danneggiato. Ma quasi sempre se lo si dichiara come "DHT22", tutto funziona perfettamente! Sulla destra si vedono le righe di programma interessati: è sufficiente scommentare la riga di programma corretta. |
![]() In
questo caso si sta utilizzando un sensore DHT22
|
| |
|
|
| La creazione dell'ambiente virtuale e
l'inserimento delle librerie necessarie |
| Ipotizziamo che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocartella "dht11" in cui creeremo l'ambiente virtuale (che chiameremo "dht"), 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) e digitare quanto segue:cd Desktop/Projects/dht11 per spostarsi nella cartella "dht11; python3 -m venv dht per creare l'ambiente virtuale "dht"; source dht/bin/activate per attivare l'ambiente virtuale: apparirà (dht) all'inizio della nuova riga; python3 -m pip install adafruit-circuitpython-dht per installate la libreria necessaria Ecco ciò che apparirà sul terminale: ![]() Se la libreria sarà stata scaricata correttamente, apparirà alla fine dell'installazione un messaggio simile a questo: ![]() Questa libreria è sufficiente per utilizzare i programmi "dht_1.py" e "dht_data.py". Per utilizzare il terzo programma "dht_temp.py", è necessario scaricare una ulteriore libreria, "gpiozero". Dopo aver attivato l'ambiente virtuale, lanciare il comando: "pip3 install gpiozero": ![]() Se tutto è andato abuon fine, apparirà una scritta simile: ![]() Per poter utilizzare il quarto programma, dht_web.py, è necessario installare due ulteriori librerie: "flask" e "smbus2, mentre non è necessario "gpiozero". L'installazione delle librerie: sul terminale digitare "pip install flask" ![]() e se tutto è andato a buon fine apparirà: ![]() Per installare la libreria smbus2: digitare "pip install smbus2": ![]() se tutto è ok: ![]() |
|
|
|
Altri programmi che usano
il sensore DHT11/DHT22 |
| Il sensore DHT11/DHT22 puo essere presente in pagine di programmi che utilizzano anche altri moduli, come per esempio dei display. Clicca qui per un primo programma con il display SSD1306 OLED. Clicca qui per un secondo programma con il display SSD1306 OLED. Clicca qui per un terzo programma, con il display Led 1602. Clicca qui per i programmi che utilizzano Thingspeak Clicca qui per i programmi che utilizzano Telegram |
|
|
|
|
|
Il primo programma: visualizzazione dei
dati sul terminale |
Il primo programma è molto semplice, in quanto mostra la temperatira (in gradi celsius e Fahrenheit) e l'umidità direttamente sul terminale. E' possibile, a causa della difficoltà di ricezione dei dati, che ogni tanto appaia il messaggio "Checksum did not validate. Try again". Non c'è da preoccuparsi, alle prossime letture tutto funzionerà perfettamente. DHT11 è stato inserito nel connettore DG3. Per spostarlo su di un altro connettore, vedi qui. |
![]() la
visualizzazione dei dati sul terminale.
|
| 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_1.py e lanciarlo con il seguente comando: "python dht_1.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Il
secondo programma: salvataggio dei dati in
un file |
| Questo secondo programma è simile al precedente, in quanto mostra sempre i dati sul terminale. Però è decisamente più utile, in quanto salva i risultati della registrazione su di un file testo. Nel programma di test la lettura dei dati avviene ogni 10 secondi riga 39: "time.sleep(10)"; però se si volesse aumentare i tempi tra una lettura e la successiva, si potrebbe modificare la linea indicata, per esempio"time.sleep(1800)" se si volesse effettuare una lettura ogni 30 minuti, ecc. I dati verranno scritti nel file "sensor_readings.txt". Intervenendo sulle righe 16 e 17, è possibile cambiare il nome del file di dati. |
![]() la
registrazione dei dati sul file
![]() Le
righe in cui variare il nome del file di dati
|
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_data.py e lanciarlo con il seguente comando: "python dht_data.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
|
|
|
Il terzo programma: gestione di un
condizionatore con DHT11 |
| 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%.
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 DHT11/DHT22 sul connettore one_wire (GPIO4); - 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.
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.
|
| 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. |
| |
|
|
| |
| Il
quarto programma: emissione di un segnale sonoro di
allarme |
| In questo programma è inserito anche un buzzer (vedi pagina dedicata) sul connettore DG1 (GPIO19). Il segnale è impostato (a 432 Hz) quando la temperatura supera i 23 gradi. Naturalmente si può variare il controllo a piacere; se si supera una certa temperatura, oppure se si scende oltre una soglia; se fossimo più interessati all'umidità si potrebbe momitorarla, oppure tenere sotto controllo entrambi i paramentri, magari cambiando la frequenza del buzzer per temperatura e umidità. Le righe aggiunte al programma di base sono veramente semplici. |
![]() Le righe relative all'allarme sonoro. |
| 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_buzz.py e lanciarlo con il seguente comando: "python dht_buzz.py". Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
|
|
| La
connessione dei moduli alla BDS |
| Poichè
ci sono molti componenti sulla BDS, ho preferito scattare
una foto con la disposizione dei componenti, evidenziati
da un riquadro giallo.
![]() RL1:
inserito sul connettore DG1; il led rosso inserito su
Led1;
RL2:
inserito sul connettore DG2; il led blu inserito su
Led2;
RL3:
inserito sul connettore DG3; il led giallo inserito su
Led3;
il
sensore DHT11 inserito sul connettore One_wire
il
led verde inserito su Led4.
Per
tutti i componenti fare attenzione a rispettare la
polarità.
Sono
evidenziati anche i selettori "3V_SEL" e "5V_SEL".
Impostarli entrambi su "EXT" e collegare
un
alimentatore esterno. Come si vede, tutto il
progetto è stato realizzato senza usare neppure un
cavo!
Ecco
come apparirebbero le connessioni se si volesse inserire
una batteria di relè su scheda:
![]() Le
connessioni dovranno essere effettute nel modo seguente:
-
VCC della scheda relè su +3,v del connettore "Data" della
BDS;
-
GND della scheda relè su GND del connettore "Data" della
BDS;
- RL1 della scheda relè su GPIO19 del connettore "Data" della BDS (condizionatore); - RL2 della scheda relè su GPIO18 del connettore "Data" della BDS (pompa di calore); - RL3 della scheda relè su GPIO21 del connettore "Data" della BDS (deumidificatore. |
| |
|
|
| Il
quarto progetto: visualizzazione dei
dati su di un browser via rete WiFi |
| Il quarto progetto permette di vedere i dati rilevati dal sensore sul browser del proprio PC, a patto che siano sulla stessa rete WiFi. Nel riquadro appare l'indirizzo di rete da digitare sul browser. |
![]() |
![]() La
visualizzazione dei dati sul proprio browser.
|
Il sensore DHT11 o DHT22 (vedi nel caso come modificare il programma) è stato inserito sul connettore DG1 (GPIO21). Quando è stato lanciato il programma, digitare l'indirizzo indicato nel browser, e appariranno i dati rilevati dal sensore. Purtroppo il programma non aggiorna automaticamente i dati; è necessario cliccare sulla freccina rotante. A causa della lentezza con cui si rilevano i dati da DHT11, qualche volta può appariere sul browser un messaggio di errore. Cliccando sul simbolo di aggiornamento, appariranno i dati appena rilevati. |
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_web.py". Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |