Sensoren: Temperatur & Luftfeuchtigkeit mit dem DHT11

Sensoren, wie der DHT11, stellen in der Welt der Mikrocontroller quasi die Sinne dar, mit ihnen kann man beispielsweise Umwelteinflüsse beobachten und eventuell darauf reagieren. In diesem Fall beschäftigen wir uns mit der Temperatur- und Luftfeuchtigkeitsmessung und haben damit schon fast eine kleine Wetterstation.

Temperatur & Luftfeuchtigkeit mit dem DHT11

Temperatur & Luftfeuchtigkeit mit dem DHT11

Hierzu verwenden wir den sehr preiswert und einfach zu beschaffenden DHT11-Sensor, welcher mit minimaler Beschaltung einfach mit unserem Arduino, verwendet werden kann. Wer sich über das etwas andere Board wundert, es handelt sich hierbei um einen Olimexino-32U4, einen Leonardo-Klon.

Hierzu benötigen wir lediglich ein paar Kabel und einen 10kOhm Widerstand.

Schaltplangröße:

1afbgchdie1j55101015152020252530afbgchdie30jOlimexino-32U4 (Arduino compatible) - http://blog.simtronyx.de - SVG created by Ronny Simon - All rights reserved.
Für weitere Informationen (z.B. Pinbelegungen von Bauteilen oder genaue Kabelverbindungen)
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...

Um das Rad nicht neu zu erfinden, verwenden wir um den Arduino zu programmieren noch eine zusätzliche Bibliothek, nämlich die DHT-Bibliothek von Adafruit. Wurde diese der Arduino-IDE beigefügt, kopieren wir einfach folgenden Code in einen neuen Sketch und spielen ihn auf den Arduino drauf.

Programmcode:

#include "DHT.h"   // wir verwenden hier die DHT-Bibliothek von Adafruit

#define DHTPIN 4   // Zur Messung verwendeter Pin, in unserem Fall also Pin 4

// Netterweise kann die DHT-Bibliothek mehrere Type verwenden, 
// in unserem Fall den DHT11
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);  // Initialisieren

void setup() {

  Serial.begin(9600); 
  Serial.println("DHTxx test!");

  dht.begin();
}

void loop() {

  // das Auslesen der Temperatur oder der Luftfeuchtigkeit
  // benötigt etwa 250 Millisekunden!
  // desweiteren sind die ausgelesenen Daten bis zu 2 Sekunden alt, 
  // wir haben es also mit einem langsamen Sensor zu tun
  float h = dht.readHumidity();    // Auslesen der Luftfeuchtigkeit
  float t = dht.readTemperature(); // Auslesen der Temperatur

  // Überprüfen ob die Werte gültig sind, wenn sie NaN (not a number) -
  // auf Deutsch "keine Zahl" - sind, ist irgendetwas schiefgelaufen
  if (isnan(t) || isnan(h)) {
    Serial.println("FEHLER - Der Sensor kann nicht gelesen werden.");
  } 
  else {
    Serial.print("Luftfeuchtigkeit: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatur: "); 
    Serial.print(t);
    Serial.print(" ");  // Hier müssen wir ein wenig tricksen
    Serial.write(176);  // um das °-Zeichen korrekt darzustellen
    Serial.println("C");
  }
}

Nachdem wir nun das Programm auf den Arduino hochgeladen haben, öffnen wir den seriellen Monitor und sollten nun in kurzen Abständen neue Werte bekommen, beispielsweise wie bei mir, diese:

Grundlagen-Temperatur-und-Luftfeuchtigkeitsmessung-Serieller-Monitor

gut zu erkennen ist hierbei der Temperatur- und Luftfeuchtigkeitsanstieg, nachdem ich den Sensor angehaucht habe.

Weiterführendes Projekt:

Einfache (Raum-)Klimaüberwachung mit einem Arduino
Luftdruck, Temperatur, Luftfeuchtigkeit, Zeit und Datum

Bauteile (Bezugsquellen):

eBay: Arduino Uno
Breadboard
Breadboard Kabel
DHT11
Olimexino 32U4
Widerstand 10k
Amazon: Arduino Uno
Breadboard
Breadboard Kabel
DHT11
Olimexino 32U4
Widerstand 10k

Gut?

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail