In diesem Tutorial möchte ich gerne das DHT22 Shield für den Wemos D1 mini vorstellen.
Bezug des DHT22 Shield
Das Shield kann für ca. 3 € bei ebay.de* gekauft werden. Du findest dieses aber auch etwas günstiger bei aliexpress.com oder auch manchmal auf amazon.de.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Unterschiede zwischen DHT11 & DHT22 Shields
Es gibt die DHT Temperatursensoren in 2 Versionen DHT11 & DHT22. Der DHT22 hat eine höhere Genauigkeit und einen größeren Messbereich.
DHT11 | DHT22 | |
---|---|---|
relativen Luftfeuchtigkeit | ||
Messbereich | 20 % – 90 % | 0 % – 100 % |
Toleranz | ±5 % | ±2 % |
Temperatur | ||
Messbereich | 0 °C – 60 °C | -40 °C – 80 °C |
Toleranz | ±2 °C | ±0,5 °C |
Beide Sensoren werden über den digitalen Pin D4 angesprochen.
Leider kann man somit nicht beide Sensoren an einem Wemos D1 mini betreiben.
Quellcode
Der nachfolgende Quellcode stammt vom Tutorial Arduino Lektion 29: DHT22 Sensor welches bereits den Temperatursensor DHT22 behandelt. Es ändert sich hier “nur” der digitale Pin welcher verwendet wird.
#include "DHT.h" #define DHT22PIN 4 #define DHT22TYPE DHT22 DHT dht22(DHT22PIN, DHT22TYPE); void setup(){ Serial.begin(9600); Serial.println("DHT22"); dht22.begin(); } void loop(){ float humidyDHT22 = dht22.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT22 lesen float tempDHT22 = dht22.readTemperature(); //Temperatur vom Sensor DHT22 lesen // Prüfen ob eine gültige gleitkomma Zahl empfangen wurde. // Wenn NaN (not a number) zurückgegeben wird, soll eine Fehlermeldung ausgeben werden. if (isnan(humidyDHT22) || isnan(tempDHT22)) { Serial.println("DHT22 konnte nicht ausgelesen werden"); } else { printValues("DHT22", humidyDHT22, tempDHT22); } delay(15000); } void printValues(String sensor, float humidy, float temp){ Serial.print(sensor); Serial.print("\t"); Serial.print("Luftfeuchte: "); Serial.print(humidy); Serial.print(" %\t"); Serial.print("Temperatur: "); Serial.print(temp); Serial.println(" C"); }
Hallo,
1. Sketch funktioniert nur mit GPIO 4, das entspricht Pin 2
2. die Spannungsversorgung zum DHT22 (3,3 Volt) muss verzögert angelegt werden, schein ein Init Problem zu sein
Gibt es ggf. einen Hinweis zum Problem?
Hallo Amin,
gerne helfe ich dir bei deinen Problemen weiter.
Leider konnte ich jedoch das Problem nicht genau identifizieren.
Was passiert denn bei dir genau bzw. was passiert nicht?
Gruß,
Stefan
Hallo, vielen Dank für die Antworten. Leider funktioniert die Schaltung mit D4 so nicht, habe mehrere andere Sets probiert, das gleiche Problem, es kommt keine Antwort vom DHT22. Wenn ich den DHT an D5 oder D7 (GPIO14 bzw. GPIO13) betreibe, gibt es kein Problem.
Am Pin D4 funktioniert der Sketch nur, wenn ich die 3,3 V etwas später anlege, was ja für den praktischen Betrieb (Shield montiert) nicht geht. Ich kann es mir einfach nicht erklären und finde den Umweg mit anderer Verdrahtung etwas lästig. Vielleicht gibt es ja doch noch eine andere Erklärung.
Danke jedenfalls für die angebotene Hilfestellung.
Grüße A.T.
Hallo,
ich habe dasselbe Problem wie A.T. Wenn die Spannungsversorgung nicht verzögert angelegt wird, scheint der DHT keine Daten senden zu können (isnan(humidyDHT22) || isnan(tempDHT22)). Wenn man die Spannungsversorgung kurz kappt und dann wieder anlegt, ist das Problem behoben.
Hallo,
ich verstehe nicht warum das DHT Shield ausgerechnet Pin D4 verwendet?! Meiner Meinung gibt das immer Probleme, weil D4 (GPIO2) BUILTIN_LED ist und folgende Booteigenschaften hat GPIO2: is pulled up during boot & internal LED (active LOW). Das stört wohl den DHT22.
Hab es selbst aber noch nicht ausprobiert, nur in diversen Foren gelesen.
Pin D4 is on Wemos D1 mini is used as second TXD line during boot, and for build in LED. So DHT not comunicate without modifikation. Solution you can find hier: https://blog.zs64.net/2018/02/fixing-the-wemos-d1-mini-dht22-shield/