DHT22 Arduino: Temperatur & Luftfeuchtigkeit messen (Tutorial)

Das brauchst du für dein DHT22 Arduino Projekt

Hinweis: Falls du Budget sparen möchtest, kannst du auch den DHT11-Sensor verwenden. Er ist günstiger, aber etwas weniger genau als der DHT22. Für die meisten Hobby-Projekte reicht er aber völlig aus.

Was macht den DHT22-Sensor so besonders?

Der DHT22 (auch bekannt als AM2302) ist ein digitaler Temperatur- und Luftfeuchtigkeitssensor, der sich durch seine hohe Präzision auszeichnet. Ich schätze besonders seinen weiten Messbereich: Er erfasst Temperaturen von -40°C bis +80°C und Luftfeuchtigkeit von 0-100% relative Luftfeuchte.

Die Genauigkeit beträgt ±0,5°C bei der Temperatur und ±2-5% bei der Luftfeuchtigkeit. Der Sensor aktualisiert seine Messwerte alle 2 Sekunden, was für die meisten Anwendungen völlig ausreichend ist.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


DHT22 vs. DHT11:

  • DHT22: Höhere Genauigkeit, größerer Messbereich, etwas teurer
  • DHT11: Günstiger, Messbereich 0-50°C, Genauigkeit ±2°C

Das LCD-Display verstehen

Ich verwende in diesem Projekt ein 16×2 Zeichen LCD-Display. Das bedeutet, du kannst 2 Zeilen mit jeweils 16 Zeichen darstellen. Die Ansteuerung erfolgt über die LiquidCrystal-Bibliothek, die standardmäßig in der Arduino IDE enthalten ist.

Das Display hat viele Pins, aber keine Sorge – ich zeige dir gleich genau, welcher Pin wohin gehört.

Die Verkabelung: So baust du die Schaltung auf

Jetzt wird’s praktisch! Ich zeige dir, wie du den DHT22 Arduino und das LCD-Display miteinander verbindest.

DHT22 Arduino Verkabelung mit LCD Display auf einem Breadboard

DHT22-Sensor anschließen

Der DHT22 hat drei oder vier Pins (je nach Modell):

  • VCC (Pin 1) → 5V am Arduino
  • DATA (Pin 2) → Digital Pin 8 am Arduino
  • NC (Pin 3) → Nicht verbunden (bei 4-Pin-Versionen)
  • GND (Pin 4) → GND am Arduino

Wichtig: Du musst einen 4,7kΩ Pull-Up-Widerstand zwischen VCC und DATA einbauen. Dieser Widerstand ist essentiell für die stabile Kommunikation mit dem Sensor!

LCD-Display anschließen

Das LCD-Display benötigt mehrere Verbindungen. Ich habe die wichtigsten Pins hier aufgelistet:

Steuerpins:

  • RS → Pin 12 (Arduino)
  • Enable → Pin 11 (Arduino)
  • D4 → Pin 5 (Arduino)
  • D5 → Pin 4 (Arduino)
  • D6 → Pin 3 (Arduino)
  • D7 → Pin 2 (Arduino)

Stromversorgung:

  • VSS → GND
  • VDD → 5V
  • V0 → Mit Potentiometer für Kontrast (oder direkt GND für maximalen Kontrast)
  • A (Anode) → 5V (für Hintergrundbeleuchtung)
  • K (Kathode) → GND
DHT22 Arduino Schaltplan mit detaillierter Pin-Belegung und Verkabelung

Profi-Tipp: Achte besonders auf die korrekte Polung bei der Stromversorgung. Ein vertauschtes VCC und GND kann deine Bauteile beschädigen. Ich überprüfe die Verkabelung immer zweimal, bevor ich das Projekt einschalte.

Der Code für deinen DHT22 Arduino

Bevor du den Code hochladen kannst, musst du die DHT-Bibliothek installieren. Öffne dazu in der Arduino IDE den Library Manager (Sketch → Bibliothek einbinden → Bibliotheken verwalten) und suche nach „DHT sensor library“ von Adafruit. Installiere diese Bibliothek zusammen mit der „Adafruit Unified Sensor“ Bibliothek.

