Den DHT11 Sensor habe ich bereits vor Jahren in ähnlicher Bauform erworben und im Tutorial Arduino Lektion 6: Sensor DHT11, Temperatur und relative Luftfeuchtigkeit messen beschrieben. Dieses Tutorial beschreibt das DHT11 Shield für den Wemos D1 mini.
Im Lieferumfang sind Stiftleisten in drei verschiedenen Ausführungen enthalten, also je nach Einsatz des Shields ist etwas dabei. Ich verwende die Stiftleisten mit integrierten Buchen so, dass man ggf. noch Shields darauf stecken kann.
Das Gute an diesem Shield (was ich pers. bei den bisher anderen vorgestellten Shields vermisst habe) ist das auf der Rückseite der Pin genannt wird an welchem der DHT11 Sensor angesprochen wird.
Technische Daten
Der DHT11 Sensor hat folgende technische Eigenschaften:
- 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 5V
Anschluss
Das DHT11 Shield kann direkt auf den Wemos D1 mini gesteckt werden, oder aber mit einem Dual / Triple Base Shield angeschlossen werden.
Wie auf der Rückseite vermerkt wird der DHT11 Sensor über den digitalen Pin D4 angesprochen.
Quellcode
Für den nachfolgenden Quellcode wird die DHTLibrary benötigt, welche vom GitHub Repository RobTillaart/Arduino geladen werden kann. Der Download gestaltet sich etwas schwierig, den man benötigt einen Account von GitHub um zuerst einen Fork (Zweig) zu erstellen um dann diesen als ZIP herunterzuladen. Daher habe ich diese Bibliothek als ZIP in mein Downloadbereich aufgenommen.
Hier nun die Bibliothek zum einfachen Download als ZIP Datei.
#include "DHT.h" //DHT Bibliothek //Pin an welchem der DHT11 Sensor angeschlossen ist. //Beim DHT11 Shield ist es der digitale Pin D4. #define DHTPIN D4 //Festlegen welcher Typ von DHT Sensor verwendet wird. #define DHTTYPE DHT11 //Initialisieren des Sensors mit dem Anschluss und dem Typ DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); //Begin der seriellen Kommunikation mit 9600 Baud. //Ausgabe eines Textes auf dem seriellen Ausgang. Serial.println("Wemos D1 mini DHT11 Shield"); dht.begin(); //DHT Kommunikation beginnen. } void loop() { //Der DHT11 Sensor liefert alle 2 Sekunden einen neuen //Wert daher lohnt es sich nicht die loop konstant durchlaufen //zu lassen. delay(2000); //lesen der Luftfeuchtigkeit double luftfeuchtigkeit = dht.readHumidity(); //lesen der Temperatur in Grad Celsius double temperaturC = dht.readTemperature(); //lesen der Temperatur in Grad Fahrenheit //mit dem Boolean Parameter wird "gesteuert" ob //die Temperatur in Fahrenheit oder Celsius ausgegeben wird. double temperaturF = dht.readTemperature(true); //Prüfen ob die Werte erfolgreich gelesen wurden. if (isnan(luftfeuchtigkeit) || isnan(temperaturC) || isnan(temperaturF)) { Serial.println("Fehler beim lesen von Daten."); return; } Serial.print("Luftfeuchtigkeit: "); Serial.print(luftfeuchtigkeit); Serial.println(" %\t"); Serial.print("Temperatur: "); Serial.print(temperaturC); Serial.print(" °C "); Serial.print(temperaturF); Serial.println(" °F\t"); }
Video
Beim Aufbau und Betrieb der Schaltung, ist mir aufgefallen das der Digitale PIN D4, am Wemos D1 mini nicht korrekt verbunden ist (Das Teil ist ja auch nur ein Chinaklone was soll man erwarten?). Daher drücke ich, mit der Messspitze meines Multimeters, etwas auf diesen Kontakt.