ESP12-F mit DHT22-Sensor

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
der_kps
User
Beiträge: 13
Registriert: Samstag 22. Februar 2020, 19:42

Hallo,
ich habe einen ESP12-F mit der Firmware des ESP8266 geflasht und mit dem bekannten 'blink.py' getestet; es funktioniert.

Nun aber dieser Code

Code: Alles auswählen

from machine import Pin
from time import sleep
import dht
sensor = dht.DHT22(Pin(14))
while True:
  try:
    sleep(5)
    sensor.measure()
    temp = sensor.temperature()
    hum = sensor.humidity()  
    print('Temperature: %3.1f C' %temp)
    print('Humidity: %3.1f %%' %hum)
  except OSError as e:
    print('Failed to read sensor.')
Er funktioniert auf ESP32 und ESP8266 (D1-mini) aber nicht auf ESP12-F.
Dort kommt nur 'Failed to read sensor.'
Was mag der Fehler sein? Die Verdrahtung ist ok.

vG
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Du solltest du Fehler ausgeben, statt ihn abzufangen und stattdessen die wenigsagende Nachricht "Faild to read sensor" auszugeben. Dann hat man eine Chance zu erfahren, wo es denn klemmt.
der_kps
User
Beiträge: 13
Registriert: Samstag 22. Februar 2020, 19:42

OK!

Code: Alles auswählen

except OSError as e:
    print('Failed to read sensor: ', e)
zeigt
Failed to read sensor: Errno [110] ETIMEDOUT

Und nun? Woher kommt der Timeout nach

Code: Alles auswählen

sensor.measure()
Es ist doch eine Standardroutine für den DHT22. Nur bei ESP12-F funktioniert es nicht.
Auch nicht an anderen pins,
Die Sensoren BME/P 280 funktionieren.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann wird es ein Hardwareproblem sein. Zumindest aus der Sicht dieses Codes gibt es da nichts zu beanstanden, und mein naechster Schritt waere, das Oszilloskop an den betreffenden Pin zu klemmen.
der_kps
User
Beiträge: 13
Registriert: Samstag 22. Februar 2020, 19:42

Hallo,
der Vorschlag 'Oszilloskop' war eine gute Idee!
Wenn's funktioniert sehe ich ein ordentliches Impulsdiagramm auf der Datenleitung(14).
Im Fehlerfall eine Dauerlage bei Ub (soll: 3,3V).

Das Problem ist der Programmieradapter, der auch die Spannungsversorgung übernimmt.
Der eine liefert 3,1V und der andere 3,5V.

Der ESP12 benötigt 3,0-3,6V und der DHT22 3,0-6,0V.
Bei Ub=3,1V kommt es wohl (gelegentlich) zu dem Problem, dass die high/low-Schwelle beider Komponenten auf der Grenze liegen.
Versorge ich den DHT22 mit 5V(USB) und teile/begrenze den Pegel an D(14) auf 3,3V, funktioniert es mit beiden Programmieradaptern.

vG
Antworten