TEMPERATURA E UMIDITÀ CON ARDUINO, DHT11 ED LCD

Presenteremo la Libreria per Leggere i Sensori DHT11, DHT22, DHT21 e altri. Verrà Presentato uno Sketch e relativo Schema per Realizzare un Sensore con LCD…

 

 

 




 
INTRO

ll sensore DHT11 viene usato per misurare la temperatura e l’umidità ambientale fornendo un segnale digitale con valore che dipende da queste due grandezze fisiche. Per il tutorial che presenta le caratteristiche, connessione e funzionamento del DHT11 visita il nostro articolo: https://www.ne555.it/sensore-dht11-temperatura-umidita/.

Con questo sensore possiamo realizzare, grazie anche ad un ARDUINO e un display LCD, un sistema che mostra su schermo i valori di temperatura e umidità. Per leggere i valori da questo tipo di sensori bisogna usare l’apposita libreria. Prima di tutto bisogna caricarla nel nostro Sketch così facendo:

E il file da aggiungere è presente nel file .rar che potete scaricare cliccando sul link nella sezione download dell’articolo. Estraete i file all’interno del download e poi indicate in “aggiungi libreria da file .ZIP” il file “dht-sensor-library-master.zip”. una volta caricato questo file possiamo utilizzare la nostra libreria.

Per utilizzare la libreria ho bisogno delle seguenti stringhe:

#include "DHT.h"                       //Libreria Sensore
DHT dht(pinarduino tipo_dht)           //Indico il pin di arduino a cui connetto il pin data (0, 1, 2...)                               
                                       //Indico il tipo di sensore. Si può avere DHT11, DHT22, DHT21 e AM2301 
dht.begin();                           //Attiva DHTxx  
int Temp = dht.readTemperature();      //Leggi valore temperatura in °C
int Umid = dht.readHumidity();         //Leggi valore umidità
int Temp = dht.readTemperature(true);  //Leggi valore temperatura in °F



La prima stringa richiama la libreria, poi con la seconda indico a quale pin di arduino collego il pin data del sensore e il tipo esatto di sensore usato (DHT11, DHT22, DHT21 oppure AM2301).

Attivo il sensore con “dht.begin();” e vado a leggere la temperatura con “dht.readTemperature();” in gradi centigradi se l’argomento è vuoto oppure in Fahrenheit se scrivo true nell’argomento. Per l’umidità uso “dht.readHumidity()”.
 



 
CODICE

Il codice molto semplice è il seguente:

#include <LiquidCrystal.h>                      //Libreria LCD
#include "DHT.h"                                //Libreria Sesnore

void setup(){
  lcd.begin(16, 2);                             //Inizializza LCD (colonne righe)
  dht.begin();
  DHT dht(6, DHT11);                              //Data connesso al pin 6 e Sesnore DHT11
  LiquidCrystal lcd(0, 1, 2, 3, 4, 5);            //Connessione LCD (RS-0, E-1, D4-2, D5-3, D6-4, D7-5
}

void loop() {                                  //Ciclo infinito 
int t = dht.readTemperature();                 //Leggi valore temperatura
int h = dht.readHumidity();                    //Leggi valore umidità
lcd.clear();                                   //Pulisci LCD 
lcd.setCursor(0,0);                            //Prima riga prima colonna
lcd.print("Temperatura ");                     //Scrivi temperatura e uno spazio
lcd.print(t);                                  //Scrivi il valore di temp
lcd.print((char)223);                          //Simbolo grado
lcd.print('C');                                //Scrivo C    
lcd.setCursor(0,1);                            //Prima colonna seconda riga
lcd.print("Umidita' ");                        //Scrivo umidità
lcd.print(h);                                  //Scrivo il valore di umidità
lcd.print('%');                                //Simbolo di percentuale (umidità relativa)
delay(1000);                                   //Aspetta un secondo
}

Richiamo le librerie per il sensore e per l’LCD. Nel ciclo di setup vado ad inizializzare il display a 2 righe 16 colonne, inizializzo il sensore indicando il tipo e la connessione e attivandolo. Infine indico la connessione dell’LCD e chiudo il ciclo di setup.

