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).
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?
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.
elhe
elhe
elhe
elhe