← Alle Bauteile

DHT22 (AM2302)

Sensor

Digitaler Temperatur- und Luftfeuchtigkeitssensor. Liefert beide Messwerte ueber einen einzigen Datenpin. Etwas genauer als der billigere DHT11.

Tipps: Zwischen VCC und DATA einen 10k-Ohm Pull-Up-Widerstand einbauen! Nicht oefter als alle 2 Sekunden auslesen — der Sensor braucht Zeit.
Frag den Lernhelfer

Technische Daten

KategorieTemperatur/Luftfeuchtigkeit
SchnittstelleDigital (OneWire-aehnlich)
PinbelegungVCC, DATA, NC (nicht verbunden), GND
Anzahl Pins4
MessgroesseTemperatur, Luftfeuchtigkeit
MessbereichTemperatur: -40 bis 80 °C, Luftfeuchtigkeit: 0–100 % RH
GenauigkeitTemperatur: +-0.5 °C, Luftfeuchtigkeit: +-2 % RH
Betriebsspannung3.3V – 5.0V
Stromverbrauch1.5 mA
DatenblattPDF oeffnen

Anschluss

Arduino Uno R3

Pins: 5V=VCC, D2=DATA, GND=GND

Hinweise: 10k-Ohm Pull-Up-Widerstand zwischen DATA und VCC. Pin 3 (NC) bleibt frei.

Codebeispiele

Temperatur und Luftfeuchtigkeit messen Anfaenger

Dieses Programm liest alle 2 Sekunden Temperatur und Luftfeuchtigkeit vom DHT22-Sensor und zeigt die Werte im Seriellen Monitor an. Oeffne den Seriellen Monitor mit Strg+Shift+M (Baudrate 9600).

Benoetigte Bibliotheken: DHT.h (von Adafruit, im Library Manager suchen: 'DHT sensor library')

// ============================================
// DHT22: Temperatur und Luftfeuchtigkeit messen
// ============================================
// Anschluss: VCC=5V, DATA=Pin 2, GND=GND
// Wichtig: 10k-Ohm Pull-Up zwischen DATA und VCC!

#include <DHT.h>       // Bibliothek fuer DHT-Sensoren

#define DHT_PIN 2      // Datenpin des Sensors
#define DHT_TYP DHT22  // Sensortyp (DHT22 oder DHT11)

// Sensor-Objekt erstellen
DHT sensor(DHT_PIN, DHT_TYP);

void setup() {
  Serial.begin(9600);          // Serielle Kommunikation starten
  sensor.begin();              // Sensor initialisieren
  Serial.println("DHT22 Sensor bereit!");
  Serial.println("-------------------");
}

void loop() {
  // Werte auslesen
  float temperatur = sensor.readTemperature();   // in Grad Celsius
  float feuchtigkeit = sensor.readHumidity();    // in Prozent

  // Pruefen ob die Messung geklappt hat
  if (isnan(temperatur) || isnan(feuchtigkeit)) {
    Serial.println("FEHLER: Konnte Sensor nicht auslesen!");
    Serial.println("Pruefen: Kabel, Pull-Up-Widerstand, richtiger Pin?");
  } else {
    // Werte ausgeben
    Serial.print("Temperatur: ");
    Serial.print(temperatur);
    Serial.println(" °C");

    Serial.print("Luftfeuchtigkeit: ");
    Serial.print(feuchtigkeit);
    Serial.println(" %");

    Serial.println("-------------------");
  }

  delay(2000);  // 2 Sekunden warten (DHT22 braucht mind. 2s zwischen Messungen)
}

Haeufige Probleme

DHT22 liefert NaN (Not a Number)

Symptom: Im Seriellen Monitor steht 'nan' oder 'FEHLER: Konnte Sensor nicht auslesen'

Ursache: Pull-Up-Widerstand fehlt, falscher Pin, oder zu haeufiges Auslesen

Loesung:

1. Pull-Up-Widerstand (10k Ohm) zwischen DATA und VCC pruefen — fehlt er? 2. Stimmt der Pin im Code mit der Verkabelung ueberein? 3. Ist delay() mindestens 2000 (2 Sekunden)? 4. DHT22 statt DHT11 im Code angegeben? (#define DHT_TYP DHT22)

Vermeidung: Pull-Up-Widerstand immer einbauen. Mindestens 2 Sekunden zwischen Messungen.

Projekte mit diesem Bauteil

Wetterstation mit LCD-Anzeige Mittel (Temperatur/Feuchte-Sensor)
Temperatur-Alarm mit LCD Mittel (Temperatur-Sensor)

Probleme mit DHT22 (AM2302)?

KI-Lernhelfer fragen