Bauteile · 5 Min. Lesezeit

DHT11 Temperatur- und Feuchtigkeitssensor: Arduino, ESP32 und Pico

Was ist der DHT11 Temperatur- und Feuchtigkeitssensor und wie funktioniert er? Anschluss an den Arduino, DHT-Bibliothek, Beispielcode, DHT11 vs. DHT22, ESP32 und Pico, typische Fehler.

Der DHT11 ist ein günstiger digitaler Sensor im blauen Kunststoffgehäuse, der über eine einzige Datenleitung sowohl die Temperatur als auch die relative Luftfeuchtigkeit liefert. Du findest ihn in fast jeder Arduino-Wetterstation, in Gewächshaus- und Pflanzenüberwachungen, in Kinderzimmer-Thermometern und in Smart-Home-Projekten, die bei steigender Feuchtigkeit einen Lüfter einschalten. Anders als bei einem analogen Sensor misst du keine Spannung und rechnest mit Formeln – der Sensor sendet den Messwert als fertige Zahl.

DHT11 Temperatur- und Feuchtigkeitssensor
DHT11: Im blauen Gehäuse mit Gitter stecken ein Feuchtigkeitselement und ein winziger Thermistor.

Was ist der DHT11 und wofür wird er verwendet?

Gemessen wird die relative Luftfeuchtigkeit: der Anteil der maximalen Wasserdampfmenge, die die Luft bei dieser Temperatur aufnehmen kann. 40–60 % gelten als angenehm; über 70 % bedeutet Feuchtigkeit und Schimmelgefahr, unter 30 % trockene Luft. Der DHT11 misst diesen Wert und die Umgebungstemperatur etwa einmal pro Sekunde.

  • Wetterstation für zu Hause: Temperatur und Feuchtigkeit auf einem LCD- oder OLED-Display anzeigen.
  • Gewächshaus und Pflanzen: bei sinkender Feuchtigkeit warnen und zusammen mit einem Bodenfeuchtesensor bewässern.
  • Feuchtigkeits- und Schimmelwarnung: Alarm, wenn Bad, Keller oder Schrank über 70 % Luftfeuchtigkeit steigen.
  • Automatischer Lüfter oder Luftentfeuchter: das Gerät über ein Relais einschalten, sobald ein Schwellenwert überschritten wird.
  • Datenlogger: Messwerte auf eine SD-Karte schreiben und ein Tagesdiagramm erstellen.
  • Fernüberwachung: mit einem ESP32 die Werte auf einer Webseite anzeigen, die du am Handy öffnen kannst.

Wie funktioniert der DHT11?

Im Gehäuse sitzen zwei Messelemente. Das Feuchtigkeitselement besteht aus einem feuchtigkeitsaufnehmenden Material zwischen zwei Elektroden; steigt die Luftfeuchtigkeit, sinkt sein Widerstand. Für die Temperatur wird ein NTC-Thermistor verwendet: ein kleiner Widerstand, dessen Wert mit steigender Temperatur fällt. Ein winziger Mikrocontroller im Sensor misst beide Widerstände, korrigiert sie mit im Werk gespeicherten Kalibrierwerten und sendet das Ergebnis digital.

Die Kommunikation läuft über eine einzige Leitung. Der Arduino weckt den Sensor, indem er die Datenleitung mindestens 18 Millisekunden auf LOW hält; der Sensor antwortet mit einem 40-Bit-Paket: 16 Bit Feuchtigkeit, 16 Bit Temperatur und eine 8-Bit-Prüfsumme, um fehlerhafte Messungen zu erkennen. Dieses Timing musst du nicht selbst programmieren – die Bibliothek, die wir gleich installieren, erledigt alles.

Technische Daten: Unterschied zwischen DHT11 und DHT22

