DHT22 sendet nicht an NodeMCU V0.9

Ich entwickle für NodeMCU V0.9 mit dem NonOS SDK und bekomme es nicht dazu, mit einem DHT22-Sensor zu kommunizieren.

Verkabelung: 3,3 V auf NodeMCU -> + auf DHT22, Masse auf - und Pin D1 auf Signal, es gibt einen 6,8 k Pull-up-Widerstand auf der Datenleitung.

Laut Datenblatt des DHT22 muss die MCU damit beginnen, die Datenleitung für etwas mehr als 1 ms auf Low zu ziehen, nachdem sie 1 ms auf High war, und dann hören, was der DHT22 sendet.

Mein Code dafür ist folgender:

gpio_output_set(_pinNumber, 0, _pinNumber, 0);
os_delay_us(START_SET_HIGH_TIME_US);
gpio_output_set(0, _pinNumber, _pinNumber, 0);
os_delay_us(START_SET_LOW_TIME_US);
gpio_output_set(0, 0, 0, _pinNumber);

Ich konnte überprüfen, ob sich die NodeMCU wie erwartet verhält, indem ich einen Logikanalysator verwendete (siehe Bild).Puls niedrig für 1,1 ms

Ich habe eine defekte DHT22 ausgeschlossen, indem ich 3 verschiedene ausprobiert habe. Das DHT22 antwortet nicht wie erwartet mit den Daten.

Ist jemandem dieses Verhalten begegnet?

Nein, da diese für das NonOs SDK nicht verfügbar sind
Ich habe meine Informationen aus dieser Bibliothek und kopiert, wie der Code funktioniert. Ich habe mir auch das Adafruit-Tutorial durchgelesen.
Das Datenblatt gibt an, dass zwischen 3,3 V und 6 V in Ordnung ist. Ich verwende 3,3 V, habe aber auch den 5-V-Ausgang der NodeMCU ausprobiert
@vicatcu Möchten Sie Ihren Kommentar zur Verwendung einer Bibliothek zum Testen, was funktioniert, als Antwort formulieren, damit ich ihn akzeptieren kann. Ich habe die Adafruit-Bibliothek mit einem Arduino ausprobiert und konnte feststellen, dass mein Verkäufer mir ein DHT11 anstelle eines DHT22 verkauft hat, also war mein Timing falsch. Ihr Kommentar hat mich zu meiner Antwort geführt.

Antworten (1)

Haben Sie versucht, eine der unzähligen Arduino-Bibliotheken zu verwenden, die mit dem DHT22 kommunizieren? Lesen Sie zum Beispiel Learn.adafruit.com/dht? Ihr Quellcode ist offen und Sie können nachahmen, was sie tun, wie Sie möchten.

Ich empfehle Ihnen, den Code aus einer Bibliothek auszuführen und zu beobachten, wie er tatsächlich funktioniert, und dann Ihren Logikanalysator zu verwenden, um zu sehen, was dieser Code tatsächlich tut, anstatt sich auf Ihre Inspektion / das Lesen des Codes zu verlassen. Wahrscheinlich haben Sie einige Nuancen der Bibliothek, die Sie als Referenz verwenden, übersehen.

Das Ausführen einer funktionierenden Bibliothek hat mir geholfen, mein Problem zu finden, danke.