ESP8266 signal fantôme sur GPIO

Bonjour à tous,

Est ce que l’un d’entre vous aurai déjà rencontré un soucis de signal fantômes sur un ESP8266 ?

J’ai branché un bouton poussoir sur mon NodeMCU sur la GPIO-14 (D5) de type : Switch input - Switch
J’utilise MQTT pour récupérer l’information dans Jeedom pour m’envoyer une notification, or je reçois des notifications aléatoires, parfois en pleine nuit sans aucun appui sur le bouton.
J’ai constaté que le soucis ne vient pas du MQTT car dans l’interface ESP Easy j’ai déjà vu le State passer de 0 à 1 sans raison.
Donc avant d’appeler un exorciste, j’aimerai savoir si ce phénomène est connu ou s’il s’agit d’un effet de bord lié peut être à l’alimentation, la broche utilisée, etc…?

Merci pour vos retours.

L’autre côté du bouton poussoir, il est connecté à la terre ou au 3.3 V ?

Est-ce qu’il y a une résistance externe de pull-up ou pull-down dans le montage ?

Un petit exemple : Comprendre les résistances de pull-up et pull-down — Wikidebrouillard

Sur les esp8266, on peut aussi activer les résistances de pullup interne. Cela est suffisant parfois sans ajouter une résistance externe. Ou utiliser D3, mais attention le NodeMCU ne bootera pas si jamais l’entrée est à la terre au démarrage (GPIO — ESP Easy 2.1-beta1 documentation).

Hello,

Merci pour cette réponse claire et intéressante.
L’autre coté du bouton est relié au GND, et j’ai activé la résistance interne.

Je vais consulter ces docs et voir si je dois rajouter une résistance, à quel niveau et de quel valeur ?

Bonjour,

N’y a t il pas un reset de l’ESP qui pourrait expliquer ce changement d’état ?
Sinon, ta brasure est elle propre : car GPIO14 est juste à coté de la pin GND.
Les PU internes font en générale x00kohms. Tu peux ajouter entre le 3V3 et GPIO14 une resistance de 10k pour mieux fixer le niveau.

J’ai vérifié les soudures au microscope électronique, ça semble bon.
Je vais tenter la résistance de 10k, merci

c’est un peu overkill ! Un multimetre aurait suffit. Et quelle est l’impédance de ton bouton ?

Le GPIO n’est pas réservé par l’ESP ?

J’ai eu le même problème et je viens de le résoudre. Il y avait simplemen des interférences, j’ai remplacé mes fils par un cable blindé (n’en ayant pas j’ai utilisé un bout de cable ethernet) et ca a résolu mon problème immédiatement !

J’avais justement utilisé un câble réseau pour le blindage, mais finalement c’est bien avec la résistance que j’ai réglé le soucis.

Bonjour,

Y a t’il une récurrence sur les heures ?

Très intéressant !
Tu as soudé entre le 3V3 et GPIO14 une resistance de 10k en plus du pull up interne que tu as laissé activé ?

De mon côté j’avais 2 switchs qui posaient problème (résolu avec le cable bindé) et deux autres (des microswitch fin de course branchés avec du simple fil téléphonique) qui n’avaient jamais posé de problème. En tout cas en environnement de test. Après avoir fait l’installation en environnement réel (mon poulailler), l’un des deux switchs fin de course s’est soudain mis à poser les mêmes problèmes, alors que le second est parfaitement stable !
Je suis donc intéressé par ta solution !

L’utilisation de la PU interne ne devrait etre réservé que pour un switch directement monté sur la carte dans un environnement faiblement perturbé.
Et utiliser un cable blindé (si tenté qu’il est était fait correctement avec liaison masse aux 2 bouts, inter-connexion cable-boitier soignée) pour protéger un signal numérique lent (un switch) dans un environnement electriquement sain (sauf si ce sont des « poules haut débit avec des moteurs à courant DC » :slight_smile: ) ne permet pas de traiter le problème à la source: le signal doit être correctement polarisé avec un PU de valeur suffisante.
Donc c’est bien une 10k entre 3V3 et GPIO14 qu’il faut ajouter (la pull up interne peut rester activée, ça ne changera rien)

Merci Djelau, tu maitrises bien le sujet !
J’ai effectivement plusieurs sources potentielles d’interférences (en tous cas c’est ce que j’imagine sans être capable d’en évaluer l’impact) :

  • camera wifi et cable d’alimentation 220v à proximité du boitier plastique contenant les circuits.
  • moteur 12v cc à proximité des switchs (ce sont des fin de course).
    Le switch qui pose problème est l’un des fin de course relié au circuit par un simple fil téléphonique torsadé non blindé.

Je vais donc installer une 10k en PU.
« Le signal correctement polarisé »: cela signifie une différence de potentiel suffisant entre les deux ?

Merci :slight_smile:

Non, cela signifie que quand l’entrée du wemos n’est pas connecté (switch ouvert), il faut que la tension sur cette entrée soit stable et définie. Plus la valeur de la PU est élevée, moins c’est stable. Avec une PU « faible », on gagne en stabilité mais on consomme plus de courant donc il faut une alimentation plus importante pour la carte électronique (quand on parle d’une seule PU c’est pas bien grave mais quand il y en a 200 ou 300 sur un systeme embarqué autonome en énergie, on a tout intérêt à avoir les PU les plus grandes possibles).

Perturbé par le wifi et l’alim 230V => peu probable
Moteur 12v => perturbateur possible mais vu que tu as utilisé un torsadage (avec la masse du wemos je suppose), celà protège correctement le signal. Il faut juste t’assurer qu’il n’y a pas trop d’espace entre les 2 fils en début et fin de torsadage (/!\ torsadage et blindage ne protègent pas de la même chose et dans le cas d’appel de courant d’un moteur, c’est le torsadage qui protege).

1 « J'aime »

Un grand merci pour ton message très instructif ! j’ignorais l’importance du torsadage.
Il y a un espace au début du torsadage et je vais y remédier avant d’installer la résistance.

De mon point de vu, la PU reste la priorité.

Oui j’ai bien rajouté la 10k entre 3V et GPIO14, en laissant le pull up interne activé.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.