ESP32 - Bouton
Ce tutoriel vous explique comment utiliser un bouton avec l'ESP32, en utilisant MicroPython.
Les boutons peuvent être un peu délicats à utiliser avec l'ESP32, surtout pour ceux qui débutent en électronique. Décomposons les bases et évitons quelques pièges courants.
Deux enjeux clés à aborder :
- Entrées flottantes : Lorsque vous connectez un bouton à un ESP32 sans résistance, l'ESP32 peut être perturbé pour savoir si le bouton est enfoncé ou non. Cela est dû au fait que la broche d'entrée peut se trouver dans un état indéfini. Pour éviter cela, vous devrez connecter une résistance de tirage vers le bas (pull-down) ou vers le haut (pull-up). Nous expliquerons comment faire cela plus en détail plus tard.
- Rebondissement : Les boutons peuvent parfois « rebondir », ce qui signifie qu'ils passent rapidement entre les états enfoncé et non enfoncé, même lorsqu'on n'appuie qu'une seule fois. Cela peut amener l'ESP32 à lire plusieurs appuis sur le bouton. Bien que cela ne pose pas nécessairement problème dans tous les cas, cela peut être problématique dans les applications où il est essentiel de compter les appuis avec précision. Nous aborderons des techniques d'anti-rebond pour y remédier.
En comprenant ces deux problèmes et en mettant en œuvre les solutions appropriées, vous serez bien équipé pour utiliser les boutons efficacement dans vos projets ESP32.

Préparation du matériel
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Bouton À propos
Les boutons-poussoirs sont des interrupteurs qui se ferment lorsqu'on les appuie et s'ouvrent lorsqu'on les relâche. Ils sont également connus sous le nom de boutons tactiles ou d'interrupteurs momentanés. Il existe deux types principaux de boutons-poussoirs :
- PCB-mount push buttons: Designed for mounting on breadboards or printed circuit boards.
- Panel-mount push buttons: Intended for mounting on panels or enclosures.

Schéma des broches
Les boutons montés sur PCB ont généralement quatre broches.

Bien qu'un bouton ait quatre pattes, seules deux sont utilisées. C'est parce que les pattes sont connectées en interne par paires. Il existe quatre façons possibles de connecter un bouton à une carte PCB, mais deux de ces configurations sont symétriques.

Pourquoi n'utilise-t-on que deux broches sur un bouton qui en a quatre ?
⇒ Pour garantir un montage sûr sur le PCB (carte de circuits imprimés) et résister à une force de pression.
Les boutons montés sur panneau ont généralement deux broches.

Le module de bouton-poussoir comprend une résistance de tirage vers le bas intégrée, ce qui garantit que la sortie reste à l'état bas lorsque le bouton n’est pas enfoncé. Il a trois broches :
- GND: Connectez cette broche à la masse.
- VCC: Connectez cette broche à une alimentation de 3,3 V.
- OUT: Connectez cette broche à une entrée numérique sur votre ESP32.
Avec cette configuration, le module émet LOW lorsque le bouton n'est pas enfoncé et émet HIGH lorsque le bouton est enfoncé.
Comment cela fonctionne
- Lorsque le bouton n'est pas enfoncé, la broche A et la broche B ne sont pas connectées.
- Lorsque le bouton est enfoncé, la broche A et la broche B sont connectées.

