Nr.16 – DHT11 und DHT22

DHT11 und DHT22

Die Sensoren DHT11 und DHT22 bieten die Möglichkeit mit dem Arduino die Luftfeuchtigkeit und Temperatur zu messen. Die Messwerte können dann über den serial monitor oder einem LCD angezeigt werden. Der DHT11 Sensor misst im Luftfeuchtigkeitsbereich von ca. 20-80% (5% Genauigkeit) und im Temperaturbereich von ca. 0-50°C (2°C Genauigkeit).

Aufgabe: Luftfeuchtigkeit und Temperatur mit dem DHT11 messen und auf dem seriellen Monitor anzeigen lassen.

Material: Arduino / Breadboard / DHT11 / 3 Kabel

Verkabelung:

In unserem Beispiel sind die vier Kontakte des DHT11 Sensors mit Hilfe einer kleinen Platine auf drei Kontakte zusammengeführt worden. Für DHT11 Sensoren ohne diese Platine kann die Verkabelung aus der Erweiterung zum DHT22 entnommen werden.


Mit Blick auf die Vorderseite des DHT11 wird der linke Kontakt mit dem Pin 2, der mittlere mit 5V und der rechte mit GND am Mikrocontroller verbunden.

dht11

Für den Code wird die DHT-sensor-library von Adafruit benötigt. Diese kann man mit der „Bibliothek einbinden“ Funktion in der Arduino Software finden. Genauere Erläuterung siehe: http://funduino.de/hardware-software#222_Bibliotheken_zur_Arduino_Softwarehinzufuegen

Code:

#include "DHT.h" //DHT Bibliothek laden

#define DHTPIN 2 //Der Sensor wird an PIN 2 angeschlossen    

#define DHTTYPE DHT11    // Es handelt sich um den DHT11 Sensor

DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dth“ angesprochen

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

  dht.begin(); //DHT11 Sensor starten
}

void loop() {
  
  delay(2000); //Zwei Sekunden Vorlaufzeit bis zur Messung (der Sensor ist etwas träge)

  
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
  
  float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
  
  Serial.print("Luftfeuchtigkeit: "); //Im seriellen Monitor den Text und 
  Serial.print(Luftfeuchtigkeit); //die Dazugehörigen Werte anzeigen
  Serial.println(" %");
  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");

}

Öffnet man nun den seriellen Monitor werden die Werte für die Luftfeuchtigkeit und Temperatur nacheinander angezeigt.

 

Erweiterung:
Auch mit dem DHT22 kann die Luftfeuchtigkeit und Temperatur gemessen werden. Dieser Sensor ist etwas genauer und hat größere Messbereiche. Bei der Luftfeuchtigkeit misst der Sensor im Bereich von 0-100% (2-5% Genauigkeit) und bei der Temperatur im Bereich von -40 bis 125°C (0,5°C Genauigkeit).

Aufhabe: Die Luftfeuchtigkeit und Temperatur mit dem DHT22 messen und auf dem seriellen Monitor anzeigen lassen.

Material: Arduino / Breadboard / DHT22 / Kabel / 10K Ohm Widerstand

Verkabelung:

Zwischen der 5V und Pin verbindung muss ein 10K Ohm Widerstand eingebaut werden.

dht22

Für den Code wird die DHT-sensor-library von Adafruit benötigt. Diese kann man mit der „Bibliothek einbinden..“ Funktion in der Arduino Software finden. Genauere Erläuterung siehe: http://funduino.de/hardware-software#222_Bibliotheken_zur_Arduino_Softwarehinzufuegen

Code:

#include "DHT.h" //DHT Bibliothek laden

#define DHTPIN 2 //Der Sensor wird an PIN 2 angeschlossen    

#define DHTTYPE DHT22    // Es handelt sich um den DHT22 Sensor

DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dth“ angesprochen

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

  dht.begin(); //DHT11 Sensor starten
}

void loop() {
  
  delay(2000);//Zwei Sekunden bis zur Messung warten damit der Sensor etwas //messen kann weil er relativ langsam ist

  
  float Luftfeuchtigkeit = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
  
  float Temperatur = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
  
  Serial.print("Luftfeuchtigkeit: "); //Im seriellen Monitor den Text und 
  Serial.print(Luftfeuchtigkeit); //die Dazugehörigen Werte anzeigen
  Serial.println(" %");
  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");

}