Codice Arduino e video per il sensore di temperatura e umidità DHT11
In questo tutorial esploreremo come usare il sensore di temperatura e umidità DHT11 con un Arduino. Questo sensore è un'opzione a basso costo per misurare sia la temperatura che l'umidità, rendendolo una scelta perfetta per vari progetti. Copriremo i collegamenti, il codice necessario e come i componenti interagiscono per fornire letture accurate.

Al termine di questo tutorial sarai in grado di leggere la temperatura in Celsius, Fahrenheit e Kelvin, oltre ai livelli di umidità dal sensore DHT11. Per maggiore chiarezza, assicurati di consultare il video ai timestamp indicati (nel video a 00:00).
Hardware spiegato
Il sensore DHT11 è composto da tre pin: massa, alimentazione e dati. Il pin di massa si collega alla massa dell'Arduino, mentre il pin di alimentazione si collega a un'alimentazione da 5V fornita dall'Arduino. Il pin dati è responsabile della comunicazione tra l'Arduino e il sensore, permettendo all'Arduino di leggere i valori di temperatura e umidità.
Questo sensore utilizza un'uscita digitale, il che significa che invia i dati in formato seriale all'Arduino. Contiene un termistore per la misurazione della temperatura e un sensore di umidità capacitivo. Il DHT11 converte i segnali analogici che riceve in segnali digitali, rendendo più facile per microcontrollori come Arduino elaborare i dati.
Dettagli della scheda tecnica
| Produttore | ASAIR |
|---|---|
| Numero di parte | DHT11 |
| Tensione logica/IO | 3.3-5.5 V |
| Tensione di alimentazione | 3.3-5.5 V |
| Corrente di uscita (per canale) | 0,5 mA |
| Corrente di picco (per canale) | 2,5 mA |
| Linee guida sulla frequenza PWM | Non applicabile |
| Soglie logiche di ingresso | 0.3*VDDa 0.7*VDD |
| Caduta di tensione / RDS(on)/ saturazione | Non applicabile |
| Limiti termici | da 0 a 60 °C |
| Pacchetto | DIP a 4 pin |
| Note / varianti | Economico, facile da usare |
- Tensione di funzionamento tra 3,3 V e 5,5 V.
- Corrente di uscita massima di 2.5 mA.
- Intervallo di temperatura da 0 a 60 gradi Celsius.
- Intervallo di umidità dal 20% al 90%.
- Usa una resistenza pull-up sul pin dei dati per letture stabili.
- Assicurarsi di una connessione corretta per evitare ingressi flottanti
- Prestare attenzione alla polarità invertita quando si collega l'alimentazione.
- Ritardare le letture di almeno 1 secondo per ottenere risultati accurati.
Istruzioni di cablaggio

Per collegare il sensore DHT11 al tuo Arduino, segui questi passaggi:
Per prima cosa, collega il pin di massa (di solito nero o marrone) del DHT11 al ground (GND) dell'Arduino. Successivamente, collega il pin di alimentazione (di solito rosso) del DHT11 all'uscita 5V dell'Arduino. Infine, collega il pin dati (di solito giallo o bianco) al pin digitale 2 dell'Arduino. Assicurati di utilizzare una resistenza di pull-up (circa 10k ohm) tra il pin dati e il pin di alimentazione per garantire una comunicazione stabile.
Esempi di codice e guida passo passo
Nel codice Arduino, iniziamo includendo il file header necessario per il sensore DHT11:
#include Questa riga importa la libreria che contiene le funzioni necessarie per interagire con il sensore DHT11. Successivamente, creiamo un'istanza della classe DHT11:
dht11 DHT11; // create object of DHT11Questa riga inizializza l'oggetto DHT11 che useremo per leggere i dati dal sensore. Il pin collegato al DHT11 è definito come:
#define dhtpin 2 // set the pin to connect to DHT11Questo imposta il pin dati del sensore sul pin 2 dell'Arduino. Nelloop()funzione, leggiamo i dati del sensore:
DHT11.read(dhtpin);// initialize the readingQuesta riga avvia il processo di lettura e l'umidità può essere ottenuta con:
int humidity = DHT11.humidity;// get humidityIl valore dell'umidità è memorizzato nella variabilehumidity, che viene quindi stampato sul monitor seriale insieme ai valori di temperatura convertiti in gradi Celsius, Fahrenheit e Kelvin.
Dimostrazione / Cosa aspettarsi
Quando esegui il codice, dovresti vedere le letture di temperatura e umidità visualizzate nel monitor seriale. Le letture della temperatura si aggiorneranno ogni mezzo secondo (nel video a 00:00). Se il sensore viene riscaldato o raffreddato, noterai che i valori cambiano di conseguenza. Fai attenzione, poiché il DHT11 ha un limite massimo di temperatura di 60 gradi Celsius; superarlo può portare a letture imprecise.
Marcatori temporali del video
- 00:00- Introduzione al sensore DHT11
- 01:30- Istruzioni di cablaggio
- 02:15- Panoramica del codice
- 03:00- Esecuzione del codice e output previsto
/*
* This is the Arduino code for the DHT11 module to read temperature and humidity.
* This code can display temperature in:
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
* Watch the video https://youtu.be/FjZBt6eU9b4
*
* Written by Ahmad Nejrabi for Robojax Video
* Date: January 4, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*
*/
// header file from GitHub: https://github.com/adidax/dht11
#include <dht11.h>
dht11 DHT11; // create object of DHT11
#define dhtpin 2 // set the pin to connect to DHT11
void setup() {
Serial.begin(9600);// setting up serial monitor
}
void loop() {
DHT11.read(dhtpin);// initialize the reading
//code for Robojax.com video
int humidity = DHT11.humidity;// get humidity
Serial.print(getTemp('C'));
Serial.print("C ");
Serial.print(getTemp('F'));
Serial.print("F ");
Serial.print(getTemp('K'));
Serial.print("K ");
Serial.print(" humidity:");
Serial.print (humidity);
Serial.println("% ");
Serial.println();
delay(500);
}
/*
* getTemp(char type)
* type character of upper case.
* C is used to get Celsius.
* F is used to get Fahrenheit.
* K is used for Kelvin.
*/
float getTemp(char type) {
float temp = (float)DHT11.temperature;//get temp
if(type =='F')
{
return temp * 1.8 + 32;// convert to Fahrenheit
}else if(type =='K')
{
return temp + 274.15;// convert to Kelvin
}else{
return temp;
}
}
Risorse e riferimenti
-
EsternoLibreria DHT11 su GitHubgithub.com
File📁
Librerie Arduino (zip)
-
Libreria Arduino DHT22
robojax-DHT22_library.zip0.01 MB
File Fritzing
-
Sensore di temperatura DHT11
Temperature Sensor DHT11.fzpz0.01 MB
Manuale dell'utente
-
Manuale dell'utente DHT11
robojax-DHT11_manual.pdf0.82 MB