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.
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.
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.
Die Modelle, die bereits einen Widerstand besitzen, lassen sich direkt mit dem Mikrocontroller verbinden. Hier am Beispiel eines DHT21 zu sehen:
Die Verkabelung vom DHT11 und DHT22 mit 3 Pins ist analog zu der vom DHT21.
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.
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.
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)