Forum: Mikrocontroller und Digitale Elektronik ESP32 mit DHT22


von Bjoern (bjoern_w803)


Lesenswert?

Hallo,

ich plane 5 DHT Sensoren an einem ESP32 Development Board zu betreiben.
Die DHT Sensoren sind jeweils in den Zimmern im Haus verteilt. Der ESP32 
sitzt zentral. Die Kabelverbindung läuft über 1.5 mm2 Kabel.

Soweit ich verstanden habe sind die GPIOs des ESP32 für 3.3V ausgelegt 
sind.

Jetzt habe ich im Datenblatt zum DHT 22 gelesen, dass der mit einer 
Spannung von 3.3V - 6V betrieben werden kann, wobei 5V empfohlen sind 
und ein Pullup Widerstand (10K) zwischen DATA und VCC sitzen sollte. 
Aber liegen dann nicht 5V am GPIO des ESP32?

Ich habe schon eine ähnliche Konstellation laufen:
- Wemos D1 Mini mit einem Powershield
- AM2301
Die AM2301 werden mit 5V versorgt. Messe ich am GPIO sehe ich ca. 4.9V. 
Ich wäre jetzt davon ausgegangen, dass der Wemos auch nur 3.3V am GPIO 
verträgt. Warum ist der noch nicht gestorben?

Gruß
bjoern_w803

von MaWin (Gast)


Lesenswert?

Bjoern schrieb:
> Die DHT Sensoren sind jeweils in den Zimmern im Haus verteilt. Der ESP32
> sitzt zentral.

Das wird kaum stabil funktionieren.

Bjoern schrieb:
> Aber liegen dann nicht 5V am GPIO des ESP32?

Der ESP32 hat 3.3V I/O.

von Bjoern (bjoern_w803)


Lesenswert?

MaWin schrieb:
> Bjoern schrieb:
>> Die DHT Sensoren sind jeweils in den Zimmern im Haus verteilt. Der ESP32
>> sitzt zentral.
>
> Das wird kaum stabil funktionieren.
>

Warum nicht?

von STK500-Besitzer (Gast)


Lesenswert?

Bjoern schrieb:
> Warum nicht?

Eine asymmetrische Schnittstelle, die für geräteinternen Gebrauch 
vorgesehen ist, fängt sich mit Sicherheit irgendwelche Störungen ein.

von Bjoern (bjoern_w803)


Lesenswert?

STK500-Besitzer schrieb:
> Eine asymmetrische Schnittstelle, die für geräteinternen Gebrauch
> vorgesehen ist, fängt sich mit Sicherheit irgendwelche Störungen ein.

Das sollte dann aber beim Wemos D1 Mini mit dem AM2301 ähnlich sein?
Das Setup betreibe ich im Erdgeschoss seit über einem Jahr.

Was wäre ein alternativer Temperatur / Humi. Sensor? Sollte man dabei 
auf I2C Sensoren ausweichen?

von Michael M. (Gast)


Lesenswert?

Hallo,

über wie viel Meter reden wir bei dem weit entfertesten Sensor?

I2C ist auch nur als Kommunikation auf einer PCB gedacht. Das weiteste 
was ich mal zu laufem bekommen hab waren 1,5-2m. (also nicht zu 
empfehlen)

Must wohl auf RS232 oder RS485 nehmen.

Vier Adrige Leitung (+,sig,sig,-)
µC <-> RS485 <-> Leitung <-> RD485 <-> µC <-> Sensor

Sonst kannst dir auch mal Temperaturdraht(typ k) angucken, dort wird die 
Auswertung ein bisschen schwieriger ;)

Gruß
Michael

von Bjoern (bjoern_w803)


Lesenswert?

Michael M. schrieb:
> über wie viel Meter reden wir bei dem weit entfertesten Sensor?

Ich kann es dir ehrlich gesagt nicht genau sagen - vielleicht maximal 
25m - gehe aber von weniger aus. Aber wie gesagt betreibe ich ein 
ähnliches Setup (siehe oben).

Mal angenommen ich würde es jetzt so testen wollen, stehe ich noch immer 
vor dem eigentlichen Problem, dass ich bei der Kabellänge 5V brauche und 
die GPIOs und für 3.3V ausgelegt sind. Da scheint sich das 'Internet' 
aber auch nicht einige zu sein, welche PINs in der Praxis mit 5v 
funktionieren ohne das Board zu schmoren.

Meine Idee wäre jetzt ein Bi-Direktionaler Level Shifter (3.3V <-> 5V).

PS: Die Datenblätter vom DHT22 sind sich bzgl. Entfernung auch nicht 
ganz einig.
Hier spricht man von 100m:
https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf
hier spricht man von 20m:
https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf

