Achtung: Das ist die aktualisierte Version des alten Blogbeitrags zum DHT11 vom August 2014(!). Mittlerweile gibt es bessere Libraries, als dies im alten Beitrag der Fall ist und eine davon wird hier benutzt.

Der DHT11-Sensor ist eine einfache und kostengünstige Möglichkeit, um Temperatur und Luftfeuchtigkeit zu messen. Er eignet sich hervorragend für Einsteigerprojekte, da er leicht zu verwenden ist und keine komplizierte Einrichtung benötigt.

In diesem Beitrag zeige ich, wie der Sensor funktioniert, wie man ihn an einen Arduino anschließt und wie die gemessenen Werte ausgelesen werden. In der zweiten Hälfte des Videos erweitern wir den Aufbau um einen einfache Ampel aus 2 LEDs, die abhängig von der Temperatur geschaltet werde.

DHT11 und DHT22 Sensor im Vergleich

Der DHT11 ist ein günstiger Sensor mit eher bescheidener Genauigkeit. Er misst Temperaturen im Bereich von 0 bis 50 °C laut Datzenblatt mit einer Genauigkeit von ±2 °C, die Luftfeuchtigkeit im Bereich von 20 bis 80 mit einer Genauigkeit von ±5 %. Das ist ausreichend für viele einfache Projekte und meiner Erfahrung nach ist er im oft benötigten Bereich rund um die Zimmertemperatur ziemlich genau.

von links: DHT11, DHT11 Breakout Modul, DHT22

Für Anwendungen, bei denen größere Messbereiche oder eine höhere Präzision benötigt werden, ist der DHT22 die bessere Wahl. Dieser Sensor kann Temperaturen von -40 bis +80 °C mit einer Genauigkeit von ±0,5 °C und Luftfeuchtigkeiten von 0 bis 100 % messen. Dadurch eignet er sich für anspruchsvollere Projekte, ist jedoch etwas teurer. Der Programmcode zur Ansteuerung ist fast identisch.

Aufbau und Funktion des DHT11

Im Inneren des DHT11 befinden sich ein Thermistor, also ein temperaturempfindlicher Widerstand, und ein feuchtigkeitsempfindlicher Kondensator. Diese beiden Komponenten messen die Umgebungstemperatur und die Luftfeuchtigkeit. Allerdings liefern sie zunächst nur analoge Spannungswerte. Damit der Sensor direkt mit einem Mikrocontroller wie dem Arduino kommunizieren und digitale Werte liefern kann, ist im DHT11 ein Mikrocontroller integriert. Dieser wandelt die analogen Spannungswerte in digitale Daten um und stellt sie über ein einzelnes Datenpin bereit. Die einfache Datenübertragung macht den DHT11 besonders für Einsteigerprojekte geeignet.

Die Pinbelegung des DHT11

Das Gehäuse des DHT11 hat vier Pins, aber nur drei davon werden verwendet: Pin 1 ganz links ist VCC, Pin 4 ganz rechts GND und Pin 2 ist das DATA-Pin. VCC ist der Pluspol für die Versorgungsspannung und nimmt Spannungen von 3 bis 5 V auf. GND ist der Masseanschluss. Pin 3 wird nicht verwendet. Falls du eine Version des Sensors auf einem Breakout-Modul verwendest, kann die Pin-Belegung anders sein. Bitte da auf die Beschriftung oder das Datenblatt achten!

Anschluss des DHT11 an den Arduino

Für den Anschluss benötigst du ein Arduino-Board (z. B. den UNO R3), den DHT11-Sensor und, falls du den nackten Sensor ohne Breakout-Board verwendest, einen Widerstand im Bereich von 5-10kΩ. Dieser Widerstand wird als Pull-up-Widerstand zwischen dem Datenpin und VCC geschaltet, um den Datenpin im Ruhezustand auf einen definierten Pegel (HIGH) zu setzen.

Der Anschluss ist einfach: Pin 1 (VCC) wird mit dem 5V-Pin des Arduino verbunden, Pin 4 (GND) mit GND und Pin 2 (DATA) mit einem digitalen Pin des Arduino, zum Beispiel Digitalpin 2. Das reicht bereits, um die Daten des Sensors auslesen zu können.

Messung und Ausgabe der Werte

Der DHT11 kommuniziert über ein einfaches serielles Protokoll. Dabei werden die Daten über eine Abfolge von HIGH- und LOW-Signalen (5 V bzw. 0 V) übertragen. Für den Datenaustausch mit dem DHT11 (oder DHZ22) gibt es die sehr gute Bibliothek namens „DHT sensor library“ von Adafruit. Diese Bibliothek stellt alle nötigen Funktionen zum Auslesen von Temperatur und Luftfeuchtigkeit bereit.

