🛠 Lire un bouton sur GPIO4 avec l'ESP8266-ESP-12E
Objectifs
Apprendre à lire une entrée numérique sur l'ESP8266-ESP-12E en utilisant un bouton poussoir sur GPIO4 (broche D2 des cartes NodeMCU). GPIO4 fait partie des broches « sûres » du module, avec GPIO5 : elles n'ont aucune contrainte au démarrage, contrairement à GPIO0, GPIO2 et GPIO15. On active la résistance de pull-up interne (environ 45 kΩ) avec INPUT_PULLUP, ce qui évite d'ajouter une résistance externe : le bouton relie la broche à la masse quand il est pressé, l'entrée lit alors LOW. On affiche les appuis sur la console série UART0 à 115200 bauds, et on découvre le rôle de yield pour nourrir le watchdog logiciel.
Matériel
- 1 module ESP8266-ESP-12E (ou carte NodeMCU / Wemos D1 Mini)
- 1 bouton poussoir
- 1 LED embarquée (GPIO2) ou externe avec résistance 330 Ω
- Alimentation 3,3 V stable (pic conseillé ≥ 500 mA)
- Câble USB-série (CP2102/CH340) pour la console
Code complet
// Bouton sur GPIO4 (D2), LED sur GPIO2 (D4, active-LOW sur la plupart des modules)
const uint8_t BTN = 4;
const uint8_t LED = 2;
void setup {
pinMode(BTN, INPUT_PULLUP); // pull-up interne ~45 kΩ, pas de résistance externe
pinMode(LED, OUTPUT);
Serial.begin(115200); // console sur UART0 : GPIO1 TX / GPIO3 RX
Serial.println("Pret : appuyez sur le bouton GPIO4");
}
void loop {
static uint8_t last = HIGH;
uint8_t now = digitalRead(BTN);
if (now != last) { // anti-rebond logiciel simple
delay(30);
now = digitalRead(BTN);
if (now != last) {
last = now;
Serial.println(last == LOW ? "Bouton APPUYE" : "Bouton lache");
}
}
digitalWrite(LED, last); // LED embarquée s'allume quand on appuie (active-LOW)
yield; // nourrit le watchdog logiciel (WDT)
}
Vérification attendue
Ouvre le moniteur série à 115200 bauds puis réinitialise le module : le message d'accueil s'affiche. À chaque appui, la console affiche « Bouton APPUYE » et la LED s'allume ; à chaque relâchement, « Bouton lache » et la LED s'éteint. Aucun reset intempestif ne doit survenir : si c'était le cas, soupçonne une alimentation trop faible plutôt que le code.
Erreurs fréquentes
- Oublier INPUT_PULLUP et laisser la broche flottante : l'entrée capte le bruit et affiche des appuis fantômes.
- Câbler le bouton entre GPIO4 et le 3,3 V avec INPUT_PULLUP : cela court-circuite le pull-up ; avec ce montage il faut INPUT simple et une résistance de pull-down externe.
- Utiliser GPIO6 à GPIO11 : ces broches sont reliées à la flash interne du module, le programme plante ou ne démarre plus.
- Faire une longue boucle bloquante sans yield : le watchdog logiciel (WDT) provoque un reset après quelques secondes.
- Appuyer sur le bouton pendant le boot : GPIO4 n'a pas de contrainte, mais c'est vrai pour GPIO0/GPIO2 — à vérifier avant de conclure à un bug.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht11.inoArduinoluxmetre.inoArduinoserveur-web.inoArduino