Partage
  • Partager sur Facebook
  • Partager sur Twitter

ESP-01S + Capteur de choc

Problème de boot

20 mai 2020 à 9:12:22

Bonjour,

Cela fait plusieurs jours que je me prends la tête pourtant sur un projet tout bête.

Je souhaite réaliser un capteur de choc sur base d’un ESP01S.

Le programme ci-dessous est très simple : Si le contact du capteur de choc s’ouvre, la led clignote.

Voici le code:


#include <Arduino.h>

const int PinGreen=0;
const int PinChoc=2;

boolean EtatChoc;

void setup() {
  pinMode(PinGreen,OUTPUT);
  pinMode(PinChoc,INPUT_PULLUP);
}

void loop() {
  EtatChoc=digitalRead(PinChoc);
  
  if (EtatChoc)
  {
    digitalWrite(PinGreen,HIGH);
    delay(500);
    digitalWrite(PinGreen,LOW);
    delay(500);
  }
}

Et le cablage


Cela fonctionne mais à la condition que le boot de l’ESP01 se fasse quand le contact est ouvert.

Si le contact est fermé, la led reste allumée en fixe.

Or lorsque je vais mettre en œuvre mon projet ou si l’ESP reboot pour une raison ou une autre, je ne connais pas a priori la position du contact.

J’imagine que leur du boot, l’ESP détecte un état sur l’une de ses Pins qui ne lui permet pas de lancer le programme.

Comment au niveau câblage/électronique pourrai-je contourner le problème et faire booter normalement l’ESP quelque soit la position du capteur ?

Merci pour votre aide
  • Partager sur Facebook
  • Partager sur Twitter
27 mai 2020 à 8:35:00

Tu devrais lire cet article : https://github.com/espressif/esptool/wiki/ESP8266-Boot-Mode-Selection

Vu que les pins 0 et 2 servent à déterminer le mode de boot, c'est une mauvaise idée de connecter un capteur dessus.

En revanche, tu pourrais connecter ta LED en faisant en sorte que la pin soit dans le bon état au démarrage, soit en câblant ta LED avec le GND, soit en la câblant avec le VCC.

Pour résoudre ton problème, tu peux aussi utiliser les pins TX (GPIO1) et RX (GPIO3) ;)

Ici: https://arduino.stackexchange.com/questions/29938/how-to-i-make-the-tx-and-rx-pins-on-an-esp-8266-01-into-gpio-pins

-
Edité par lorrio 27 mai 2020 à 8:35:48

  • Partager sur Facebook
  • Partager sur Twitter
27 mai 2020 à 13:23:27

Merci lorrio,

Entre temps je me suis documenté en effet un peu et utiliser GPIO0 ou 2 pour un capteur est une mauvaise idée.

En revanche utiliser TX (GPIO1) ne marche pas non plus car il est à l'état haut lors du boot et met donc le capteur au GRD s'il est fermé pendant le boot. L'ESP est donc en mode programmation et le programme contenu ne se lance pas

La seule sortie utilisable pour mettre un capteur est donc GPIO3 (RX).

Que le capteur soit ouvert ou fermé, le boot se fait normalement en mode utilisation.

GPIO0 et 2 sont donc à réserver à des utilisations en OUTPUT

Merci pour ta réponse en tous cas

  • Partager sur Facebook
  • Partager sur Twitter
29 mai 2020 à 0:35:05

Si tu as du fil très fin (awg30 ou fil d'antenne) et que tu ne trembles pas trop, tu peux ajouter des GPIOs en soudant directement des fils sur les broches non utilisées de la puce, et recouvrir le tout de colle chaude ou d'epoxy pour que ça ne bouge plus. C'est moins pratique que d'acheter le bon module au départ (ex: esp12), mais ça peut dépanner.
  • Partager sur Facebook
  • Partager sur Twitter