Die Bibliothek kann über den Bibliotheksmanager in der Arduino IDE installiert werden (Werkzeuge -> Bibliotheken verwalten). Suche einfach nach „DHT sensor library“ und wähle die Version von Adafruit aus. Zusätzlich wird die „Unified Sensor Library“ von Adafruit benötigt. In neueren Arduino-Versionen erfolgt die Installation automatisch, ansonsten kannst du die Bibliothek ebenfalls manuell hinzufügen.

Der Arduino Sketch (wird im Video genauer erklärt)

#include <DHT.h>

#define DHTPIN 2       // Datenpin des DHT11-Sensors
#define DHTTYPE DHT11  // Sensor-Typ DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);  // Serielle Kommunikation starten
  dht.begin();         // DHT-Sensor initialisieren
  delay(1000);         // Sensor ist eher langsam, eine Sekunde warten
  Serial.println("DHT11 Temperatur- und Luftfeuchtigkeitsmessung gestartet.");
}

void loop() {
  // Temperatur und Luftfeuchtigkeit auslesen
  float temperature = dht.readTemperature();  // Temperatur in Celsius
  float humidity = dht.readHumidity();        // Luftfeuchtigkeit in %

  // Überprüfen, ob der Sensor gültige Daten liefert
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Fehler beim Auslesen des Sensors!");
    delay(2000);  // 2 Sekunden warten und erneut versuchen
    return;
  }

  // Temperatur im seriellen Monitor ausgeben
  Serial.print("Temperatur: ");
  Serial.print(temperature);
  Serial.println(" °C");
  // Luftfeuchtigkeit im seriellen Monitor ausgeben
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(humidity);
  Serial.println(" %");

  Serial.println("-----------------------------");
  delay(2000);  // 2 Sekunden warten, bevor die Werte erneut ausgelesen werden
}Code-Sprache: PHP (php)

LED-Ampel zur Temperaturanzeige

Für eine visuelle Temperaturüberwachung kann das Projekt um eine Ampel-Anzeige aus zwei LEDs erweitert werden. Dabei zeigt eine grüne LED an, dass die Temperatur im gewünschten Bereich liegt (z. B. unter 30 °C). Eine rote LED signalisiert, wenn der eingestellte Temperaturwert überschritten wird.

Die LEDs werden über Vorwiderstände (z.B. 220Ω) mit dem Arduino verbunden. Die rote LED kommt an Digitalpin 10, die grüne LED an Digitalpin 11. Im Arduino Sketch wird die Temperatur mit dem festgelegten Grenzwert (30 °C) verglichen, und die entsprechende LED wird aktiviert.

#include <DHT.h>

#define DHTPIN 2       // Datenpin des DHT11-Sensors
#define DHTTYPE DHT11  // Sensor-Typ DHT11

#define LED_HOT 10   // Pin für die rote LED bei Temperaturen > 30 Grad
#define LED_OK 11  // Pin für die grüne LED bei Temperaturen <= 30 Grad

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);  // Serielle Kommunikation starten
  dht.begin();         // DHT-Sensor initialisieren
  delay(1000);         // Sensor ist eher langsam, eine Sekunde warten

  pinMode(LED_HOT, OUTPUT);   // Pin für LED_HOT als Ausgang festlegen
  pinMode(LED_OK, OUTPUT);  // Pin für LED_OK als Ausgang festlegen

  // LEDs ausschalten
  digitalWrite(LED_HOT, LOW);
  digitalWrite(LED_OK, LOW);

  Serial.println("DHT11 Temperatur- und Luftfeuchtigkeitsmessung gestartet.");
}

void loop() {
  // Temperatur und Luftfeuchtigkeit auslesen
  float temperature = dht.readTemperature();  // Temperatur in Celsius
  float humidity = dht.readHumidity();        // Luftfeuchtigkeit in %

  // Überprüfen, ob der Sensor gültige Daten liefert
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Fehler beim Auslesen des Sensors!");
    delay(2000);  // 2 Sekunden warten und erneut versuchen
    return;
  }

  // Temperatur im seriellen Monitor anzeigen
  Serial.print("Temperatur: ");
  Serial.print(temperature);
  Serial.println(" °C");
  // Luftfeuchtigkeit im seriellen Monitor ausgeben
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(humidity);
  Serial.println(" %");

  // LEDs steuern basierend auf der Temperatur
  if (temperature > 30.0) {
    digitalWrite(LED_HOT, HIGH);  // LED für hohe Temperatur einschalten
    digitalWrite(LED_OK, LOW);  // LED für normale Temperatur ausschalten
    Serial.println("Temperatur > 30°C: LED_HOT eingeschaltet.");
  } else {
    digitalWrite(LED_HOT, LOW);    // LED für hohe Temperatur ausschalten
    digitalWrite(LED_OK, HIGH);  // LED für normale Temperatur einschalten
    Serial.println("Temperatur <= 30°C: LED_OK eingeschaltet.");
  }

  Serial.println("-----------------------------");
  delay(2000);  // 2 Sekunden warten, bevor die Werte erneut ausgelesen werden
}Code-Sprache: PHP (php)

Der DHT11-Sensor ist ein guter Einstieg, um Temperatur und Luftfeuchtigkeit mit einem Arduino zu messen. Wenn du aber präzisere Daten benötigst, dann ist der DHT22 oder komplexere Sensoren wie der BME280 vielleicht die bessere Wahl.

Fragen oder Anregungen? Bitte in den Kommentare!


AngebotBestseller Nr. 1
ELEGOO UNO R3 Ultimate Starter Kit, Kompatibel mit Arduino IDE Vollständigster Elektronik Projekt Baukasten mit deutschem Tutorial, UNO R3 Mikrocontroller Board und Zubehör (mehr als 200 Teile)
  • Umfangreichster ELEGOO UNO R3 Starter Kit mit 63 verschiedenen Komponenten: UNO R3 Entwicklungsboard, USB-Kabel, Widerstände, LEDs, Netzteil, Relais, Steckplatine u.a. Zubehör.
  • Unsere Projekte wie z.B. das mit dem LCD Modul erfordern kein Löten. Es ist aber ein "Expansion Modul" dabei, mit dem auch weiterführende Projekte machbar sind, bei denen gelötet werden muss.
  • Auf der mitgelieferten CD steht das deutsche Tutorial (PDF) mit über 30 Lektionen, die die benötigten Programmen und einfache Erklärungen enthalten. Ein aktuelles Tutorial können Sie auch über unsere Website herunterladen.
  • Das UNO R3 Set ist für Erwachsene und Jugendliche geeignet und Sie können damit eigene Elektronik-Projekte realisieren. Vorkenntnisse über Elektronik und Programmierung sind nicht unbedingt erforderlich, aber hilfreich.
  • Unser Starter Kit schafft einen leichten Einstieg in die Arduino Programmierung und ermöglicht Ihnen einen gut gangbaren Weg zur fortgeschrittenen Programmierung, wenn Sie sich zusätzliche Lehrbücher aneignen.
AngebotBestseller Nr. 2
ELEGOO UNO R3 Starter Kit kompatibel mit Arduino IDE Projekt Einsteigerset mit Tutorial auf Deutsch, Mikrocontroller, 5V-Relais, Stromversorgungsmodul, Servomotor, Erweiterungsplatine usw.
  • Lernen Sie Arduino-Programmierung mit Leichtigkeit: Unser Kit enthält ein umfassendes PDF-Tutorial mit über 22 Lektionen und klaren Anweisungen und ist damit einfach für Anfänger geeignet.
  • Erschwinglich und umfassend: Unser Starter-Kit ist der erschwingliche Weg, um in die Programmierung einzusteigen. Es enthält alles, was Sie für die ersten Schritte benötigen, einschließlich eines LCD-Moduls mit Stiftleiste.
  • Verbessert und qualitativ hochwertig: Unser Kit enthält ein Stromversorgungsmodul, eine 9V-Batterie mit Gleichstrom und ist mit Arduino UNO R3 kompatibel, was eine hochwertige Leistung gewährleistet.
  • Vielseitig und ausbaufähig: Unser Bausatz enthält eine Prototyp-Erweiterungsplatine und einen Servomotor, sodass Sie eine breite Palette von Projekten erstellen und Ihre Fähigkeiten erweitern können.
  • Für Bastler und Studenten: Unser Bausatz ist ideal für alle, die sich für Elektronik, Robotik oder Programmierung interessieren, und eignet sich großartig für Bastler, Studenten, Pädagogen und so weiter.

Tagged on:             

One thought on “Mit dem DHT11 Sensor Temperatur und Luftfeuchtigkeit messen – Update!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload the CAPTCHA.

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..