Dieser Sensor ist ein Kombination aus Temperatursensor und Luftfeuchtigkeitssensor, vereint in einer kompakten Bauform. Der Nachteil hierbei ist jedoch die geringe Abtastrate der Messung, so dass nur alle 2 Sekunden ein neues Messergebnis zur Verfügung steht. Dieser Sensor ist somit vorallem für Langzeit-Messungen geeignet.

Technische Daten

Chipsatz DHT11
Kommunikationsprotokoll 1-Wire
Messbereich 0°C bis 50°C
Messgenauigkeit ±2°C
Messgenauigkeit ±5%RH
Messbare Luftfeuchtigkeit 20-90%RH

Pin-Belegung

Codebeispiel Arduino

Anschlussbelegung Arduino

Arduino Sensor
Pin D2 Signal
5 V +V
Masse GND

Für das folgende Codebeispiel wird eine zusätzliche Bibliothek benötigt:

DHT-sensor-library von Adafruit | veröffentlicht unter der MIT License

Dieser Sensor gibt sein Messergebnis nicht als analoges Signal auf einen Ausgangspin aus, sondern kommuniziert diesen digital kodiert.

Das unten stehende Beispiel verwendet die erwähnte Bibliothek. Laden Sie sich daher die Bibliothek herunter und entpacken Sie diese in Ihren Arduino-Library-Ordner, welcher sich standardmäßig unter (C:\Benutzer[Benutzername]\Dokumente\Arduino\libraries) befindet. Alternativ ist diese auch im untenstehenden Download Paket enthalten.

// Adafruit_DHT Library wird eingefügt
#include "DHT.h"
 
// Hier kann der jeweilige EingangsPin deklariert werden
#define DHTPIN 2     
 
// Der Sensor wird initialisiert
#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);
 
void setup() 
{
  Serial.begin(9600);
  Serial.println("KY-015 Test - Temperatur und Luftfeuchtigkeits-Test:");
 
  // Messung wird gestartet
  dht.begin();
}
 
// Hauptprogrammschleife
// Das Programm startet die Messung und liest die gemessenen Werte aus
// Zwischen den Messungen wird eine Pause von 2 Sekunden eingelegt,
// damit beim nächsten Druchlauf eine neue Messung erfasst werden kann.
void loop() {
 
  // Zwei Sekunden Pause zwischen den Messungen
  delay(2000);
 
  // Luftfeuchtigkeit wird gemessen
  float h = dht.readHumidity();
  // Temperatur wird gemessen
  float t = dht.readTemperature();
   
  // Hier wird überprüft, ob die Messungen fehlerfrei druchgelaufen sind
  // Bei Detektion eines Fehlers, wird hier eine Fehelrmeldung ausgegeben
  if (isnan(h) || isnan(t)) {
    Serial.println("Fehler beim Auslesen des Sensors");
    return;
  }
 
  // Ausgabe in die serrielle Konsole
  Serial.println("-----------------------------------------------------------");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatur: ");
  Serial.print(t);
  Serial.print(char(186)); //Ausgabe <°> Symbol
  Serial.println("C ");
  Serial.println("-----------------------------------------------------------");
  Serial.println(" ");
}

Bitte beachten Sie, dass der Sensor nur etwa alle 2 Sekunden ein neues Messergebnis zur Verfügung stellt.

Beispielprogramm Download

KY015-Arduino.zip

Codebeispiel Raspberry Pi

Anschlussbelegung Raspberry Pi

Raspberry Pi Sensor
GPIO 23 [Pin 16] Signal
+3,3V [Pin 1] +V
Masse [Pin 6] GND

Das Programm nutzt zur Ansteuerung des DHT11-Sensors die entsprechende Adafruit_CircuitPython_DHT Library der Firma Adafruit. Diese wurde mit der MIT OpenSource-Lizenz veröffentlicht.

Diese muss zuvor installiert werden. Aktualisieren Sie daher zunächst Ihre Paketliste und installieren Sie die erforderlichen Abhängigkeiten mit den folgenden Befehlen:

sudo apt-get update
sudo apt-get install build-essential python-dev
sudo apt install gpiod
sudo pip3 install adafruit-circuitpython-dht

Nun kann das folgende Python Beispiel verwendet werden. Das Programm startet die Messung am Sensor und gibt die gemessenen Werte für den Luftdruck und die Temperatur (in °C und °F) aus.

import time
import board
import adafruit_dht

# Initialisieren Sie das dht-Gerät, wobei der Datenpin mit Pin 16 (GPIO 23) des Raspberry Pi verbunden ist:
dhtDevice = adafruit_dht.DHT11(board.D23)

# Sie können DHT22 use_pulseio=False übergeben, wenn Sie pulseio nicht verwenden möchten.
# Dies kann auf einem Linux-Einplatinencomputer wie dem Raspberry Pi notwendig sein,
# aber es wird nicht in CircuitPython funktionieren.
# dhtDevice = adafruit_dht.DHT22(board.D18, use_pulseio=False)

while True:
    try:
        # Drucken der Werte über die serielle Schnittstelle
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        print("Temp: {:.1f} F / {:.1f} C    Humidity: {}% ".format(temperature_f, temperature_c, humidity))

    except RuntimeError as error:
        # Fehler passieren ziemlich oft, DHT's sind schwer zu lesen, einfach weitermachen
        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)

Bitte beachten Sie, dass der Sensor nur etwa alle 2 Sekunden ein neues Messergebnis zur Verfügung stellt.

Beispielprogramm Download

KY015-RPi.zip

Zu starten mit dem Befehl:

sudo python3 KY015-RPi.py

Codebeispiel Micro:Bit

Anschlussbelegung Micro:Bit:

Micro:Bit Sensor
Pin 1 Signal
3V +V
Masse GND

Für das folgende Codebeispiel wird eine zusätzliche Library benötigt:

pxt-DHT11_DHT22 von alankrantas | veröffentlicht unter der MIT License

Diese Library müssen Sie vor der Benutzung des Codes zu Ihrer IDE hinzufügen. Fügen Sie die Library zu Ihrer IDE hinzu, indem Sie auf "Erweiterungen" klicken und die folgende URL in das Suchfeld eingeben: https://github.com/alankrantas/pxt-DHT11_DHT22.git. Bestätigen Sie die Suche mit [Enter].

Beispielprogramm Download

microbit-KY-015.zip