Die LiquidCrystal-Bibliothek ist bereits in der Arduino IDE vorinstalliert.

Der vollständige Sketch

Hier ist der komplette Code für dein Projekt:

#include <LiquidCrystal.h>
#include <DHT.h>

#define DHTPIN 8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);                                  
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float humidity, temperature;                               
 
void setup() {
  dht.begin();
  lcd.begin(16, 2);
}

void loop() {
  humidity = dht.readHumidity();                           
  temperature = dht.readTemperature();                     
  delay(2000);
  lcd.setCursor(8, 0);
  lcd.print("Temperatur:");
  lcd.setCursor(8, 1);
  lcd.print("Humidity:");
  lcd.setCursor(0, 0);
  lcd.print(temperature);
  lcd.setCursor(0, 1);
  lcd.print(humidity);
}

So funktioniert der Code im Detail

Lass mich dir erklären, was in den einzelnen Abschnitten passiert:

Bibliotheken und Definitionen:

  • Ich binde die benötigten Bibliotheken ein
  • Mit #define DHTPIN 8 lege ich fest, dass der Sensor an Pin 8 hängt
  • #define DHTTYPE DHT22 definiert den Sensortyp

Objekt-Initialisierung:

  • DHT dht(DHTPIN, DHTTYPE) erstellt ein DHT-Objekt mit den definierten Parametern
  • LiquidCrystal lcd(12, 11, 5, 4, 3, 2) initialisiert das LCD mit den Pin-Nummern
  • Die float-Variablen speichern später die Messwerte

Setup-Funktion:

  • dht.begin() startet den DHT-Sensor
  • lcd.begin(16, 2) initialisiert das LCD mit 16 Spalten und 2 Zeilen

Loop-Funktion:

  • dht.readHumidity() liest die Luftfeuchtigkeit aus
  • dht.readTemperature() liest die Temperatur aus
  • delay(2000) wartet 2 Sekunden (der DHT22 braucht diese Zeit zwischen den Messungen)
  • Mit lcd.setCursor() positioniere ich den Cursor
  • lcd.print() gibt die Werte und Beschriftungen auf dem Display aus

Upload und Test

Jetzt kannst du den Code hochladen:

  1. Verbinde deinen Arduino per USB mit dem Computer
  2. Wähle in der Arduino IDE das richtige Board (Tools → Board → Arduino Uno)
  3. Wähle den richtigen Port (Tools → Port)
  4. Klicke auf den Upload-Button (Pfeil nach rechts)

Nach wenigen Sekunden solltest du auf dem LCD-Display die aktuellen Werte für Temperatur und Luftfeuchtigkeit sehen. Die Werte aktualisieren sich alle 2 Sekunden.

Zur Fehlersuche: Falls keine Werte erscheinen, öffne den Seriellen Monitor (Tools → Serieller Monitor) und füge im Code Serial.begin(9600); im setup() und Serial.println(temperature); im loop() hinzu. So kannst du überprüfen, ob der Sensor überhaupt Werte liefert.

Fazit und Ausblick

Herzlichen Glückwunsch! Du hast erfolgreich gelernt, wie du mit einem DHT22 Arduino Setup Temperatur und Luftfeuchtigkeit messen und auf einem LCD-Display anzeigen kannst. Du kennst jetzt die Grundlagen der Sensorauswertung und der LCD-Ansteuerung.

Mögliche Erweiterungen

Ich habe für dich einige Ideen, wie du dein Projekt ausbauen kannst:

  • Datenlogging: Speichere die Messwerte auf einer SD-Karte für langfristige Auswertungen
  • WLAN-Anbindung: Nutze einen ESP8266 oder ESP32, um die Daten ins Internet zu senden
  • Alarmfunktion: Programmiere einen Buzzer, der bei zu hoher/niedriger Luftfeuchtigkeit warnt
  • Mehrere Sensoren: Überwache verschiedene Räume gleichzeitig
  • Grafische Darstellung: Verbinde das Projekt mit Processing oder Python für schöne Diagramme

Troubleshooting: Häufige Probleme

Problem: Display zeigt nur weiße Kästchen
Lösung: Drehe am Kontrast-Potentiometer oder verbinde V0 direkt mit GND

