|
Temperatur- und Luftfeuchtesensor DHT11

Der Temperatur und Luftfeuchtesensor DHT 11 (gibt's hier) liefert uns seine "fertigen" Daten
über einen eindrahtigen Bus.
Außer einem (Pullup-) Widerstand von 2K...10K benötigt
er keine weiteren Bauelemente.
Es gibt fertige Befehls-Bibliotheken, die ihn für uns sehr
leicht nutzbar machen.
1. Hol Dir diese Bibliothek (die zip-Datei) von dieser
Seite!
2. Erzeuge einen Ordner "libraries" in deinem Sketch-Ordner (falls
Du noch keinen "libraries"-Ordner dort hast)!
3. Entpacke die heruntergeladene zip-Datei, benenne den entpackten
Ordner "DHT" und schieb ihn nach "libraries"
4. Starte Deine Arduino-Software neu!
Ach ja: genauso gut kannst Du einen DHT22 (gibt's hier) nehmen. Der kostet zwar etwa doppelt
soviel, ist dafür aber auf 1/2 Grad Celsius genau.
Schaltung:
Baue folgende Schaltung auf:

n.c.
bedeutet: not connected (nichts angeschlossen)
Experiment 1:
Arduino holt sich die Werte vom DHT11 und gibt sie auf dem
Seriellen Monitor aus.
// Temperatur und Luftfeuchtigkeitssensor DHT11
//
// DHT11, wenn Du auf das "Gitter" schaust, ist links Pin1
//
// Pin 1: +5V ("power")
// Pin 2: Datenausgang ("data" bzw. DHTPIN)
// Pin 3: nichts angeschlossen
// Pin 4: GND
// 2K oder 5K oder 10K Widerstand von Pin 2 (data) nach Pin
1 (power)
#include "DHT.h" //von ladyada:
https://github.com/adafruit/DHT-sensor-library
#define DHTPIN 2 // benutzter
ARDUINO-Pin
#define DHTTYPE DHT11 // unser Sensor: DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop()
{
// Das Erfassen von Temperatur und Luftfeuchtigkeit
benoetigt ca. 250 Millisekunden.
float h = dht.readHumidity();
float t = dht.readTemperature();
// Check, ob die Daten Zahlen sind, falls nicht (NaN:
not a number), ist was falsch gelaufen!
if (isnan(t) || isnan(h)) {
Serial.println("Fehler beim Lesen vom
DHT-Sensor");
} else {
//t = t - 1.00; //Diese Korrektur war bei
mir noetig
Serial.print("Feuchtigkeit: ");
Serial.print(h);
Serial.print(" %\t ");
Serial.print("Temperatur: ");
Serial.print(t);
Serial.println(" Grad Celsius");
}
}
Ein aufgestecktes LCD ist
auch nicht schlecht:
Experiment 2:
Arduino holt sich die Werte vom DHT11 und gibt sie auf einem LCD
und dem Seriellen Monitor aus.
#include "DHT.h" //von
ladyada: https://github.com/adafruit/DHT-sensor-library
#define DHTPIN
15 // benutzter ARDUINO-Pin
(Analog-Pin 1)
#include
<LiquidCrystal.h>
LiquidCrystal lcd(8, 13,
9, 4, 5, 6, 7); // diese Pins werden benutzt
#define DHTTYPE
DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT11-Test");
lcd.clear(); // LCD
löschen
lcd.begin(16, 2);
// verfügbare Spalten und Zeilen
dht.begin();
}
void loop() {
// Das Erfassen von
Temperatur und Luftfeuchtigkeit benoetigt ca. 250
Millisekunden.
float h =
dht.readHumidity();
float t =
dht.readTemperature();
// Check, ob die
Daten Zahlen sind, falls nicht (NaN: not a number), ist was
falsch gelaufen!
if (isnan(t) ||
isnan(h))
{
Serial.println("Fehler beim Lesen vom DHT-Sensor");
}
else
{
Serial.print("Feuchtigkeit: ");
Serial.print(h);
Serial.print(" %\t ");
Serial.print("Temperatur: ");
Serial.print(t);
Serial.println(" Grad Celsius");
lcd.setCursor(0,0);
lcd.print("Feuchtigk.:");
lcd.print(h);
lcd.setCursor(0,1);
lcd.print("Temperatur:");
lcd.print(t);
}
}
|