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 :

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.

Bouton ESP32 MicroPython

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.
Bouton-poussoir ESP32 MicroPython

Schéma des broches

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

Schéma des broches du bouton

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.

Comment utiliser le bouton

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.

Schéma de brochage d'un bouton-poussoir à deux broches
image source: diyables.io

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.
Comment fonctionne le bouton

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

Schéma de câblage du bouton ESP32 MicroPython

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Schéma de câblage d'un bouton-poussoir à deux broches ESP32 MicroPython

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).
button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP)
  • Lire l'état de la broche ESP32.
button_state = button.value()

※ 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

from machine import Pin import time BUTTON_PIN = 21 # The ESP32 pin GPIO21 connected to the button # Set up the button pin. The Pin.PULL_UP enables the internal pull-up resistor. button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) while True: # Read the state of the button button_state = button.value() # Print the button's state print(button_state) # Wait for half a second before reading the button again time.sleep(0.5)

É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.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 1 1 1 0 0 0 0 0 0 1 1 1
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

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.

/* * Ce code ESP32 MicroPython a été développé par newbiely.fr * Ce code ESP32 MicroPython est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-micropython/esp32-micropython-button */ from machine import Pin import time BUTTON_PIN = 21 # The ESP32 pin GPIO21 connected to the button # Setup the button pin. The Pin.PULL_UP enables the internal pull-up resistor. button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) # Initialize the previous state of the button prev_button_state = 1 # Assuming the button is unpressed initially while True: # Read the current state of the button button_state = button.value() # Check if button was released if prev_button_state == 0 and button_state == 1: print("The button is released") # Check if button was pressed if prev_button_state == 1 and button_state == 0: print("The button is pressed") # Save the current state as the previous state for the next loop iteration prev_button_state = button_state

É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.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The button is pressed The button is released
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ 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é.

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !