- Panoramica del sensore DHT11:
- Prerequisiti:
- Installazione della libreria LCD Adafruit su Raspberry Pi:
- Installazione della libreria Adafruit DHT11 su Raspberry Pi:
- Schema elettrico:
- Programmazione Python per sensore DHT11:
- Misurazione di umidità e temperatura utilizzando Raspberry Pi:
La temperatura e l'umidità sono i parametri più comuni che vengono monitorati in qualsiasi ambiente. Ci sono un sacco di sensori tra cui scegliere per misurare la temperatura e l'umidità, ma il più utilizzato è il DHT11 grazie al suo intervallo di misurazione e alla precisione decenti. Funziona anche con una comunicazione a pin e quindi è molto facile da interfacciare con microcontrollori o microprocessori. In questo tutorial impareremo come interfacciare il popolare sensore DHT11 con Raspberry Pi e visualizzare il valore di temperatura e umidità su uno schermo LCD 16x2. Lo abbiamo già utilizzato per costruire la stazione meteorologica IoT Raspberry Pi.
Panoramica del sensore DHT11:
Il sensore DHT11 può misurare l'umidità relativa e la temperatura con le seguenti specifiche
Intervallo di temperatura: 0-50 ° C Precisione della temperatura: ± 2 ° C Intervallo di umidità: 20-90% RH Accuratezza dell'umidità: ± 5%
Il sensore DHT11 è disponibile sotto forma di modulo o sotto forma di sensore. In questo tutorial stiamo usando il modulo modulo del sensore, l'unica differenza tra entrambi è che nel modulo modulo il sensore ha un condensatore di filtraggio e un resistore di pull-up collegato al pin di uscita del sensore. Quindi, se stai usando il sensore da solo, assicurati di aggiungere questi due componenti. Impara anche l'interfaccia DHT11 con Arduino.
Come funziona il sensore DHT11:
Il sensore DHT11 viene fornito con un involucro di colore blu o bianco. All'interno di questo involucro abbiamo due componenti importanti che ci aiutano a rilevare l'umidità relativa e la temperatura. Il primo componente è una coppia di elettrodi; la resistenza elettrica tra questi due elettrodi è determinata da un substrato che trattiene l'umidità. Quindi la resistenza misurata è inversamente proporzionale all'umidità relativa dell'ambiente. Maggiore è l'umidità relativa minore sarà il valore di resistenza e viceversa. Notare inoltre che l'umidità relativa è diversa dall'umidità effettiva. L'umidità relativa misura il contenuto di acqua nell'aria rispetto alla temperatura nell'aria.
L'altro componente è un termistore NTC a montaggio superficiale. Il termine NTC sta per coefficiente di temperatura negativo, per l'aumento della temperatura il valore della resistenza diminuirà
Prerequisiti:
Si presume che il tuo Raspberry Pi sia già dotato di un sistema operativo e sia in grado di connettersi a Internet. In caso contrario, segui il tutorial Introduzione a Raspberry Pi prima di procedere.
Si presume inoltre che tu abbia accesso al tuo pi tramite le finestre del terminale o tramite altre applicazioni attraverso le quali puoi scrivere ed eseguire programmi python e utilizzare la finestra del terminale.
Installazione della libreria LCD Adafruit su Raspberry Pi:
Il valore della temperatura e dell'umidità verrà visualizzato su un display LCD 16 * 2. Adafruit ci fornisce una libreria per utilizzare facilmente questo LCD in modalità a 4 bit, quindi aggiungiamolo al nostro Raspberry Pi aprendo la finestra del terminale Pi e seguendo i passaggi seguenti.
Passaggio 1: installa git sul tuo Raspberry Pi utilizzando la riga sottostante. Git ti consente di clonare qualsiasi file di progetto su Github e usarlo sul tuo Raspberry pi. La nostra libreria è su Github, quindi dobbiamo installare git per scaricare quella libreria in pi.
apt-get install git
Passaggio 2: la riga seguente si collega alla pagina GitHub in cui è presente la libreria, basta eseguire la riga per clonare il file di progetto sulla directory home di Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Passaggio 3: utilizzare il comando seguente per cambiare la riga della directory, per entrare nel file di progetto che abbiamo appena scaricato. La riga di comando è fornita di seguito
cd Adafruit_Python_CharLCD
Passaggio 4: All'interno della directory ci sarà un file chiamato setup.py , dobbiamo installarlo, per installare la libreria. Usa il codice seguente per installare la libreria
sudo python setup.py install
Cioè la libreria dovrebbe essere stata installata con successo. Ora allo stesso modo procediamo con l'installazione della libreria DHT, anch'essa di Adafruit.
Installazione della libreria Adafruit DHT11 su Raspberry Pi:
Il sensore DHT11 funziona con il principio del sistema a un filo. Il valore di temperatura e umidità viene rilevato dal sensore e quindi trasmesso tramite il pin di uscita come dati seriali. Possiamo quindi leggere questi dati utilizzando il pin I / O su un MCU / MPU. Per capire come vengono letti questi valori dovresti leggere il datasheet del sensore DHT11, ma per ora per semplificare le cose useremo una libreria per dialogare con il sensore DHT11.
La libreria DHT11 fornita da Adafruit può essere utilizzata anche per DHT11, DHT22 e altri sensori di temperatura a un filo. Anche la procedura per installare la libreria DHT11 è simile a quella seguita per l'installazione della libreria LCD. L'unica riga che cambierebbe è il collegamento della pagina GitHub in cui viene salvata la libreria DHT.
Immettere le quattro righe di comando una per una sul terminale per installare la libreria DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Una volta fatto, avrai entrambe le librerie installate con successo sul nostro Raspberry Pi. Ora possiamo procedere con la connessione hardware.
Schema elettrico:
Di seguito è riportato lo schema elettrico completo che interfaccia DH11 con Raspberry pi, è stato costruito utilizzando Fritzing. Segui i collegamenti e fai il circuito
Sia il sensore LCD che il sensore DHT11 funzionano con alimentazione + 5V, quindi usiamo i pin 5V sul Raspberry Pi per alimentarli entrambi. Un resistore pull up di valore 1k viene utilizzato sul pin di uscita del sensore DHT11, se si utilizza un modulo è possibile evitare questo resistore.
Un potenziometro trimmer di 10k viene aggiunto al perno a V dell'LCD per controllare il livello di contrasto dell'LCD. A parte questo, tutte le connessioni sono piuttosto semplici. Ma prendi nota di quali pin GPIO stai utilizzando per collegare i pin poiché avremo bisogno nel nostro programma. Il grafico sottostante dovrebbe consentire di capire i numeri dei pin GPIO.
Usa lo schema e fai i tuoi collegamenti secondo lo schema del circuito. Ho usato una breadboard e cavi jumper per effettuare i miei collegamenti. Da quando ho usato il modulo DHT11 l'ho collegato direttamente a Raspberry Pi. Il mio hardware aveva questo aspetto qui sotto
Programmazione Python per sensore DHT11:
Dobbiamo scrivere un programma per leggere il valore di temperatura e umidità dal sensore DHT11 e quindi visualizzare lo stesso sul display LCD. Dato che abbiamo scaricato le librerie sia per il sensore LCD che per il sensore DHT11, il codice dovrebbe essere molto semplice. Il programma completo Python si trova alla fine di questa pagina, ma puoi leggere oltre per capire come funziona il programma.
Dobbiamo importare la libreria LCD e la libreria DHT11 nel nostro programma per utilizzare le funzioni ad essa correlate. Poiché li abbiamo già scaricati e installati sul nostro Pi, possiamo semplicemente utilizzare le seguenti righe per importarli. Importiamo anche la libreria del tempo per utilizzare la funzione di ritardo.
import time #import time for creating delay import Adafruit_CharLCD as LCD #Import LCD library import Adafruit_DHT #Import DHT Library for sensor
Successivamente, dobbiamo specificare a quali pin è collegato il sensore e quale tipo di sensore di temperatura viene utilizzato. La variabile sensor_name è assegnata a Adafruit_DHT.DHT11 poiché qui stiamo usando il sensore DHT11. Il pin di uscita del sensore è collegato alla GPIO 17 del Raspberry Pi e quindi assegniamo 17 alla variabile sensor_pin come mostrato di seguito.
sensor_name = Adafruit_DHT.DHT11 # usiamo il sensore DHT11 sensor_pin = 17 # Il sensore è collegato a GPIO17 su Pi
Allo stesso modo, dobbiamo anche definire a quali pin GPIO è collegato l'LCD. Qui stiamo usando l' LCD in modalità 4-bit, quindi avremo quattro pin dati e due pin di controllo da collegare ai pin GPIO del pi. Inoltre, puoi collegare il pin di retroilluminazione a un pin GPIO se desideriamo controllare anche la retroilluminazione. Ma per ora non lo sto usando, quindi gli ho assegnato 0.
lcd_rs = 7 #RS dell'LCD è collegato a GPIO 7 su PI lcd_en = 8 #EN dell'LCD è collegato a GPIO 8 su PI lcd_d4 = 25 # D4 dell'LCD è collegato a GPIO 25 su PI lcd_d5 = 24 # D5 dell'LCD è connesso a GPIO 24 su PI lcd_d6 = 23 # D6 di LCD è connesso a GPIO 23 su PI lcd_d7 = 18 # D7 di LCD è connesso a GPIO 18 su PI lcd_backlight = 0 #LED non è connesso quindi assegniamo a 0
Puoi anche collegare LCD in modalità 8 bit con Raspberry pi ma i pin liberi verranno ridotti.
La libreria LCD di Adafruit che abbiamo scaricato può essere utilizzata per tutti i tipi di display LCD caratteristici. Qui nel nostro progetto stiamo usando un display LCD 16 * 2 quindi stiamo menzionando il numero di righe e colonne a una variabile come mostrato di seguito.
lcd_columns = 16 # per 16 * 2 LCD lcd_rows = 2 # per 16 * 2 LCD
Ora che abbiamo dichiarato i pin LCD e il numero di righe e colonne per il display LCD, possiamo inizializzare il display LCD utilizzando la riga seguente che invia tutte le informazioni richieste alla libreria.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Invia tutti i dettagli dei pin alla libreria
Per avviare il programma, visualizziamo un piccolo messaggio di introduzione utilizzando la funzione lcd.message () e quindi diamo un ritardo di 2 secondi per rendere leggibile il messaggio. Per la stampa sul 2 ° riga di comando \ n può essere utilizzato come illustrato di seguito
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Invia un messaggio introduttivo time.sleep (2) # aspetta per 2 secondi
Infine, all'interno del nostro ciclo while dovremmo leggere il valore di temperatura e umidità dal sensore e visualizzarlo sullo schermo LCD per ogni 2 secondi. Il programma completo all'interno del ciclo while è mostrato di seguito
while 1: #Infinite Loop
umidità, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #leggere dal sensore e salvare i rispettivi valori in temperatura e umidità varibale
lcd.clear () #Cancella lo schermo LCD lcd.message ('Temp =%.1f C'% temperature) # Visualizza il valore della temperatura lcd.message ('\ nHum =%.1f %%'% umidità) #Display il valore di Umidità time.sleep (2) #Attendere 2 sec quindi aggiornare i valori
Possiamo facilmente ottenere il valore di temperatura e umidità dal sensore utilizzando questa singola riga di seguito. Come puoi vedere restituisce due valori che vengono memorizzati nella variabile umidità e temperatura. I sensor_name e sensor_pin dettagli vengono passati come parametri; questi valori sono stati aggiornati all'inizio del programma
umidità, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Per visualizzare il nome di una variabile sullo schermo LCD possiamo usare gli identificatori come & d,% c ecc. Qui poiché stiamo visualizzando un numero in virgola mobile con una sola cifra dopo il punto decimale, usiamo l'identificatore%.1f per visualizzare il valore in la temperatura e l'umidità variabili
lcd .message ('Temp =%.1f C'% temperatura) lcd .message ('\ nHum =%.1f %%'% umidità)
Misurazione di umidità e temperatura utilizzando Raspberry Pi:
Effettuare i collegamenti come da schema elettrico e installare le librerie richieste. Quindi avvia il programma python fornito alla fine di questa pagina. Il display LCD dovrebbe visualizzare un messaggio introduttivo e quindi visualizzare il valore corrente di temperatura e umidità come mostrato nell'immagine sottostante.
Se non trovi nulla visualizzato sul display LCD, controlla se la finestra della shell python mostra errori, se non viene visualizzato alcun errore, controlla ancora una volta le connessioni e regola il potenziometro per variare il livello di contrasto del display LCD e controlla se c'è qualcosa lo schermo.
Spero che tu abbia capito il progetto e ti sia piaciuto realizzarlo, se hai riscontrato problemi nel farlo segnalalo nella sezione commenti o usa il forum per assistenza tecnica. Farò del mio meglio per rispondere a tutti i commenti.
Puoi anche controllare i nostri altri progetti utilizzando DHT11 con altri microcontrollori.