DHT22 Temperatur- und Luftfeuchtigkeitssensor


Einleitung

DHT22 ist ein beliebter Temperatur- und Luftfeuchtigkeitssensor. Die Bauform ist kompakt und lässt sich an zahlreichen Stellen platzieren. Man sollte dem Sensor jedoch keinen zu harten Umweltbedingungen zumuten. Kondensierende Feuchte arbeitet gegen die Zuverlässigkeit der Elektronik. In Innenräumen lassen sich zahlreiche Einsatzmöglichkeiten überlegen.

Pull-up Widerstand anlöten*

Die Eingangsspannung kann 3,3 V bis 5 V betragen. Sollten mehrere DHT22's eingesetzt werden, dann muss darauf geachtet werden, dass die Datenpins jeweils über einen IO-Pin ausgelesen werden müssen. DHT22 kann mit weiteren Kommunikationsteilnehmern auf der Datenleitung nicht umgehen.

ModellDHT22 (AM2302)
Betriebsspannung3.3V – 5.5V
Luftfeuchtigkeit Messbereich0 % - 99,9 %
Luftfeuchtigkeit Messgenauigkeit2 % - 5 %
Temperatur Messbereich-40 °C – 80 °C
Temperatur Messgenauigkeit±0.5 °C
Auflösung0,1 % rH/0,1 °C
Antwortzeitca. 2s
Größe40 x 22.5 x 9,5 mm
Gewicht7 g

DHT22 mit Arduino oder ESP

Über die Arduino IDE müssen die Bibliotheken Adafruit Unified Sensor und DHT sensor library eingebunden werden.

Dieser Beispielcode lässt sich für Arduino und ESP-Controller einsetzen.

#include "DHT.h"
#define DHT_TYPE DHT22

const int DHT_PIN = 5;

DHT dht(DHT_PIN, DHT_TYPE);

void setup() {
Serial.begin(9600);
dht.begin();
}

void loop() {
	float h = dht.readHumidity();
	float t = dht.readTemperature();
	
	Serial.print("Temperatur: ");
	Serial.print(t);
	Serial.print("°C, Luftfeuchtigkeit: ");
	Serial.print(h);
	Serial.println("%");
	
	delay(1000);
}

DHT22 in homeassistent.io mit ESPHome

DHT22 kann problemlos in homeassistent.io mit ESPHome integrieren werden. ESPHome kann als Add-on installiert werden. Damit können sämtliche ESP's zur Home-Automatisierung beitragen. Sie können mit Sensoren oder Aktoren ausgestattet werden. Die ESP's selbst müssen nicht über die Arduino-IDE programmiert werden. Nach einem Setup können Programme Over-the-Air übertragen werden. Alles also ohne USB-Verbindung.

Als Beispiel kann das ESP32DevKitC verwendet werden. Die Programmiersprache ist dabei YAML.

YAML-Code für einen DHT22 Sensor Modell AM2302

sensor:
  - platform: dht
    model: AM2302
    pin: GPIO12#include "DHT.h"
    temperature:
      name: "PIN SD2 t"
    humidity:
      name: "PIN SD2 h"
    update_interval: 10s

YAML-Code für mehrere Sensoren

sensor:
  - platform: dht
    model: AM2302
    pin: GPIO12
    temperature:
      name: "PIN SD2 t"
    humidity:
      name: "PIN SD2 h"
    update_interval: 10s
  - platform: dht
    model: AM2302
    pin: GPIO13
    temperature:
      name: "PIN SD3 t"
    humidity:
      name: "PIN SD3 h"
    update_interval: 10s

DHT22 Anschluss an den Controller

DHT22 Pull-up Widerstand

In zahlreichen Foren wird ein Pull-up Widerstand in den Bereichen 4,7kOhm - 10kOhm empfohlen. Im eigenen Projekt kommt es bei der Dimensionierung des Wertes auf den eingesetzten Controller und andere Bedingungen wie die Leitungslänge an.

Für ESP32 (ESP32DevKitC), müssen keine Pull-up Widerstände verwendet werden.

Bei einem Anschluss an Arduinos muss ein Pull-up Widerstand ergänzt werden.

ESP32 (ESP32DevKitC)Es wird kein Pull-up Widerstand benötigt. Laut espressif-Datenblatt haben die Pull-up Widerstände der IO's vom ESP32 einen Wert von 45 kOhm.
Arduino AM2302Adafruit empfiehlt einen 10 kOhm Pull-up für Arduino AM2302.
Raspberry Pirototron.info empfiehlt einen 5,1kOhm - 10kOhm Pull-up für Raspberry Pi.
honey-pi.de empfiehlt einen 4,7kOhm - 10kOhm Pull-up für Raspberry Pi.

Mehrere DHT22 können nicht an die gleiche Datenleitung angeschossen werden. Jede Datenleitung benötigt ihren einen Pin am Controller.

Kabellänge

DHT22 mit 1,5 m Kabellänge

  • DHT22 VIN = 3,3V über ESP32 Dev Kit C
  • Kabellänge 1,5 m Drillingslitze 3x0,14 mm2
  • Software: ESPhome

Die Messung funktionierte weder mit 10 kOhm noch mit 4,7 kOhm Pull-up Widerstand. Das Anlöten von Pull-up Widerständen ist nicht notwendig.

Ein Pull-up Widerstand wird nicht benötigt bei diesem Aufbau. Die DHT22 Sensoren lieferten plausible Messwerte.

Anhang

*Ein Pull-up Widerstand so nah wie möglich am Mikrocontroller Pin ist natürlich die bessere Empfehlung!