Arduino Basics – DHT11, DHT21 und DHT22

In diesem Beitrag zeige ich Dir, wie Du einen DHT11, DHT21 oder DHT22  in deinen Projekt verwenden kannst. Hierfür zeige ich dir zunächst die benötigten Libraries und erkläre dir anschließend die Funktionen anhand eins Beispielcodes.

Die Sensoren

Der DHT11 und DHT22 sind sehr beliebte Sensoren für Arduino und Raspberry Pi. Beide Sensoren (und auch der DHT21) können die aktuelle Temperatur und Luftfeuchtigkeit messen. Der Unterscheid dieser Sensoren liegt in dem Messbereich und der Messgenauigkeit. Der DHT 11 hat beispielsweise einen Messbereich von 0 – 50 Grad Celsius und eine Messtoleranz von +/- 2 Grad Celsius. Im Gegensatz dazu hat der DHT22 einen Messbereich von -40 bis +80 Grad Celsius mit einer Messtoleranz von +/- 0,5 Grad Celsius.

Der DHT21 (AM2302) hebt sich hierbei von den beiden anderen Sensoren ab, da dieser in einem praktischen Gehäuse verbaut wurde. Hierdurch eignet sich dieser auch gut für Projekte außerhalb des Hauses. Man sollte ihn allerdings trotzdem nicht vollkommen ungeschützt verwenden. Technisch ist der DHT21 gleich zum DHT22, wodurch sich der DHT 21 ohne Probleme wie ein DHT22 einsetzen lässt. 

Verkabelung

Bei der Verkabelung sollte beachtet werden, ob der Sensor bereits einen eingebauten Widerstand enthält. Bei Modellen ohne Widerstand (meisten an den vier Pins zu erkennen) sind die DHTs wie folgt zu benutzen. 

Arduino mit DHT11 auf einer Steckplatine
Arduino mit DHT11
DHT11 Pins
DHT11 Pins
Arduino mit DHT22 auf einer Steckplatine
Arduino mit DHT22
DHT22 Pins
DHT22 Pins
  • Pin 1 – 5V
  • Pin 2 – Mit 4,7k Wiederstand auf 5v und auf D4
  • Pin 3 – nicht verbinden
  • Pin 4 – GND


Die Modelle, die bereits einen Widerstand besitzen, lassen sich direkt mit dem Mikrocontroller verbinden. Hier am Beispiel eines DHT21 zu sehen:

Arduino mit DHT21 auf einer Steckplatine
Arduino mit DHT22
DHT21 Pins
DHT21 Pins
  • Pin 1 – 5V
  • Pin 2 – D4
  • Pin 3 – GND

Die Verkabelung vom DHT11 und DHT22 mit 3 Pins ist analog zu der vom DHT21.

Benötigte Libraries

Als erstes benötigen wir die DHT-sensor-library von adafruit. Diese wiederum benötigt die Library Adafruit Unified Sensor Driver- Library als Dependency. Die erste Möglichkeit ist, dass Du die beiden Libraries herunter lädst und in den Libraries-Ordner deiner Arduino IDE kopierst.
Diesen Ordner findest du für gewöhnlich unter “C:\Users\USERNAME\Documents\Arduino\libraries”

Alternative kannst du in der Bibliotheksverwaltung der Arduino IDE (Werkzeuge -> Bibliotheken verwalten…) nach DHT suchen und die DHT-sensor-Library installieren.

DHT Library in der Arduino IDE
Bibliotheksverwaltung der Arduino IDE

Da diese Library wie oben erwähnt eine Dependency benötigt, fragt die IDE ob man die benötigte Library direkt mit installieren will. Klicke einfach auf “Install all” und die IDE lädt alles was benötigt wird von selbst herunter.

DHT-Library Dependency Benachrichtigung
Abfrage zur Installation der Abhängigkeiten

Beispiel Code

Im folgenden Code wird in einer Schleife jede Sekunde die Temperatur und die Luftfeuchtigkeit abgefragt. Die ermittelten Daten werden dann im Anschluss über die Serielle Schnittstelle ausgegeben.

// DHT library
#include "DHT.h"

// Datenleitung vom DHT an PIN 4 anschliessen
#define DATAPIN 4
// DHT Type angeben (z.B. DHT11 oder DHT22)
#define DHTTYPE DHT21

// Die gerade definierten Konstanten an die DHT-library uebergeben
// (Objekt initialisieren)
DHT dht(DATAPIN, DHTTYPE);

void setup() {
  // Serielle Verbindung starten
  Serial.begin(9600);
  // DHT starten
  dht.begin(); 
}

void loop() {
  // Temperatur lesen
  float temperatur = dht.readTemperature();
  // Luftfeuchtigkeit lesen
  float luftfeuchtigkeit = dht.readHumidity(); 

  // Temperatur ausgeben
  Serial.print("Temperatur: ");
  Serial.print(temperatur);
  Serial.println(" Grad Celsius");
  
  // Luftfeuchtigkeit ausgeben
  Serial.print("Luftfeuchtigkeit: "); 
  Serial.print(luftfeuchtigkeit);
  Serial.println(" %");
  
  // Eine Sekunde warten
  delay(1000);

}
Code-Sprache: Arduino (arduino)