MerkmalDHT11DHT22 (AM2302)
Versorgungsspannung3–5,5 V3,3–6 V
Strom während der Messung0,5–2,5 mA1–1,5 mA
Temperaturbereich0–50 °C−40–80 °C
Temperaturgenauigkeit±2 °C±0,5 °C
Feuchtigkeitsbereich20–90 %0–100 %
Feuchtigkeitsgenauigkeit±5 %±2 % (max. ±5 %)
Auflösung1 °C / 1 %0,1 °C / 0,1 %
MessrateEinmal pro SekundeAlle 2 Sekunden
GehäusefarbeBlauWeiß
DHT22 AM2302 Temperatur- und Feuchtigkeitssensor
DHT22 (AM2302): der weiße, genauere Bruder, der auch Minusgrade messen kann.

Kurz gesagt: Willst du Temperatur und Luftfeuchtigkeit im Raum grob überwachen, reicht der DHT11 und ist günstiger. Draußen, bei Minusgraden oder wenn es auf ein halbes Grad ankommt, wählst du den DHT22. Anschluss und Code sind bei beiden gleich; im Code änderst du nur den Sensortyp.

DHT11 Pinbelegung und Anschluss

Den DHT11 gibt es in zwei Ausführungen: als 3-Pin-Modul mit Widerstand und LED auf der Platine oder als einzelnen Sensor mit 4 Beinchen. Beim einzelnen Sensor zählst du die Beinchen von links nach rechts, während die Gitterseite zu dir zeigt.

Signal3-Pin-ModulSensor mit 4 BeinchenAnschluss an
VersorgungVCC (+)Beinchen 15V (3V3 bei ESP32 und Pico)
DatenDATA / OUT / SBeinchen 2Digitaler Pin (D2 beim Uno)
Frei—Beinchen 3Nicht angeschlossen
MasseGND (−)Beinchen 4GND
Beim einzelnen Sensor brauchst du unbedingt einen 10-kΩ-Pull-up-Widerstand zwischen Datenbeinchen und VCC; bei Kabeln über einige Meter nimm 4,7 kΩ. Auf Modulplatinen ist dieser Widerstand schon vorhanden, du brauchst also nichts weiter. Den Wert eines Widerstands aus seinen Farbringen liest du mit dem Werkzeug Widerstand-Farbcode ab.

Die DHT-Bibliothek installieren

  1. Öffne in der Arduino IDE den Bibliotheksverwalter (in der Arduino IDE 2 das Buchsymbol in der linken Leiste).
  2. Gib DHT sensor library ins Suchfeld ein und installiere die Bibliothek von Adafruit.
  3. Wenn nach Abhängigkeiten gefragt wird, wähle Install all, damit auch Adafruit Unified Sensor installiert wird.
  4. Wenn du möchtest, probiere das fertige Beispiel unter Datei > Beispiele > DHT sensor library > DHTtester aus.

Arduino-Beispielcode: Temperatur, Luftfeuchtigkeit und gefühlte Temperatur

Der folgende Code misst alle zwei Sekunden, meldet fehlgeschlagene Messungen und berechnet aus Temperatur und Feuchtigkeit die gefühlte Temperatur (Hitzeindex). Öffne den seriellen Monitor mit 9600 Baud, um die Ergebnisse zu sehen.

Arduino (C++)
1#include <DHT.h>
2
3#define DHT_PIN 2          // veri pini / data pin
4#define DHT_TYPE DHT11     // DHT22 kullanıyorsan DHT22 yaz / write DHT22 for a DHT22
5
6DHT dht(DHT_PIN, DHT_TYPE);
7
8void setup() {
9  Serial.begin(9600);
10  dht.begin();
11}
12
13void loop() {
14  delay(2000);                                // ölçümler arası bekleme / wait between readings
15
16  float humidity = dht.readHumidity();        // % bağıl nem / % relative humidity
17  float temperature = dht.readTemperature();  // °C
18
19  if (isnan(humidity) || isnan(temperature)) {
20    Serial.println("Okuma hatası / read error");
21    return;
22  }
23
24  // hissedilen sıcaklık / heat index (°C)
25  float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
26
27  Serial.print("Sicaklik / Temp: ");
28  Serial.print(temperature);
29  Serial.print(" C  Nem / Humidity: %");
30  Serial.print(humidity);
31  Serial.print("  Hissedilen / Feels like: ");
32  Serial.print(heatIndex);
33  Serial.println(" C");
34}
Der DHT11 schafft höchstens eine Messung pro Sekunde, der DHT22 eine alle zwei Sekunden. 2 Sekunden Pause zwischen den Messungen sind bei beiden sicher. Häufigeres Lesen liefert keinen neuen Wert – die Bibliothek gibt die letzte Messung erneut zurück oder einen Fehler.

