Arduino e il sensore di temperatura e umidità DHT11

La volta precedente ho condiviso i primi passi con Arduino, ora provo a leggere i dati di un sensore DHT11 da Arduino. Il sensore ha tre piedini, due per l’alimentazione e uno per leggere i dati, esistono versioni con quattro piedini in cui uno non è utilizzato. Verifica che la disposizione dei pin del sensore che hai comprato sia quella standard altrimenti rischi di bruciarlo.

I dati che che il Dht11 invia sono un treno di impulsi di 40 bit, per leggere questa informazione bisogna mandare un impulso dai 20 a 40 microsecondi sul piedino dei dati e poi  analizzando i tempi dei cambi di livello da alto a basso dello stesso piedino ricostruire i bit. Oppure senza preoccuparsi di scrivere codice per queste istruzioni utilizzare una libreria già pronta. Arduino ha ormai migliaia di librerie pronte basta solo installarle e utilizzarle nel codice.

Vediamo i dettagli

arduino carica libreria da zip

Una libreria è un insieme di funzioni già pronte all’utilizzo e già collaudate(è difficile scrivere del codice senza commettere errori), quella che ci serve puoi scaricarla cliccando qui e salvando il file zip in una cartella, possibilmente una cartella dedicata alle librerie per Arduino, giusto per mantenere un pò di ordine. Avvia l’IDE di Arduino e nel menù clicca su Sketch/#include libreria/aggiungi libreria da file .ZIP e punta alla cartella dove hai salvato la libreria e selezionala; così la libreria sarà aggiunta a quelle già presenti nell’IDE e utilizzabile semplicemente aggiungendo la riga #include <dht11.h> seguita dalla riga DHT11 sensore prima della sezione SETUP; la prima riga presenta la libreria al programma(il file .H è l’header cioè intestazione) mentre la seconda riga assegna all’oggetto dht11 il nome sensore, naturalmente poteva anche essere un’altro nome. Fate sempre attenzione alle maiuscole e minuscole, per Arduino  sensore e Sensore non sono uguali.

Passiamo ora al collegamento fisico, il sensore in mio possesso ha i nomi dei piedini incisi quindi è facile identificarli, ho collegato il primo piedino da sinistra con un filo nero ad un piedino GND di Arduino, il secondo piedino al piedino 7 con un filo colorato e il terzo con un filo rosso al piedino 5V.

Vediamo il programma

prima versione del programma per leggere dht11

Ritornando al programma, e inserisci le istruzioni per la lettura del sensore, naturalmente andranno inseriamo nel LOOP: sensore.read(7); comprensivo del ; che deve sempre terminare ogni istruzione di Arduino; stiamo dicendo di leggere(read) il sensore che sta sul piedino 7; a questo punto se non troviamo un modo per conoscere l’informazione letta non sapremo se tutto è andato bene e qui ci viene in aiuto la comunicazione seriale che avviene tramite la porta usb;  tramite questa porta seriale possiamo scrivere verso Arduino o riceverne i dati.

Come prima cosa nella sezione SETUP bisogna indicare la velocità di comunicazione con questa porta e lo facciamo con il comando Serial.begin(9600); poi inseriamo dopo il comando di lettura del sensore la riga Serial.print(sensore.humidity); per comunicarci il valore letto di umidità e la riga Serial.print(sensore.temperature); per la temperatura. Aggiungiamo inoltre l’istruzione delay(1000); per far fare una pausa ad Arduino prima di ricominciare il ciclo; il parametro dato al comando delay, in questo caso 1000, sono i millisecondi che il programma deve attendere prima di procedere con l’istruzione successiva.

versione due del programma per leggere dht11

Facciamo la prova

Carica lo Sketch su Arduino e per vedere le comunicazioni apri il monitor seriale dal menù strumenti. I dati si vedono ma che pasticcio, difficile leggerli così; per migliorare la lettura inseriamo fra le due istruzioni di print la riga Serial.print(” “); che separa con uno spazio (se volete mette un trattino) la temperatura dall’umidità e trasformiamo l’istruzione print della temperatura in println (print line new) che porta la posizione di scrittura al rigo successivo. Ricarica lo sketch… va un po meglio vero?

Se vuoi  le specifiche tecniche del DHT11(datasheet) le trovi qui.

Se vuoi avere maggiori informazioni sulle librerie per Arduino le trovi qui.

Maurizio

Lascia un commento