ESP32 - Bouton
Une broche du bouton est connectée à VCC ou à GND, tandis que l'autre broche est connectée à une broche de l'ESP32. Nous pouvons déterminer si le bouton est appuyé en vérifiant l'état de la broche d'entrée sur l'ESP32.
État du bouton et état d'appui
Le comportement d'une broche ESP32 lorsqu'un bouton est pressé ou relâché dépend de la manière dont le bouton est connecté et de la configuration de la broche.
Deux méthodes de connexion courantes :
- Résistance de tirage vers le bas :
- Connectez un côté du bouton à VCC (alimentation) et l'autre à une broche ESP32.
- Utilisez soit une résistance de tirage vers le bas intégrée, soit une résistance de tirage vers le bas externe reliée à la broche ESP32.
- Lorsque le bouton est enfoncé, la broche ESP32 lit un niveau haut. Lorsque le bouton n'est pas enfoncé, elle lit un niveau bas.
- Résistance de tirage vers le haut :
- Connectez un côté du bouton à la masse (GND) et l'autre à une broche ESP32.
- Utilisez soit une résistance de tirage vers le haut intégrée, soit une résistance externe reliée à la broche ESP32.
- Lorsque le bouton est enfoncé, la broche ESP32 lit un niveau bas. Lorsque le bouton n'est pas enfoncé, elle lit un niveau haut.
Pourquoi utiliser une résistance de tirage vers le haut (pull-up) ou de tirage vers le bas (pull-down) ?
Sans résistance, la broche ESP32 peut être dans un état instable lorsque le bouton n'est pas enfoncé. Cela peut entraîner des lectures incorrectes. L'utilisation d'une résistance de tirage vers le haut ou vers le bas assure un état stable.
Configuration recommandée :
Pour les débutants, nous recommandons d'utiliser une résistance de tirage interne sur la broche ESP32. Cela simplifie le câblage et élimine le besoin d'une résistance externe. Vous pouvez configurer cela dans votre code MicroPython en utilisant button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP).
Souvenez-vous : L'utilisation d'une résistance pull-up ou pull-down est essentielle pour des lectures fiables des boutons sur un ESP32.
※ Note:
Les broches GPIO34, GPIO35, GPIO36 (VP) et GPIO39 (VN) de l'ESP32 ne prennent pas en charge les résistances de tirage internes (pull-up ou pull-down). Pour ces broches, vous devez utiliser une résistance de tirage externe vers le haut ou vers le bas.
Diagramme de câblage
- Comment connecter l'ESP32 et un bouton en utilisant planche de prototypage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Comment connecter l'ESP32 à un bouton monté sur le panneau en utilisant carte d'extension de bornes à vis

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Comment programmer pour un bouton
- Configure une broche ESP32 comme entrée avec une résistance de tirage interne, en utilisant la fonction Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP).
- Lire l'état de la broche ESP32.
※ Note:
Il existe deux cas habituels :
- Le premier : Si l'entrée est élevée, agir. Si l'entrée est faible, faire le contraire.
- Le deuxième : Si l'entrée passe de faible à élevée (ou de élevée à faible), agir.
En fonction de ce que nous voulons, nous choisissons l'une de ces méthodes. Par exemple, lors de l'utilisation d'un bouton pour contrôler la LED :
- Si nous voulons que la lumière s'allume lorsque le bouton est enfoncé et s'éteigne lorsqu'il est relâché, nous devrions choisir le premier cas.
- Si notre objectif est que la lumière s'allume et s'éteigne à chaque fois que le bouton est actionné, choisissez le deuxième cas.
Code MicroPython ESP32 - Lecture de l'état du bouton
Étapes rapides
Voici des instructions sur la façon de configurer et d’exécuter votre code MicroPython sur l’ESP32 en utilisant l’IDE Thonny :
- Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
- Confirmez que le firmware MicroPython est chargé sur votre carte ESP32.
- Si c'est la première fois que vous utilisez un ESP32 avec MicroPython, consultez le guide [ESP32 MicroPython Getting Started] pour des instructions étape par étape.
- Suivez le diagramme fourni pour connecter le bouton à l'ESP32.
- Utilisez un câble USB pour connecter la carte ESP32 à votre ordinateur.
- Ouvrez l'IDE Thonny sur votre ordinateur.
- Dans l'IDE Thonny, allez dans Outils Options.
- Sous l'onglet Interpreter, choisissez MicroPython (ESP32) dans le menu déroulant.
- Assurez-vous que le port correct est sélectionné. L'IDE Thonny le détecte généralement automatiquement, mais vous devrez peut-être le sélectionner manuellement (comme COM12 sur Windows ou /dev/ttyACM0 sur Linux).
- Copiez le code MicroPython fourni et collez-le dans l'éditeur de Thonny.
- Enregistrez le code sur votre ESP32 en:
- En cliquant sur le bouton Enregistrer ou en appuyant sur Ctrl+S.
- Dans la boîte de dialogue d'enregistrement, choisissez Périphérique MicroPython.
- Nommez le fichier main.py.
- Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script.
- Appuyez sur le bouton vert Exécuter ou sur F5 pour exécuter votre script.
- Consultez le message dans le Shell situé en bas de l'IDE Thonny.
1 indique non appuyé, 0 indique appuyé.
Explication du code
Vous pouvez voir l'explication dans la partie des commentaires du code MicroPython ESP32 qui a été donné précédemment.
Code MicroPython ESP32 - Détection de l'appui et du relâchement du bouton
Changeons le code pour qu'il puisse reconnaître quand les boutons sont pressés et relâchés.
Étapes rapides
- Copiez le code ci-dessus et insérez-le dans l'IDE Thonny.
- Cliquez sur le bouton d'exécution vert ou appuyez sur F5 pour démarrer le script.
- Cliquez sur le bouton puis relâchez-le.
- Regardez le message dans le Shell en bas de Thonny.
※ Note:
- Parfois, si vous appuyez sur un bouton une fois, il peut afficher plusieurs appuis dans le Shell de Thonny. Ce problème fréquent est connu sous le nom de phénomène de chatter, ou rebond. Vous pouvez en savoir plus et trouver une solution dans le ESP32 - Bouton - Anti-rebond..
- Si vous utilisez le module bouton, mettez la broche en mode entrée avec button = Pin(BUTTON_PIN, Pin.IN). Dans cette configuration, le module émet LOW lorsque le bouton n’est pas enfoncé et HIGH lorsqu’il est enfoncé.