Leggere temperatura e umidità con Arduino Nano e sensore DHT22

Leggere temperatura e umidità con Arduino Nano e sensore DHT22

In questo post vedremo come Leggere temperatura e umidità con Arduino Nano e sensore DHT22, conosciuto anche con la sigla AM2302, utilizzando le librerie messe a disposizione da Adafruit.


Leggere temperatura e umidità con Arduino Nano e sensore DHT22

Occorrente

Per realizzare questa guida sono stati utilizzati i seguenti componenti:

  • Arduino Nano ATmega328P CH340G: lo abbiamo già conosciuto in questo post (acquistabile su AmazoneBay)
  • DHT22 (AM2302): sensore di temperatura e umidità (acquistabile su AmazoneBay)
  • Breadboard: basetta forata sperimentale (acquistabile su AmazoneBay)
  • Jumper Wire: cavetti (acquistabili su AmazoneBay)
  • Arduino IDE: ambiente di sviluppo per programmare il micro controllore Arduino (per l’installazione e la configurazione vi rimando a questi post)

Dettagli tecnici sensore DHT22 (AM3202)

Il sensore di temperatura e umidità DHT22 si può trovare nella versione con basetta (che presenta 3 piedini) o solo sensore (che presenta 4 piedini). Nell’immagini viene mostrato come collegare i piedini

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 pinout

Queste sono le caratteristiche principali

  • Tensione di alimentazione: da 3 a 5 volt
  • Consumo massimo: 2.5mA
  • Range di umidità: 0-100% con una precisione del 2-5%
  • Range di temperature: da -40 a 80°C con una precisione di 0.5°C
  • Frequenza di aggiornamento: 0.5Hz (tra una lettura e l’altra devono passare almeno 2 secondi)
  • Dimensioni: 27mm x 59mm x 13.5mm

Per maggiori informazioni sul sensore DHT22 potete consultare il datasheet a questo link.

Montaggio e configurazione

Colleghiamo il sensore DHT22 al micro controllore Arduino Nano ATmega328P in questo modo:

COLLEGAMENTO PIEDINI
DHT22 Arduino Nano Jumper Wire
1 3V3      Rosso
2 D2      Giallo
3 (4 nella versione senza basetta) GND      Nero

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 collegamenti fritzing

Terminato il circuito colleghiamo Arduino, tramite la porta USB, al nostro PC e avviamo l’ambiente di sviluppo Arduino IDE.
Per poter permettere ad Arduino di riconoscere il sensore dobbiamo installare le librerie. Per farlo utilizzeremo il gestore delle librerie messo a disposizione da Arduino IDE.
Da Arduino IDE avviamo il gestore della librerie cliccando su Sketch -> #Include Libreria -> Gestione Librerie

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 gestione librerie

Con Gestore Librerie aperto utilizziamo la casella di ricerca (in alto a destra) per cercare la libreria relativa al sensore DTH22.
Trovata la libreria selezioniamo la versione da installare e clicchiamo sul pulsante Installa.
N.B.: la versione 1.3.0 sembra dare problemi in fase di compilazione del codice, per evitare errori consiglio di selezionare la versione 1.2.3

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 selezione e installazione libreria

Al termine dell’installazione ci verrà mostrato l’esito e la versione installata.

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 conferma installazione libreria


Leggere temperatura e umidità con Arduino Nano e sensore DHT22

Sketch e test su Arduino

Chiudiamo il gestore delle librerie e configuriamo l’IDE in modo da poter programmare il nostro Arduino. Potete cambiare le seguenti configurazioni in base al micro controllore a vostra disposizione.
Selezioniamo la scheda da Strumenti -> Scheda -> Arduino Nano

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 selezione scheda

Ora selezioniamo il processore da Strumenti -> Processore -> ATmega328P

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 selezione processore

Infine selezioniamo la porta usb su cui è collegato Arduino da Strumenti -> Porta -> COM04 (N.B.: il nome della porta può essere differente)

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 selezione porta

Adesso che abbiamo il circuito pronto, Arduino collegato al PC e l’IDE configurato correttamente, non ci resta che far lavorare il nostro sensore per leggere la temperatura e l’umidità.
Per leggere i dati dal sensore DHT22 utilizzeremo uno sketch di esempio presente nella libreria che abbiamo installato precedentemente.
Recuperiamo lo sketch di esempio cliccando su File -> Esempi -> DHT sensor library -> DHTTester

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 selezione esempio

Questo è il codice presente nello sketch di esempio

Dopo aver selezionato lo sketch verifichiamo se la compilazione va a buon fine cliccando sul pulsante Verifica (contrassegnato da una V)

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 verifica sketch

Se la verifica non ha segnalato errori possiamo caricare lo sketch su Arduino cliccando su Carica (pulsante contrassegnato da una freccia ricolta verso destra)

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 carica sketch

Al termine della carica dello sketch nella board Arduino, per poter leggere i valori della temperatura e dell’umidità, dobbiamo utilizzare il Monitor Seriale.
Avviamo il Monitor Seriale da Strumenti -> Monitor Seriale

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 avvio monitor seriale

Dopo qualche secondo, sul Monitor Seriale, saranno visualizzati i dati provenienti dal sensore DHT22

Leggere temperatura e umidità con Arduino Nano e sensore DHT22 lettura dati

Bene, abbiamo visto come Leggere temperatura e umidità con Arduino Nano e sensore DHT22. Per qualsiasi dubbio o domanda non esitate ad utilizzare i commenti.

A presto 😉

2 commenti su “Leggere temperatura e umidità con Arduino Nano e sensore DHT22”

  1. ottimo articolo veramente interessante…ma ho un favore da chiederti …se io volessi aggiungere anche la temperatura massima e minima che file dovrei aggiungere?
    grazie

    1. Ciao Lorenzo, il sensore DHT22 permette solo di leggere la temperatura e l’umidità. Se la temperatura massima e minima ti servono per poter gestire un dispositivo in base al valore della temperatura (ad esempio un relè per azionare una caldaia) potresti utilizzare una funzione che simula il ciclo di isteresi.

      Una funzione come questa, ovviamente adattandola al codice, dovrebbe andare bene:

      void isteresi()
      {
        float max = 22;
        float min = 20;
        //se il relè della caldaia  è attivo e la temperatura supera il valore max
        if (digitalRead(rele_caldaia) == HIGH && t >= max)
          digitalWrite(rele_caldaia , LOW);//spengo il relè che pilota la caldaia
        //se il relè della caldaia non è attivo e la temperatura è inferiore al valore min
        if (digitalRead(rele_caldaia) == LOW && t <= min)
          digitalWrite(rele_caldaia , HIGH);//accendo il relè che pilota la caldaia
      }
      

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *