L'umidità e la temperatura sono parametri comuni per misurare le condizioni ambientali. In questo progetto basato su Arduino misureremo la temperatura e l'umidità dell'ambiente e le visualizzeremo su uno schermo LCD 16x2. Un sensore combinato di temperatura e umidità DHT11 viene utilizzato con Arduino uno per sviluppare questo termometro in scala Celsius e un progetto di misurazione dell'umidità su scala percentuale. In uno dei miei progetti precedenti, ho anche sviluppato un termometro digitale utilizzando il sensore di temperatura LM35.
Questo progetto è composto da tre sezioni: una rileva l'umidità e la temperatura utilizzando il sensore di umidità e temperatura DHT11. La seconda sezione legge l'uscita del modulo DHTsensor ed estrae i valori di temperatura e umidità in un numero adeguato in percentuale e scala Celsius. E la terza parte del sistema visualizza l'umidità e la temperatura sul display LCD.
Il funzionamento di questo progetto si basa sulla comunicazione seriale a filo singolo. Prima arduino invia un segnale di avvio al modulo DHT e poi DHT fornisce un segnale di risposta contenente i dati di temperatura e umidità. Arduino raccoglie ed estrae in due parti una è l'umidità e la seconda è la temperatura e poi le invia a 16x2 LCD.
Qui in questo progetto abbiamo utilizzato un modulo sensore chiamato DHT11. Questo modulo è dotato di un complesso di umidità e temperatura con un'uscita del segnale digitale calibrato significa che il modulo sensore DHT11 è un modulo combinato per il rilevamento di umidità e temperatura che fornisce un segnale di uscita digitale calibrato. DHT11 ci fornisce valori molto precisi di umidità e temperatura e garantisce alta affidabilità e stabilità a lungo termine. Questo sensore ha un componente di misurazione dell'umidità di tipo resistivo e un componente di misurazione della temperatura di tipo NTC con un microcontrollore a 8 bit integrato che ha una risposta rapida ed economica e disponibile in un pacchetto a fila singola a 4 pin.
Il modulo DHT11 funziona su comunicazione seriale, ovvero comunicazione a filo singolo. Questo modulo invia i dati sotto forma di treno di impulsi di un periodo di tempo specifico. Prima di inviare i dati ad arduino è necessario un comando di inizializzazione con un ritardo di tempo. E il tempo dell'intero processo è di circa 4 ms. Una trasmissione dati completa è di 40 bit e il formato dei dati di questo processo è dato di seguito:
Dati RH integrali a 8 bit + dati RH decimali a 8 bit + dati T integrali a 8 bit + dati T decimali a 8 bit + checksum a 8 bit.
Processo completo
Prima di tutto arduino invia un segnale di avvio da alto a basso a DHT11 con un ritardo di 18µs per garantire il rilevamento di DHT. E poi arduino richiama la linea dati e aspetta 20-40µs per la risposta di DHT. Una volta che DHT rileva il segnale di avvio, invierà un segnale di risposta a basso voltaggio ad arduino con un ritardo di circa 80µs. E poi il controller DHT richiama la linea dati e la mantiene per 80µs per l'organizzazione dell'invio dei dati da parte di DHT.
Quando il bus dati è a basso livello di tensione, significa che DHT11 sta inviando il segnale di risposta. Al termine, DHT esegue nuovamente il pull-up della linea dati per 80 µs per la preparazione della trasmissione dei dati.
Il formato dei dati che viene inviato da DHT ad arduino per ogni bit inizia con il livello di bassa tensione di 50 µs e la lunghezza del segnale del livello di alta tensione determina se il bit di dati è "0" o "1".
Una cosa importante è assicurarsi del valore del resistore di pull-up perché se stiamo posizionando il sensore DHT a una distanza <20 metri, si consiglia un resistore di pull-up da 5k. Se si posiziona DHT a una distanza maggiore di 20 metri, utilizzare un resistore di pull up di valore appropriato.
Schema del circuito e spiegazione
Un display a cristalli liquidi viene utilizzato per visualizzare la temperatura e l'umidità che è direttamente collegato ad arduino in modalità a 4 bit. I pin dell'LCD, ovvero RS, EN, D4, D5, D6 e D7, sono collegati al pin digitale arduino numero 2, 3, 4, 5, 6 e 7. E un modulo sensore DHT11 è anche collegato al pin digitale 12 di arduino con un Resistenza di pull-up 5k.
Descrizione della programmazione
Nella programmazione, utilizzeremo librerie predefinite per il sensore DHT11 e il modulo display LCD.
Quindi abbiamo definito i pin per il sensore LCD e DHT e inizializzato tutte le cose nella configurazione. Quindi in un loop utilizzando la funzione dht legge il sensore DHT e quindi utilizzando alcune funzioni dht estraiamo umidità e temperatura e le visualizziamo su LCD.
Qui il simbolo del grado viene creato utilizzando il metodo del carattere personalizzato.