von Wolfgang (Gast)


Lesenswert?

Bjoern schrieb:
> Aber liegen dann nicht 5V am GPIO des ESP32?

Die Frage kann die das Ohmsche Gesetz beantworten. Der Spannungsabfall 
am Widerstand berechnet sich aus Widerstandswert und fließendem Strom.

Bjoern schrieb:
> Warum ist der noch nicht gestorben?

Miss die Spannung am GPIO einfach einmal nach. Es werden keine 5V sein.

Der Strom wird durch die Eingangsschutzdioden fließen.

von Bjoern (bjoern_w803)


Lesenswert?

> Bjoern schrieb:
>> Warum ist der noch nicht gestorben?
>
> Miss die Spannung am GPIO einfach einmal nach. Es werden keine 5V sein.

Danke - ich habe es bei meinem Wemos Setup nachgemessen. Da liegen ca. 
4.9V an.

> Der Strom wird durch die Eingangsschutzdioden fließen.

Wenn auf dem ESP32 eine Schutzdiode am Eingang ist, sollte er mit den 
~5V klar kommen. Oder doch lieber auf Sicherheit gehen und einen Level 
Shifter verwenden? Kosten ja nix...

: Bearbeitet durch User
von Michael M. (Gast)


Lesenswert?

nimm den Levelsifter auf jedenfall !

Dann kannste ja ausprobieren wie weit du kommst.

Gruß

von Bjoern (bjoern_w803)


Lesenswert?

Danke, Levelshifter sind bestellt und kommen übermorgen.

von MaWin (Gast)


Lesenswert?

Bjoern schrieb:
> Das Setup betreibe ich im Erdgeschoss seit über einem Jahr.

Ja und wie viele Bitfehler hast du da so? 90%? Und die restlichen 9% 
sind geraten?

von mIstA (Gast)


Lesenswert?

Bjoern schrieb:
> Ich wäre jetzt davon ausgegangen, dass der Wemos auch nur
> 3.3V am GPIO verträgt.

Gängig wäre, daß das Datenblatt Vcc+0,3V als absolutes Maximum erlaubt; 
d.h. bis max. 3,6V dürfte er noch nicht sterben.


> Warum ist der noch nicht gestorben?

Weil Dir auch das Überschreiten der maximal zulässigen Werte nicht 
garantiert, daß der Chip stirbt; aber es könnte jederzeit passieren.

von Bjoern (bjoern_w803)


Lesenswert?

MaWin schrieb:
> Ja und wie viele Bitfehler hast du da so? 90%? Und die restlichen 9%
> sind geraten?

Was würde denn bei Bitfehlern passieren? Ich bekomme falsche oder 
überhaupt keine Werte. Die falschen Werte wären aber mit Sicherheit 
nicht konstant.

Erstens habe ich natürlich (zumindest am Anfang) die Messergebnisse mit 
einem anderen Thermometer überprüft.
Zweitens - auf dem Wemos läuft Tasmota. Der schickt alles an NodeRed und 
NodeRed schiebt alles in InfluxDB. Ich habe mir gerade die 
Messergebnisse der letzten 24h angeschaut.
Alle 4min wird ein Wert in die DB geschrieben. Die Werte liegen alle 
sehr nah beieinander - Abweichung max. 0.1°C. Das würde ja der 
Messgenauigkeit entsprechen.
Was mich wundert ist, dass jeder 5te Wert leer ist. Das muss ich noch 
mal untersuchen. Stört mich aber nicht, da die Fussbodenheizung relativ 
träge reagiert.

von Bjoern (bjoern_w803)


Angehängte Dateien:

Lesenswert?

Ich habe es noch einmal geprüft. Der Test oben basierte auf einem 
Chronograf Export.
Tasmota schickt die Messungen alle 5 Minuten. Die Werte in der DB sind 
alle vorhanden und sehen gut aus.

: Bearbeitet durch User
von Uwe D. (monkye)


Lesenswert?

Michael M. schrieb:
> Hallo,
>
> über wie viel Meter reden wir bei dem weit entfertesten Sensor?
>
> I2C ist auch nur als Kommunikation auf einer PCB gedacht. Das weiteste
> was ich mal zu laufem bekommen hab waren 1,5-2m. (also nicht zu
> empfehlen)
>
> Must wohl auf RS232 oder RS485 nehmen.

Der DHT22 benutzt doch so‘n Pseudo-1-Wire Protokoll… Wenn es läuft, 
warum nicht. Meine Heizung würde ich damit nicht steuern, aber so als 
Informationsquelle für Temperatur & Luftfeuchtigkeit…

von Bjoern (bjoern_w803)


Lesenswert?