DHT11 mit dem ESP32 verwenden

Am ESP32 läuft derselbe Code; setze nur DHT_PIN zum Beispiel auf 4. Versorge den Sensor über den 3V3-Pin des ESP32, damit auch die Datenleitung bei 3,3 V bleibt – der DHT11 arbeitet bei dieser Spannung problemlos. GPIO 34–39 sind reine Eingänge und eignen sich nicht für einen DHT, weil die Datenleitung in beide Richtungen arbeitet. Welche ESP32-Pins sicher sind, siehst du im Werkzeug Pinout. Die Messwerte kannst du per WLAN auf einer Webseite anzeigen und am Handy verfolgen.

DHT11 mit dem Raspberry Pi Pico (MicroPython)

MicroPython bringt für DHT-Sensoren ein fertiges dht-Modul mit, du musst also keine Bibliothek installieren. Schließe den Sensor an den 3V3-Pin des Pico, an GND und an Pin GP15 an:

MicroPython
1import dht
2from machine import Pin
3import time
4
5sensor = dht.DHT11(Pin(15))   # GP15 veri pini / data pin (DHT22 için dht.DHT22)
6
7while True:
8    try:
9        sensor.measure()
10        t = sensor.temperature()   # °C
11        h = sensor.humidity()      # %
12        print("Sicaklik:", t, "C  Nem: %", h)
13    except OSError:
14        print("Okuma hatası / read error")
15    time.sleep(2)

Projektideen mit dem DHT11

  • Digitales Thermometer mit LCD: die Werte auf ein 16x2-Display schreiben; wie das geht, steht in I2C-LCD-Display verwenden.
  • Feuchtigkeitsgesteuerter Lüfter: den Lüfter über ein Relais einschalten, wenn die Feuchtigkeit 65 % übersteigt; zum Anschluss siehe Was ist ein Relaismodul?
  • Feuchtigkeitsalarm: bei Überschreiten des Schwellenwerts einen Buzzer piepen lassen; Was ist ein Buzzer? hilft dir bei akustischen Warnungen.
  • Temperaturlogger: mit Uhrmodul und SD-Karte alle 10 Minuten einen Messwert speichern.
  • WLAN-Wetterstation: die Messwerte mit einem ESP32 auf einer Seite veröffentlichen, die jedes Gerät im Heimnetz öffnen kann.

Typische Fehler und ihre Lösungen

  • Ständig NaN oder "Failed to read": Das Datenkabel steckt vielleicht an einem anderen Pin als im Code, der Pull-up-Widerstand fehlt oder im Code steht der falsche Sensortyp (DHT22 statt DHT11).
  • Zu häufiges Lesen: Wird der Sensor in weniger als 2 Sekunden Abstand gelesen, liefert er den alten Wert oder einen Fehler.
  • Temperatur höher als erwartet: Der Sensor sitzt vielleicht zu nah am Spannungsregler des Arduino oder in der Sonne; platziere ihn einige Zentimeter von der Platine entfernt.
  • Aussetzer bei langen Kabeln: Nach einigen Metern wird das Signal schwach; senke den Pull-up auf 4,7 kΩ, versorge den Sensor mit 5 V und nutze hochwertiges Kabel.
  • Instabil am ESP32: Wird der Sensor mit 5 V versorgt, liegt auch die Datenleitung auf 5 V; versorge ihn mit 3V3 und nutze einen GPIO, der Ein- und Ausgang sein kann (zum Beispiel 4).
  • Sofortige Reaktion erwarten: Eine Feuchtigkeitsänderung wird erst nach einigen Sekunden erkannt; der DHT11 ist für die Raumüberwachung gedacht, nicht für schnelle Messungen.

