In questo articolo andremo a vedere come misurare la temperatura con Arduino, in particolare andremo ad utilizzare un sensore molto conosciuto e dal costo contenuto chiamato DHT11, che oltre alla lettura della temperatura ci permetterà di misurare anche l’umidità dell’ambiente. Quindi faremo in modo che temperatura e umidità vengano stampate sul monitor seriale.
Cos’è e come funziona il DTH11
Il DHT11, come detto prima, è un sensore capace di misurare sia la temperatura sia l’umidità dell’ambiente che ci circonda. Questo sensore è caratterizzato da un’alta stabilità ed affidabilità, oltre ad essere molto facile da integrare con Arduino: dispone infatti non solo di un’interfaccia seriale a singolo filo ovvero ha bisogno di un solo filo per mandare i dati (oltre a quello dell’alimentazione e della massa), ma ci sono disponibili anche le librerie grazie alle quali la lettura e la successiva visualizzazione delle misurazioni diventa molto semplice.
Questo sensore presenta quindi 3 pin: alimentazione (+5V), GND e DATA che sono rispettivamente il pin dell’alimentazione, quello della massa e quello che manda il segnale alla scheda a cui lo colleghiamo.
NOTA: I PIN possono stare in un ordine diverso rispetto a quelli dell’immagine sotto, quindi è consigliato prima del collegamento controllare la loro disposizione.
Queste invece sono le specifiche elettriche del sensore:
Descrizione |
Condizione |
Minimo |
Tipico |
Massimo |
Unità di misura |
Alimentazione |
DC |
3 |
5 |
5,5 |
V |
Alimentazione di corrente |
Di misura |
0,5 |
|
2,5 |
mA |
Stand-by |
100 |
Null |
150 |
|
uA |
Per quanto riguarda l’acquisto del sensore ci sono molti negozi di elettronica che lo vendono, sia fisici sia su internet. Noi comunque ci siamo affidati a Homotix, un negozio Italiano che vende moltissimi prodotti elettronici per creare progetti, incluso questo sensore che potete acquistare andando in questa pagina.
Componenti necessari
Per fare questo progetto e quindi per misurare la temperatura con Arduino correttamente, avremo bisogno dei seguenti componenti:
- Sensore DHT11
- Arduino (qualsiasi modello va bene, in questa guida utilizzeremo Arduino UNO)
- Resistenza da 4,7 kΏ
- Cavetti per i collegamenti
- Libreria del DHT11 scaricabile da qui
Collegamenti
Il collegamento alla scheda è molto semplice : dobbiamo collegare il pin dell’alimentazione al +5V di Arduino, quello della massa al GND e quello dei dati ad una porta digitale qualunque, in questa guida io utilizzerò la numero 4. Adesso ti starai chiedendo a cosa serve la resistenza, quella è una resistenza di pull-up (qui la pagina di wikipedia). Sotto trovi l’immagine di come devono essere fatti i collegamenti.
In generale l’interfacciamento con i microprocessori è questo:
Programmazione della scheda
Adesso andiamo a vedere il programma che deve essere caricato su Arduino.
ATTENZIONE: ricordati di importare la libreria di cui ho messo il link sopra.
[code lang=”c”]
#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 4
void setup(){
Serial.begin(9600);
Serial.println(“DHT TEST PROGRAM “);
Serial.print(“LIBRARY VERSION: “);
Serial.println(DHT11LIB_VERSION);
Serial.println();
Serial.println(“Type,\tstatus,\tHumidity (%),\tTemperature (C)”);
}
void loop(){
int chk;
Serial.print(“DHT11, \t”);
chk = DHT.read(DHT11_PIN);
switch (chk){
case DHTLIB_OK:
Serial.print(“OK,\t”);
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print(“Checksum error,\t”);
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print(“Time out error,\t”);
break;
default:
Serial.print(“Unknown error,\t”);
break;
}
Serial.print(DHT.humidity,1);
Serial.print(“,\t”);
Serial.println(DHT.temperature,1);
delay(1000);
}
[/code]
Andiamo adesso ad analizzare il codice.
Riga 1: Includiamo la libreria precedentemente scaricata. Includere una libreria consiste praticamente nel fare un copia e incolla del codice scritto in quella libreria dentro quello nostro.
Riga 3: Chiamiamo il PIN 4 con un altro nome. Questo torna utile durante la programmazione sia per evitare errori sia per rendere più semplice la scrittura del programma.
Righe 6-11: In questo intervallo di righe andiamo ad impostare il canale di comunicazione seriale e scriviamo alcune informazioni che verranno mostrare sul monitor seriale.
Riga 17: Assegniamo alla variabile “chk” l’output della funzione la quale ci ritorna lo stato del sensore.
Righe 18-31: Se la funzione prima menzionata ci da qualche errore stampa la relativa descrizione.
Riga 33: Legge dal sensore il valore dell’umidità e la stampiamo.
Riga 35: Legge dal sensore il valore della temperatura e la stampiamo.
Riga 37: Attende un secondo prima di ricominciare il ciclo.
La guida è finita qui! Se hai qualsiasi dubbio, o anche consiglio non esitare a commentare qui sotto. Saremo molto felici di darti una mano 🙂
Guarda anche: Led a ritmo di musica