Problem: Temperatur zeigt „nan“ oder unrealistische Werte
Lösung: Überprüfe den Pull-Up-Widerstand und die Verkabelung des DHT22

Problem: Werte ändern sich nicht
Lösung: Stelle sicher, dass das delay(2000) im Code vorhanden ist

Problem: Display bleibt komplett dunkel
Lösung: Überprüfe die Stromversorgung (VDD und VSS) sowie die Hintergrundbeleuchtung (A und K)

Mit diesem Projekt hast du die perfekte Grundlage für viele weitere Arduino-Projekte gelegt. Der DHT22 ist extrem vielseitig einsetzbar und die LCD-Ansteuerung kannst du auch für völlig andere Anwendungen nutzen.

Viel Spaß beim Basteln und Experimentieren!


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


3 1 vote
Article Rating
9 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
8 Jahre zuvor

Hallo in die Runde,
bezüglich der Genauigkeit würde mich mal interessieren welche preiswerten Alternativen es zum DHT22 gibt.
Stimmt es, dass die rel. Luftfeuchtigkeit sehr ungenau erfasst wird?
Ein HYT-221 wäre mir einfach zu teuer da ich in insgesamt sechs Räumen Temperatur- und Luftfeuchtigkeitswerte erfassen möchte.
Vielen Dank schon mal im Voraus.

LG Patrick

Dicker Döddel
9 Jahre zuvor

Dat erinnert mich an damals als ich soetwas Beruflich gemacht habe. ich habe meine Lunte nass gemacht und diese in die Luft gehalten damit ich so die Temperatur messen kann. mhhhhhh.

Bernd
9 Jahre zuvor

Hallo Alex,
dieser (Anfänger-) Fehler hat mich eine schlaflose Nacht gekostet. Hilfe fand ich hier:
https://www.arduino.cc/en/pmwiki.php?n=Guide/Libraries#toc2

Lade die Bibliothek als .ZIP – Datei runter.
starte die Arduino IDE
geh auf: Sketch > Bibliothek einbinden > .ZIP- Bibliothek hinzufügen.. > (hier jetzt deinen Ordner und die Bibliothek auswählen)
dann sollte es funktionieren.

Viel Erfolg dh4mbm

(Ich weiß! Der Post ist schon älter, aber vieleicht haben andere Anfänger die selben Probleme wie wir.)

Alex
9 Jahre zuvor

Hallo
ich erhalte ebenfalls beim Kompilieren dauernd die Fehlermeldung :
Users/alex/Documents/Arduino/libraries/DHT22/DHT22.cpp:47:24: fatal error: WConstants.h: No such file or directory
#include „WConstants.h“

Bitte um Hilfe
Danke

Friedrich Wilhelm
9 Jahre zuvor

Hallo

Ich erhalte beim Kompilieren immer die Fehlermeldung:
„C:Program Files (x86)ArduinolibrariesDHT22DHT22.cpp:47:24: fatal error: WConstants.h: No such file or Directory“

Diese Zeile ist in DHT22.cpp unter: extern „C“

Bitte um Hilfestellung.

Peter
11 Jahre zuvor

Hallo
Ich möchte gerne folgende Schaltung bauen:
1 Sensor misst die Temperatur
wenn ein gewisser Schwellwert (zb 30 Grad) überschritten wird, sollen sich Lüfter einschalten (Standardlüfter wie sie in PCs verbaut sind)
Ist dies mit dem Arduino möglich? Wie muss ich sowas Programmieren und Bauen?

Danke für die Hilfe

Martin Mammele
11 Jahre zuvor

zum Thema temperatur und Luftfeuchtigkeit messen

wie muß das Programm geändert werden, wenn das verwendete Display über I2C angeschlossen wird? zur einsparung von Pins(2 anstatt 6)

jörg
11 Jahre zuvor

hallo ich möchte die tempertatur von mehreren räumen erfassen wie bringe ich noch mehr sensoren ein danke im voraus bin absoluter anfänger

Jörg
11 Jahre zuvor

Hallo,
in dem Schaltbild fehlt der 4,7kΩ Widerstand zwischen +5V und dem Datenpin des Sensors.

Gruß

Jörg