Welche Sensoren es sonst noch gibt, erfährst du im Arduino-Sensoren-Ratgeber; zum Messen von Entfernungen lies HC-SR04 Entfernungssensor. In der BlueGrays-App findest du Schritt-für-Schritt-Projekte mit DHT11 und DHT22 samt Schaltplänen und Code.

Häufige Fragen

Soll ich einen DHT11 oder einen DHT22 kaufen?

Um Temperatur und Luftfeuchtigkeit im Raum grob zu überwachen, reicht der günstigere DHT11. Für draußen, Minusgrade oder ±0,5 °C Genauigkeit nimm den DHT22. Im Code änderst du nur den Sensortyp auf DHT22.

Warum liefert mein DHT11 NaN oder "Failed to read from DHT sensor"?

Die häufigsten Ursachen sind ein falscher Datenpin, ein fehlender Pull-up-Widerstand, der falsche Sensortyp im Code und zu häufiges Lesen. Prüfe die Verkabelung, ergänze beim einzelnen Sensor 10 kΩ und warte 2 Sekunden zwischen den Messungen.

Mein DHT11 zeigt die falsche Temperatur an. Wie kalibriere ich ihn?

Eine Abweichung von ±2 °C ist beim DHT11 normal. Lege den Sensor neben ein vertrauenswürdiges Thermometer, notiere die Differenz und addiere oder subtrahiere diesen festen Wert im Code. Achte darauf, dass der Sensor weit von warmen Bauteilen entfernt ist.

Funktioniert der DHT11 mit 3,3 V?

Ja, der DHT11 arbeitet zwischen 3 und 5,5 V. An 3,3-V-Boards wie ESP32 und Raspberry Pi Pico versorgst du ihn am besten über den 3V3-Pin, damit an der Datenleitung keine 5 V anliegen.

Kann man den DHT11 im Freien oder in Wassernähe einsetzen?

Der DHT11 ist nicht wasserdicht; Regen, Kondenswasser und direkte Sonne beschädigen ihn oder verfälschen die Messung. Draußen gehört er in ein belüftetes Gehäuse im Schatten; für Wassertemperaturen eignet sich ein wasserdichter DS18B20 besser.

Kann ich mehrere DHT11 an einen Arduino anschließen?

Ja, aber jeder Sensor braucht einen eigenen Datenpin; sie können sich keine Datenleitung teilen. Im Code legst du für jeden ein eigenes DHT-Objekt an, zum Beispiel DHT dht1(2, DHT11) und DHT dht2(3, DHT11).

Alle Projekte ansehen
Temperatur und Luftfeuchtigkeit mit DHT11
#55Mittel

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-/Luftfeuchtigkeits

4.7(47)
60
ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)
#117Mittel
Premium

ESP32 DHT22 Temperatur und Luftfeuchtigkeit (mit LCD-Display)

Bei diesem Projekt werden die Umgebungstemperatur und die Luftfeuchtigkeit mit einem DHT22-Sensor gemessen und in Echtzeit auf einem 16x2 I2C-LCD angezeigt. Mithilfe der Adafruit-DHT-Bibliothek werden die Daten über das One-Wire-Protokoll vom Sensor ausgelesen. Dieses Projekt bildet die Grundlage für IoT-Wetterstationen, Smart-Home-Automatisierung oder Umgebungsüberwachungssysteme in Gewächshäusern. Die Kommunikation mit dem DHT22 erfolgt über den GPIO-4-Pin des ESP32.

4.8(37)
53
ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED)
#144Fortgeschritten
Premium

ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED)

