Relier un bouton poussoir à un ESP32 est souvent le premier vrai projet d'électronique embarquée : simple en apparence, il oblige à comprendre les résistances de tirage, la logique d'entrée et la gestion des rebonds. Autant de notions qui conditionnent la fiabilité de tout montage ultérieur.
Comprendre le bouton poussoir et l'ESP32
Avant de brancher quoi que ce soit, mieux vaut savoir avec quoi on travaille. Le bouton poussoir et l'ESP32 ont chacun leurs particularités, et les connaître change tout à la suite.
Fonctionnement du bouton poussoir
Mécanique simple mais déterminante : le bouton poussoir repose sur un principe de contact électrique. À l'état repos, le circuit reste ouvert — aucun courant ne circule. Lorsqu'on appuie, les deux broches internes se connectent, ferment le circuit et laissent passer le signal. C'est précisément cette transition ouverte/fermée que le microcontrôleur interprète comme une entrée numérique, permettant de déclencher n'importe quelle action programmée.
Caractéristiques de l'ESP32
Doté d'un processeur dual-core cadencé jusqu'à 240 MHz, l'ESP32 intègre nativement le Wi-Fi et le Bluetooth, ce qui le distingue des microcontrôleurs d'entrée de gamme. Cette puissance de calcul combinée à la connectivité sans fil ouvre la voie à des projets bien plus ambitieux qu'un simple bouton poussoir esp32. Sa compatibilité étendue avec capteurs, écrans et modules divers en fait une plateforme polyvalente, adoptée aussi bien par les débutants que les développeurs expérimentés.
Câblage du bouton poussoir avec l'ESP32
Schéma de connexion
Une résistance pull-down de 10 kΩ raccordée entre la broche GPIO et la masse garantit un niveau logique stable à l'état bas, évitant les lectures parasites lorsque le bouton reste inactif. Chaque composant occupe une position précise dans la chaîne électrique :
| Composant | Connexion |
|---|---|
| Bouton poussoir | GPIO 21 |
| Résistance pull-down | 10 kΩ vers GND |
| Alimentation | 3,3 V |
| Masse | GND |
| Fil signal | GPIO 21 vers bouton |
Vérification des connexions
Une connexion mal fixée suffit à rendre le bouton poussoir muet, sans le moindre message d'erreur. Avant de passer au code, parcourez cette liste de vérifications :
- Continuité des broches : testez chaque fil avec un multimètre en mode continuité — une absence de signal révèle un contact oxydé ou un câble rompu.
- Sécurité des connexions : appuyez légèrement sur chaque fil dans la breadboard ; un fil mal inséré perd le contact sous vibration.
- Alimentation confirmée : mesurez 3,3 V entre VCC et GND avant tout test logiciel.
- Résistance pull-down en place : son absence laisse la broche flotter, générant des lectures aléatoires.
- Orientation du composant : vérifiez que les deux broches actives du bouton poussoir sont bien sur des rangées électriquement séparées.
Programmation de l'ESP32 pour le bouton poussoir
Écriture du code
Deux fonctions structurent tout le code de lecture : pinMode() dans le setup(), qui déclare la broche du bouton comme INPUT et prépare l'ESP32 à recevoir un signal logique, puis digitalRead() dans la loop(), qui interroge en continu cette broche pour en lire l'état — HIGH ou LOW. Sans cette déclaration initiale, le microcontrôleur ne sait pas comment interpréter la tension appliquée sur la broche, ce qui rend toute lecture imprévisible et inexploitable.
Téléversement et test
Brancher le câble USB entre l'ESP32 et l'ordinateur déclenche la phase de vérification concrète : une fois le code téléversé depuis l'IDE Arduino, ouvrez le moniteur série pour observer en temps réel les changements d'état du bouton. Chaque appui doit y faire apparaître un message distinct, confirmant que la lecture du GPIO fonctionne correctement. Sans ce retour visuel, un comportement silencieux ne permet pas de distinguer un problème de câblage d'un bug logiciel.
Le code tourne, le bouton répond : reste à savoir quoi faire quand quelque chose cloche.
Dépannage des problèmes courants
La résistance pull-down mal connectée est la source la plus fréquente de lectures erronées : sans elle, la broche GPIO flotte entre deux états indéfinis et le microcontrôleur interprète des signaux fantômes comme des appuis réels.
Côté logiciel, un code mal téléversé peut produire exactement les mêmes symptômes qu'un problème matériel, ce qui complique le diagnostic. Avant de démonter le câblage, vérifiez d'abord dans l'IDE que le téléversement s'est terminé sans erreur, puis confirmez que l'ESP32 reçoit bien son alimentation en 3,3 V. Si le moniteur série reste muet malgré ces vérifications, relancez un téléversement complet après avoir sélectionné le bon port COM. La plupart des pannes se résolvent à ce stade.
Applications pratiques et projets
Les bases maîtrisées, le bouton poussoir ESP32 peut désormais prendre vie dans des projets concrets et utiles.
Projet d'alarme simple
Associer le composant à un buzzer transforme n'importe quelle pression en déclencheur sonore immédiat : l'ESP32 lit l'état du bouton poussoir, et lorsque le signal passe à HIGH, il active le buzzer via une sortie GPIO dédiée. Des LED complètent le dispositif en signalant visuellement l'état de l'alarme — une LED rouge pour l'alerte active, une verte pour le repos — ce qui rend le système lisible d'un coup d'œil, même sans retour sonore.
Compteur de personnes
Deux boutons poussoirs suffisent pour bâtir un compteur de personnes fonctionnel : l'un enregistre chaque entrée dans un espace, l'autre chaque sortie. L'ESP32 incrémente ou décrémente une variable à chaque appui détecté, puis transmet la valeur mise à jour vers un écran LCD connecté. Le résultat s'affiche en temps réel, offrant une lecture immédiate de l'occupation courante sans aucun calcul manuel.
Ces deux projets ne sont qu'un point de départ parmi d'autres.
Maîtriser l'interface entre un bouton poussoir et l'ESP32, c'est poser les bases de presque tout projet interactif. La logique acquise ici — résistance pull-down, lecture GPIO, debounce — se retrouvera dans chaque montage plus ambitieux qui suivra.
Questions fréquentes
Comment connecter un bouton poussoir à l'ESP32 ?
Reliez une broche du bouton à un GPIO de l'ESP32 et l'autre broche au GND. Activez la résistance pull-up interne via pinMode(pin, INPUT_PULLUP) pour éviter les états flottants. Aucun composant externe n'est nécessaire.
Comment lire l'état d'un bouton poussoir avec l'ESP32 ?
Utilisez digitalRead(pin) dans votre boucle. Avec un pull-up interne, la valeur retournée est LOW quand le bouton est pressé et HIGH au repos. Pensez à inverser votre logique en conséquence.
Comment éviter le rebond (debounce) d'un bouton sur ESP32 ?
Ajoutez un délai logiciel avec delay(50) après détection, ou utilisez la bibliothèque Bounce2. Une solution matérielle consiste à placer un condensateur de 100 nF entre la broche GPIO et le GND.
Peut-on utiliser une interruption avec un bouton poussoir sur ESP32 ?
Oui. Utilisez attachInterrupt(digitalPinToInterrupt(pin), fonction, FALLING) pour déclencher une action à chaque appui. Gardez la fonction d'interruption courte et marquez les variables partagées avec le mot-clé volatile.
Quelles broches GPIO de l'ESP32 sont compatibles avec un bouton poussoir ?
La plupart des GPIO (0 à 39) fonctionnent en entrée. Évitez les broches GPIO 6 à 11 (flash SPI interne) et GPIO 34 à 39 pour le pull-up, car elles sont en entrée seule sans résistance interne.