Il ciclo infinito va a leggere temperatura e umidità, sposto il cursore al primo quadratino e scrivo “Temperatura “ poi scrivo il valore e infine sulla stessa riga vi sarà “°C”

Lo stesso procedimento viene usato per l’umidità sulla seconda riga. Il delay da 1000mS serve per non avere una lettura continua e problemi di visualizzazione.
 
SCHEMA

Lo schema è il seguente:

La retroilluminazione dell’LCD viene alimentata collegando il catodo (K) a massa mentre l’anodo viene collegato alla tensione positiva 5V attraverso un resistore di protezione da 470 Ohm. L’LCD viene alimentato a 5V collegando VSS a GND e VDD a 5V mentre la tensione che regola il contrasto viene generata da un trimmer (RV1) connesso tra 5V e GND per avere una tensione variabile tra 5 e 0V.

Il resto dell’LCD viene collegato ad ARDUINO secondo la definizione scritta nel codice. Il sensore DHT11 viene alimentato con il pin VDD connesso a 5V, il pin GND a GND mentre la sua uscita (pin2) viene inviata al pin 6 come indicato nel ciclo di setup.

Arduino viene alimentato da PC oppure con un alimentatore esterno. Si può usare un ARDUINO UNO come nell’esempio oppure un qualsiasi altro modello.
 
DOWNLOAD

Potete scaricare la simulazione del circuito con PROTEUS, lo sketch e la libreria del sensore DHT11 al seguente LINK!!!
 



 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

10 pensieri su “TEMPERATURA E UMIDITÀ CON ARDUINO, DHT11 ED LCD

      • La libreria del sensore DHT. Dopo aver copiato le stringhe per la libreria e il codice mi da questi errori. Potrebbero risultare banali, ma sono alle prime armi con arduino e quindi volevo chiedere come risolverli

        Arduino:1.8.13 (Windows 10), Scheda:”Arduino Uno”

        SensoreDHT:3:20: error: expected ‘)’ before ‘tipo_dht’

        SensoreDHT:3:28: error: no matching function for call to ‘DHT::DHT(int)’

        In file included from C:\Users\Nicolò\Desktop\SensoreDHT\SensoreDHT.ino:2:0:

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:40:4: note: candidate: DHT::DHT(uint8_t, uint8_t, uint8_t)

        DHT(uint8_t pin, uint8_t type, uint8_t count=6);

        ^~~

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:40:4: note: candidate expects 3 arguments, 1 provided

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: candidate: constexpr DHT::DHT(const DHT&)

        class DHT {

        ^~~

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: no known conversion for argument 1 from ‘int’ to ‘const DHT&’

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: candidate: constexpr DHT::DHT(DHT&&)

        C:\Users\Nicol�\Documents\Arduino\libraries\DHT-sensor-library-master/DHT.h:38:7: note: no known conversion for argument 1 from ‘int’ to ‘DHT&&’

        SensoreDHT:5:1: error: expected ‘,’ or ‘;’ before ‘dht’

        SensoreDHT:8:5: error: redefinition of ‘int Temp’

        C:\Users\Nicolò\Desktop\SensoreDHT\SensoreDHT.ino:6:5: note: ‘int Temp’ previously declared here

        C:\Users\Nicolò\Desktop\SensoreDHT\SensoreDHT.ino: In function ‘void setup()’:

        SensoreDHT:14:3: error: ‘lcd’ was not declared in this scope

        C:\Users\Nicolò\Desktop\SensoreDHT\SensoreDHT.ino: In function ‘void loop()’:

        SensoreDHT:23:1: error: ‘lcd’ was not declared in this scope

        Più di una libreria trovata per “DHT.h”

        Usata: C:\Users\Nicolò\Documents\Arduino\libraries\DHT-sensor-library-master

        Non usata: C:\Users\Nicolò\Documents\Arduino\libraries\DHT_sensor_library

        exit status 1

        expected ‘)’ before ‘tipo_dht’

Lascia un commento

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