#55Mittel

Temperatur und Luftfeuchtigkeit mit DHT11

4.7(47)
60 abgeschlossen
Temperatur und Luftfeuchtigkeit mit DHT11
Projekt zur Messung der Umgebungstemperatur und der Luftfeuchtigkeit mit einem DHT11-Sensor und Anzeige auf einem I2C-LCD-Bildschirm. Lehrt die Verwendung eines digitalen Temperatur-/Luftfeuchtigkeitssensors.

Video

Schaltplan

Temperatur und Luftfeuchtigkeit mit DHT11 - Circuit

Quellcode

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

Wie genau sind die DHT11-Messungen?▾

Der DHT11 misst die Temperatur mit einer Genauigkeit von ±2 °C und die Luftfeuchtigkeit mit einer Genauigkeit von ±5 % und arbeitet in einem Bereich von 0 bis 50 °C. Für genauere Messungen wird der DHT22 (±0,5 °C) oder der BME280 empfohlen.

Auf dem Bildschirm erscheint „nan“ oder eine Fehlermeldung – warum?▾

Der Sensor konnte nicht ausgelesen werden. Überprüfe den 10-kΩ-Pull-up-Widerstand am Datenpin, den in der Bibliothek eingestellten Sensortyp (DHT11) und stelle sicher, dass zwischen den Messungen mindestens 1–2 Sekunden gewartet wird.

Warum werden die Messwerte nur langsam aktualisiert?▾

Der DHT11 kann höchstens eine Messung pro Sekunde durchführen. Der Versuch, häufiger zu messen, führt zu fehlerhaften oder veralteten Werten; es wird empfohlen, zwischen den Messungen 2 Sekunden zu warten.

Kann ich die gefühlte Temperatur berechnen?▾

Ja, die Funktion `computeHeatIndex()` aus der DHT-Bibliothek berechnet die gefühlte Temperatur anhand von Temperatur und Luftfeuchtigkeit.

Temperatur und Luftfeuchtigkeit mit DHT11 | BlueGrays