Arduino Lektion 6: Sensor DHT11, Temperatur und relative Luftfeuchtigkeit messen

Mit dem Sensor DHT11 kann man die Temperatur sowie die relative Luftfeuchtigkeit messen und das ganze mit nur einem Sensor.
Diesen Sensor habe ich über Amazon.de bezogen, dort findet man verschiedene Modelle, welche jedoch baugleich sind. Wer etwas mehr Zeit investiert kann wie gerne auf das Model aus Singapur zurückgreifen. Der Preis ist hier sehr niedrig nur leider die Lieferzeit mit 3 Wochen extrem hoch.

DHT11 Sensor
DHT11 Sensor zum Messen von Temperatur und der relativen Luftfeuchtigkeit

Technische Daten des Sensors DHT11

  • Messbereich der relativen Luftfeuchtigkeit 20 % bis 90 %
  • Toleranz des Messbereiches für die relative Luftfeuchtigkeit ±5 %
  • Messbereich der Temperatur 0 bis 60 °C
  • Toleranz des Messbereiches für die Temperatur ±2 °C
  • Betriebsspannung 5 V

Wer hier etwas mehr investiert und auf das Model DHT22 umsteigt, kann mit verbesserten Werten arbeiten.
Technische Daten des Sensors DHT22:

  • Messbereich der relativen Luftfeuchtigkeit 0 % bis 100 %
  • Messbereich der Temperatur -40 °C bis 80 °C

Die Schaltung

Hier nun die kurze Schaltung für den DHT11 Sensor.

DHT11 Sensor
Anschluss des DHT11 Sensors.

Zu beachten ist das die Schaltung aus der Lektion5 über den analogen PIN erfolgt und der DHT11 über einer digitalen PIN angesteuert wird.

Der Quellcode

Für den Betrieb des DHT11 Sensors am Sainsmart Mega2560 wird die DHTLibrary benötigt, welche aus dem GitHub Repository von Rob Tilaart geladen werden kann.

#include <dht.h> // DHT Library von Arduino

dht DHT; // Zuweisen eines Objektes zur Bibliothek

int sensorPin = 13 ;// Bestimmen das der Sensor DHT11 an den PWM PIN 13 angeschlossen ist.
void setup() { 
  Serial.begin(115200);  // Verbindungsgeschwindigkeit (Baudrate) auf 115200 setzen. Dieses muss mit der Übertragungsrate im Serial Monitor übereinstimmen.
} 

void loop() {
  int chk = DHT.read11(sensorPin); //Status holen
  switch (chk)
  {
    //Wenn alles OK ist.
    case DHTLIB_OK:  
                break;
    //Bei einem Checksummenfehler
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksummenfehler"); 
                break;
    //Bei einer Zeitüberschreitung der Anforderung.
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Zeitüberschreitung"); 
                break;
    default: 
                break;
  }

  //Werte ausgeben
  Serial.print("Temperatur: ");
  Serial.print(DHT.temperature, 1); //Die Temperatur auslesen.
  Serial.println("C");
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(DHT.humidity, 1);  // Die Luftfeuchtigkeit auslesen.
  Serial.println("%");
  Serial.println("");

  //Eine Pause von 2sek. der Sensor DHT11 stellt alle 2sek neue Werte zur Verfügung daher 
  //ist ein Wert < 2sek. nicht möglich bzw. unnötig.
  delay(2000);  
}

Das Video

Wie bei der Schaltung mit dem einfachen Temperatursensor ist, hier auch nur ein Bild des Aufbaues, denn das eigentlich interessante erscheint am Monitor.

DHT11 Sensor
Angeschlossener DHT11 Sensor am Mega2560
Temperatursensor DHT11 am Saintsmart Mega2360
Dieses Video ansehen auf YouTube.

Hier der Quellcode zum Download

10 Kommentare

  1. Hallo, ich kann kaum auf Deinen Photos kaum erkennen was wohin,
    mein Tip Du solltest Fritzing Diagramme nutzen.
    Hier ne kleine Info :
    “Fritzing ist eine Software, mit der man leicht und unkompliziert Aufbaupläne vor allem für Steckboard-Projekte erstellen kann. Viele verschiedene Arduino Controller aber auch Raspberry Pi und andere Boards weden schon in der Software unterstütz und erleichern so den Nutzern, einen übersichtlichen Plan zu erstellen. Dadurch fällt es einem selbst und auch anderen Nutzern leicht, das Projekt nachzuvollziehen und nachzubauen”.
    Lieben Gruss Arkadius

    1. Hallo Arkadius,

      danke für dein Kommentar. Ich habe das schon frühzeitig gemerkt und in den nachfolgenden Tutorials eingebunden.

      Gruß,

      Stefan Draeger

Kommentar hinterlassen

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