Baue einen zeitgestempelten Temperaturlogger mit ESP32! Lese Temperatur/Feuchtigkeit vom DHT22 alle 10 Sekunden, hole die aktuelle Zeit vom DS1307 RTC und protokolliere auf microSD-Karte als CSV. Das OLED zeigt live Temperatur (große Schrift), Luftfeuchtigkeit, Zeitstempel und Logzähler. Die `/temp_log.csv`-Datei auf der SD-Karte öffnet sich in Excel, Google Sheets oder Python pandas zur Analyse — perfekt für Gewächshausüberwachung, Raumtemperaturverfolgung, Laboraufzeichnung, Lebensmittellageru

4.7(7)
12
Punktmatrix-Uhr, Kalender und Wetterstation (MAX7219, DS1307)
#85Mittel
Premium

Punktmatrix-Uhr, Kalender und Wetterstation (MAX7219, DS1307)

DS1307 RTC-Modul und DHT22 Temperatur-Feuchtigkeitssensor ist ein Projekt, das Echtzeitdaten auf einem MAX7219 8x32 Punktmatrix-LED-Display anzeigt. Das Display zeigt die Temperatur in Celsius und Fah

5.0(50)
66
Temperaturmessung mit NTC und 2x16 Lcd Display
#44Anfänger
Premium

Temperaturmessung mit NTC und 2x16 Lcd Display

Das Projekt misst die Umgebungstemperatur mit einem NTC-Thermistor und zeigt sie in Celsius auf dem I2C-LCD-Bildschirm an. Es lehrt die Berechnung der Temperatur aus dem Analogwert mit der Steinhart-H

4.5(33)
44
ESP32 HTTPClient + Wetter-API (mit LCD-Display)
#133Fortgeschritten
Premium

ESP32 HTTPClient + Wetter-API (mit LCD-Display)

In diesem Projekt führen wir mit dem ESP32 über das Internet mithilfe von `HTTPClient.h` einen REST-API-Aufruf an die Wetter-API (wttr.in) durch. Mit ArduinoJson v7 analysieren wir die zurückgegebenen JSON-Daten und zeigen Informationen zu Stadt, Temperatur, Luftfeuchtigkeit, Wetter und Wind sowohl auf Türkisch als auch auf Englisch auf einem I2C-LCD-Display an. wttr.in ist kostenlos und erfordert keinen API-Schlüssel – Sie können den aktuellen Wetterbericht einer beliebigen Stadt abrufen, indem

4.7(13)
20
Intelligente Bewässerungsstation
#83Fortgeschritten
Premium

Intelligente Bewässerungsstation

Autonomes Pflanzenbewässerungssystem, das 24/7 ohne Ermüdung arbeitet Arduino mit zwei 18650 Batterien und LM2596 Regler. Es steuert automatisch den Wassermotor durch kontinuierliche Messung der Boden

5.0(42)
57
ESP 32 Intelligentes Pflanzenbewässerungssystem
#139Fortgeschritten
Premium

ESP 32 Intelligentes Pflanzenbewässerungssystem

In diesem Projekt wurde mithilfe eines ESP32 und eines Bodenfeuchtesensors ein automatisches Pflanzenbewässerungssystem entwickelt. Der Sensor misst kontinuierlich den Feuchtigkeitsgehalt des Bodens. Wenn die Feuchtigkeit unter einen festgelegten Wert fällt, aktiviert der ESP32 das Relais, schaltet die Wasserpumpe ein und bewässert die Pflanze. Sobald der Boden ausreichend feucht ist, schaltet sich die Pumpe automatisch ab. Dank dieses Projekts können Pflanzen regelmäßig bewässert und Wasser ein

4.7(10)
14

Lerne, den DHT11 an den Arduino anzuschließen, mit der DHT-Bibliothek Temperatur, Luftfeuchtigkeit und gefühlte Temperatur zu lesen, ihn am ESP32 und Pico zu nutzen und wann der DHT22 die bessere Wahl ist.

DHT11 Temperatur- und Feuchtigkeitssensor: Arduino, ESP32 und Pico | BlueGrays