Uwe D. schrieb:
> Meine Heizung würde ich damit nicht steuern, aber so als
> Informationsquelle für Temperatur & Luftfeuchtigkeit…

Vielleicht habe ich mich da etwas falsch ausgedrückt - die Heizung wird 
damit nicht gesteuert. Aber die Thermostaten. Und was machen die 
Busch-Jäger Dinger anders? Bei den 'billigen' für 60€ sieht man nicht 
mal die Temperatur ;-)

von Wolfgang (Gast)


Lesenswert?

Bjoern schrieb:
> Die Werte liegen alle sehr nah beieinander - Abweichung max. 0.1°C.
> Das würde ja der Messgenauigkeit entsprechen.

Bestimmt nicht. Nur weil irgendetwas 100 Mal wiederholt wird, muss es 
nicht die Wahrheit sein.
Die Messgenauigkeit kannst du nur durch Vergleich mit einem kalibrierten 
Referenzthermometer bestimmen.

von Michael M. (Gast)


Lesenswert?

Bjoern schrieb:
> Was wäre ein alternativer Temperatur / Humi. Sensor? Sollte man dabei
> auf I2C Sensoren ausweichen?

Uwe D. schrieb:
>> I2C ist auch nur als Kommunikation auf einer PCB gedacht. Das weiteste
>> was ich mal zu laufem bekommen hab waren 1,5-2m. (also nicht zu
>> empfehlen)
>>

>
> Der DHT22 benutzt doch so‘n Pseudo-1-Wire Protokoll… Wenn es läuft,
> warum nicht. Meine Heizung würde ich damit nicht steuern, aber so als
> Informationsquelle für Temperatur & Luftfeuchtigkeit…

hä ? hab doch nur auf seine Frage zu I2C geantwortet ...

Gruß

von Uwe D. (monkye)


Lesenswert?

Michael M. schrieb:
> Bjoern schrieb:
>> Was wäre ein alternativer Temperatur / Humi. Sensor? Sollte man
>> Der DHT22 benutzt doch so‘n Pseudo-1-Wire Protokoll… Wenn es läuft,
>> warum nicht. Meine Heizung würde ich damit nicht steuern, aber so als
>> Informationsquelle für Temperatur & Luftfeuchtigkeit…
>
> hä ? hab doch nur auf seine Frage zu I2C geantwortet ...
>
> Gruß

Ja, das habe ich schon verstanden und war keine Kritik an Deinen 
Ausführungen. Mir ging es darum, dass dieses spezielle Protokoll ja laut 
Hersteller für dies Leitungslänge besser geeignet scheint als I2C. Hätte 
ich schreiben sollen als es nur zu denken…

von Bjoern (bjoern_w803)


Angehängte Dateien:

Lesenswert?

So,

Testaufbau ist im Screenshot enthalten, wobei die Leitungslänge darin 
nicht zu erkennen ist.
Der Pullup-Widerstand ist direkt beim DHT22. Zwischen DHT22 und 
Lvl-Shifter sind ein paar Meter.

Es gibt schon ein paar Fehler:
11:40:36.830 DHT: Pin27 read 01F700F6EE
11:40:40.831 DHT: Pin27 read 01F700F6EE
11:40:44.876 DHT: Pin27 timeout waiting for high pulse
11:40:48.841 DHT: Pin27 read 01F700F6EE
11:40:52.843 DHT: Pin27 read 01F700F6EE

Die erfolgreichen Reads sind ok. Die timeouts kommen regelmäßig. Ich 
habe spaßeshalber mal eine Tasmota ESP32 mit einer geringeren CPU 
Taktung (80MHz anstatt 240MHz) und da gibt es weniger timeouts.

Also insgesamt noch nicht schön.

cu

von immerwiederdasgleiche (Gast)


Lesenswert?

Bjoern schrieb:
> Also insgesamt noch nicht schön.

Wer Mikrokontroller-Schaltungen ohne Abblock-Kondensatoren aufbaut,
nachmacht oder verfälscht, insbesondere bei existierenden
Schaltungen die Abblock-Kondensatoren weglässt oder falsch
verschaltet oder selbst solche Schaltungen entwirft, in Verkehr
bringt und/oder aufbaut ohne Abblock-Kondensatoren nach Hersteller-
Empfehlungen zu verwenden, wird mit Zugangs-Ausschluss vom
Mikrokontroller-Forum nicht unter zwei Jahren bestraft.

von Bjoern (bjoern_w803)


Lesenswert?

Danke - kann ich noch nicht viel mit Anfangen, werde ich mir aber 
anlesen.

Habe den 10K Widerstand jetzt direkt hinter den Level Shifter auf die LV 
Seite gesetzt und siehe da, keine Timeouts mehr.

Vielleicht kann jemand etwas mit den Ergebnissen anfangen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.