#55Intermedio

Temperatura e umidità con DHT11

4.7(47)
60 completato
Temperatura e umidità con DHT11
Progetto che misura il valore della temperatura e dell'umidità ambientale con un sensore DHT11 e lo visualizza su uno schermo LCD I2C. Insegna l'uso del sensore digitale di temperatura/umidità.

Video

Schema circuito

Temperatura e umidità con DHT11 - Circuit

Codice sorgente

Arduino (C++)
1#include <LiquidCrystal_I2C.h>
2#include <Wire.h> 
3#include <DHT.h>
4
5#define DHTPIN 3
6#define DHTTYPE DHT11
7
8LiquidCrystal_I2C lcd(0x27, 16, 2);
9DHT dht(DHTPIN, DHTTYPE); 
10
11void setup() {
12  dht.begin();
13  lcd.init();      // Modern libraries prefer init() over begin()
14  lcd.backlight();
15}
16 
17void loop() {
18  int humidity = dht.readHumidity();
19  float temperature = dht.readTemperature();
20
21  // Check if readings failed
22  if (isnan(humidity) || isnan(temperature)) {
23    lcd.setCursor(0, 0);
24    lcd.print("Sensor Error!   ");
25    return;
26  }
27
28  lcd.setCursor(0, 0);
29  lcd.print("Temp: ");
30  lcd.print(temperature);
31  lcd.print((char)223); // Degree symbol (°)
32  lcd.print("C   ");
33
34  lcd.setCursor(0, 1);
35  lcd.print("Humidity: %");      
36  lcd.print(humidity);
37  lcd.print("   "); // Trailing spaces to clear old data
38  
39  delay(2000); // DHT11 is slow, 2 seconds is more stable
40}

FAQ

Quanto sono precise le misurazioni del DHT11?▾

Il DHT11 misura la temperatura con una precisione di ±2 °C e l'umidità con una precisione di ±5% e funziona in un intervallo compreso tra 0 e 50 °C. Per misurazioni più precise, è preferibile utilizzare il DHT22 (±0,5 °C) o il BME280.

Sullo schermo compare la scritta "nan" o un messaggio di errore: perché?▾

Il sensore non è stato letto. Verifica la resistenza pull-up da 10 kΩ sul pin dei dati, il tipo di sensore impostato nella libreria (DHT11) e che sia stato osservato un intervallo di almeno 1–2 secondi tra una lettura e l'altra.

Perché gli aggiornamenti sono così lenti?▾

Il DHT11 può effettuare al massimo una misurazione al secondo. Cercare di effettuare letture più frequenti può causare valori errati o obsoleti; si consiglia di attendere 2 secondi tra una misurazione e l'altra.

Posso calcolare la temperatura percepita?▾

Sì, la funzione `computeHeatIndex()` della libreria DHT calcola la temperatura percepita in base alla temperatura e all'umidità.

Temperatura e umidità con DHT11 | BlueGrays