DHT22 et nodeMCU

Bonjour à tous,
Je m'initie au leNodeMCU (Arduino avecWiFi).
Un des petits sketchs facile est de mesurer température et % humidité et de les afficher sur un écran LCD.
Problème : ces deux grandeurs ne s'affichent que de façon très erratique. des "nan" de non fonctionnement apparaissent.
La sortie du DHT22 est reliée au +Vcc par une r de 4700 ohms.
Le NodeMCU est alimenté en 3,3 V
J'ai branché le +Vcc du DHT 22
au +5v
au +3,3 V sans que cela ne change qqchose.
J'ai branché la sortie du dht22 sur un adaptateur 3,3/5 V
et cela ne change rien non plus...
Le même sketch chargé sur un Arduino uno fonctionne....
J'ai essayé plusieurs dht 22
Pouvez-vous m'aider ?
Grand merci d'avance

Plusieurs choses :

  • Il existe des DHT22 avec d'ores et déjà une résistance et un condensateur intégré. Cela ne peut-il pas être ton cas ?
  • Je te déconseille de brancher ton DHT22 sur du 3,3V (même si cela fonctionne), utilise du 5V si tu en as.
  • Il faut à minima le code pour en savoir un peu plus.

Je m'initie au leNodeMCU (Arduino avecWiFi).

Non. un nodeMCU n'est pas un Arduino c'est un autre produit qui utilise un micro Espressif 32 bit qui n'a rien à voir avec les micros Atmel et qui bien que 32 bits n'est pas non plus un micro d'architecture ARM.

Le code source d'une fonction digitalWrite() pour Atmel avr sera différent de celui pour Atmel ARM, idem pour Espressif ce sera un troisième code source même si au final l'action visible sur la sortie sera la même.

Arduino lui même c'est plusieurs objets différents, certaines cartes utilisent des micro Atmel AVR 8bits avec Vcc = 5V, d'autres utilisent des micro Atmel ARM 32 bits avec Vcc = 3,3 V

Si tu relis une sortie DHT22 sous 5V sur une entrée Espressif sous 3,3V sans circuit pour translater les niveaux cela ne fonctionnera pas et cela peut détruire le nodeMCU.

Première chose à vérifier : est-ce que l'E/S du nodeMCU a t'elle été détruite ou pas par un signal à 5V.

Je ne connais pas suffisament les espressif pour répondre à interrogation suivante : est-ce que les fonctions et macro "arduino" utilisées par les bibliothèques pour DHT22 ont toutes été portées sur Espressif ?

Bonjour
L'environnement Arduino pour ESP8266 bénéficie d'une documentation détaillée, il serait dommage de ne pas en profiter !!
Voir içi. Donc librairie récente compatible
Quelle E/S est actuellement utilisée ?

Bonsoir,
Voici le code en pièce jointe.
Rien de particulier. Le DHT22 est branché sur GPIO12 (broche 6 du NodeMCU).
Ou bien cela ne fonctionne pas ou bien le fonctionnement es erratique

Humidite: 39.70 %	Temperature: 20.40 *C 
Humidite: 39.70 %	Temperature: 20.40 *C 
Humidite: nan %	Temperature: nan *C 
Humidite: nan %	Temperature: nan *C 
Humidite: 39.70 %	Temperature: 20.40 *C 
Humidite: 39.70 %	Temperature: 20.40 *C 
Humidite: nan %	Temperature: nan *C

La platine est alimentée par une alimentation mixte 5 V 3,3 V de YwRobot
A votre écoute pour vos précieux conseils

DHT22avecI2C.ino (1.46 KB)

Si ce qui te gêne c'est la ligne :

Humidite: nan % Temperature: nan *C

C'est probablement un "CHECKSUM ERROR"
nan = not a number
Le DHT22 est assez difficile a gérer, il ne supporte pas les codes pas assez rapides. Le sachant ses concepteurs ont prévu un codage qui permet de détecter les erreurs de réception.

Les bibliothèques sont prévues pour détecter cette erreur de somme de contrôle, par contre si elles la gèrent c'est au programmeur qui utilise les bibliothèques de vérifier qu'il a pas de "CHECKSUM ERROR" avant d'afficher les résultats.

Merci pour la réponse
Je n’aurais jamais pensé à cela (d’habitude, c’est moi qui code comme un …).
Que faire alors ?
Chercher une autre bibliothèque <dht.h> ?
J’utilise celle de adafruit (pièce jointe)

A bientôt

DHT.h (1.53 KB)

J'utilise la même librairie avec DHT11 DHT21 DHT22. Vraiment aucun soucis.

quelle est la version de la librairie Adafruit utilisée ?

voir le message #3 au sujet de la compatibilité avec les ESP

Je n'ai pas dit que la bibliothèque était mauvaise : je dis que tu ne l'utilises pas entièrement.
La liste des fonctions ou méthodes se trouve dans le fichier extension h, le code se trouve dans le fichier extension c ou cpp.
Regarde dans les exemples tu en trouvera bien un qui utilise l'info "checksum error".

Merci, j'ai bien trouvé l'exemple, je vais l'intégrer.
Dernière question (idiote ?)

Est-ce que le réglage à 115200 bauds peut être en cause ?

Pourquoi ?

Merci d'avance et à bientôt

Une bibliothèque spécifique pour l'ESP8266. Par contre l'exemple semble bizarrement écrit, comme s'il n’était pas compatible de l'IDE Arduino...
Google apporte d'autres réponses avec ''dht22 esp8266 library''