Comment utiliser des boutons-poussoirs avec les broches GPIO du Raspberry Pi

Si vous avez déjà utilisé une LED avec un Raspberry Pi, vous savez probablement comment fonctionnent les sorties GPIO. Le code fait circuler l’électricité à travers les broches d’entrée/sortie à usage général (GPIO), passe par les LEDs et les allume. Mais avez-vous déjà essayé de faire l’inverse ? Avec des boutons-poussoirs, vous pouvez faire exactement le contraire. Ce tutoriel vous montre comment transformer une broche GPIO en broche d’entrée, écoutant chaque pression de bouton que vous effectuez !
Table des matières
- Comment fonctionnent les boutons-poussoirs
- Boutons-poussoirs à 4 broches
- Utilisation des boutons-poussoirs avec les broches GPIO du Raspberry Pi
- Comment utiliser des boutons-poussoirs
- Matériel sur les boutons-poussoirs
- Commandes d’importation
- Commandes de configuration
- Commandes en boucle
- Questions fréquentes
À lire aussi : Comment faire clignoter des LEDs avec le Raspberry Pi
Comment fonctionnent les boutons-poussoirs
Un bouton-poussoir est un type d’interrupteur. Il a deux broches conductrices séparées qui empêchent un circuit complet en étant séparées l’une de l’autre. Lorsque vous appuyez sur un bouton-poussoir, vous poussez en fait les deux broches ensemble, complétant le circuit. Mais si vous lâchez, un mécanisme semblable à un ressort sépare à nouveau les broches.

À lire aussi : Comment transformer votre Raspberry Pi en station de visioconférence
Boutons-poussoirs à 4 broches
Le bouton-poussoir typique dans les kits de capteurs a quatre broches, chaque broche étant séparée des autres. Une plaque de métal mobile se trouve juste en dessous de la zone du bouton, qui descend et connecte toutes les autres broches lorsque le bouton-poussoir est enfoncé.

Vous trouverez deux plaques à l’intérieur d’un bouton-poussoir à 4 broches. Chacune est connectée à deux broches externes. Les deux plaques sont maintenues séparées l’une de l’autre et ne peuvent être connectées qu’en appuyant sur une troisième plaque – la plaque métallique sous le bouton.

D’une certaine manière, il y a toujours deux broches connectées dans un bouton-poussoir. Lorsque vous appuyez sur le bouton-poussoir à 4 broches, vous connectez toutes les quatre broches ensemble.
À lire aussi : Comment programmer un Arduino avec un Raspberry Pi
Utilisation des boutons-poussoirs avec les broches GPIO du Raspberry Pi
Cette fois, nous allons faire en sorte que les broches GPIO du Raspberry Pi détectent une pression de bouton d’un bouton-poussoir. Lorsque l’électricité passe à travers, le Raspberry Pi imprimera un message vous indiquant qu’il fonctionne.
Ce dont vous aurez besoin
- Bouton-poussoir (4 broches)
- Résistance (une entre 100Ω et 1000Ω devrait fonctionner)
- Fils de connexion
- Voltmètre (optionnel)
- Raspberry Pi
- Moniteur et clavier (ou SSH)
À lire aussi : Comment installer Windows 11 sur un Raspberry Pi 4
Comment utiliser des boutons-poussoirs
- Ouvrez votre éditeur de code préféré et collez le code suivant :
import RPi.GPIO as GPIO
from time import sleep
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
if GPIO.input(7) == GPIO.HIGH:
print("Pin 7 is HIGH!")
elif GPIO.input(7) == GPIO.LOW:
print("Pin 7 is LOW...")
sleep(0.15)Enregistrez sous “rpi-pushbutton.py” (ou tout autre nom que vous souhaitez tant que l’extension de fichier est la même).
Construisez le circuit. Sur une broche du bouton-poussoir, connectez-la à la broche 7 et une résistance en parallèle. Attachez un fil de connexion à une broche GND (broches 6, 7, 14, 20, 25, 30, 34 ou 39) de l’autre côté de cette résistance, puis attachez un autre fil de connexion à une broche 3.3V (broches 1 ou 17) sur une broche de bouton-poussoir séparée.

Astuce : pour trouver le bon numéro de broche, tenez votre Raspberry Pi de manière à ce que les broches GPIO se trouvent dans le coin supérieur droit. La broche en haut à gauche est la broche 1, et à sa droite se trouve la broche 2. En dessous de la broche 1 se trouve la broche 3, à droite se trouve la broche 4, et ainsi de suite.

- Allumez votre Raspberry Pi et ouvrez le terminal. Utilisez
cdpour vous déplacer dans le répertoire du script Python, puis entrezpython3 rpi-pushbutton.py. Si vous avez utilisé un nom de fichier différent, utilisez celui-ci à la place de “rpi-pushbutton.”

- Vous devriez voir une nouvelle ligne de texte disant
Pin 7 is LOW...toutes les 0.15 secondes dans le terminal. Si vous appuyez sur le bouton, la nouvelle ligne seraPin 7 is HIGH!.
Si vous inversez les broches GND et 3.3V, avec 3.3V sur la résistance et GND de l’autre côté du bouton-poussoir, vous inverserez la logique du bouton-poussoir. Il affichera Pin 7 is HIGH! tout le temps et deviendra Pin 7 is LOW lorsque vous appuyez sur le bouton.

À lire aussi : Les meilleures alternatives au Raspberry Pi de 2024 que vous devriez découvrir maintenant
Matériel sur les boutons-poussoirs
Les boutons-poussoirs utilisent deux types de résistances : pull-up et pull-down. Celui avec 3.3V connecté à la résistance est une résistance pull-up. Elle tire la tension vers le haut. Pendant ce temps, les résistances pull-down tirent la tension vers le bas en ayant une broche GND connectée à elles.
Vous pouvez toujours utiliser un bouton-poussoir sans résistance, mais cela laisse votre broche GPIO en flottement. Une broche GPIO flottante ne reçoit aucune charge électrique directe, donc elle recherche des charges dans son environnement. S’il y a un champ électromagnétique fort à proximité, par exemple, elle mesurera cela à la place.

C’est pourquoi vous avez besoin d’un point de référence. Si vous connectez la broche GPIO à 0V (GND) par défaut, alors elle mesurera 0V pendant que le bouton n’est pas pressé. Mais si vous ne le faites pas, la valeur de la broche GPIO peut être n’importe où – même des volts négatifs !
Les broches flottantes peuvent faire des choses intéressantes, cependant. Si vous laissez une broche flottante, elle peut détecter la différence de tension dans l’air, mesurant même l’effet de votre doigt se déplaçant près de la broche elle-même. C’est comme un capteur de présence électromagnétique ou quelque chose comme ça.
C’est dommage que vous ne puissiez pas simplement faire cela sur le Raspberry Pi, cependant. Pour que cela soit utile, vous aurez besoin de broches analogiques, et le Raspberry Pi ne les a pas.
Code pour les boutons-poussoirs
Sachant cela, vous devriez comprendre que la broche 7 détecte si 3.3V ou 0V passe à travers elle. Si elle détecte 3.3V, alors elle se rapporte comme HIGH. Mais si elle détecte 0V, alors elle est LOW.
Divisons le code en trois parties : commandes d’importation, commandes de configuration et commandes en boucle.
Commandes d’importation
Nous utilisons deux commandes d’importation :
import RPi.GPIO as GPIO
from time import sleepimport RPi.GPIO as GPIO importe le module RPi.GPIO, qui vous permet de faire des choses avec les broches GPIO de votre Raspberry Pi. En ajoutant as GPIO à la fin, vous dites à Python que taper GPIO équivaut à taper RPi.GPIO. Vous pouvez même le remplacer par d’autres chaînes, et le code devrait toujours fonctionner tant que vous le formatez correctement.
D’autre part, from time import sleep n’importe qu’une partie du module time de Python. Cela vous permet d’utiliser la fonction sleep().
Commandes de configuration
Nous travaillons avec les trois commandes du module RPi.GPIO sur les commandes de configuration pour régler certains paramètres.
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)Le module RPi.GPIO affiche normalement un message qui vous avertit d’utiliser les broches GPIO dès que vous démarrez le script Python. GPIO.setwarnings(False) empêche cela de se produire.
GPIO.setmode(GPIO.BOARD) est une autre commande du module RPi.GPIO. Elle dit à Python que vous utilisez le schéma de broches “BOARD”. Il existe deux types de schémas de broches dans RPi.GPIO : BOARD et BCM. BOARD vous permet de choisir des broches en utilisant les numéros de broche. BCM (abréviation de “Broadcom”) vous permet de choisir des broches avec leur canal SOC Broadcom individuel. BOARD est beaucoup plus facile à utiliser, car il est toujours le même peu importe le type de carte Raspberry Pi que vous utilisez. Le schéma de broches BCM peut changer selon le modèle que vous utilisez.
Enfin, GPIO.setup(7, GPIO.IN) vous permet de définir la broche 7 comme une broche d’entrée. Il utilise la fonction .setup() et lit 7 comme la broche que vous essayez de choisir. GPIO.IN signifie que vous essayez de la définir comme une broche d’entrée.
À lire aussi : Guide du débutant pour Arduino
Commandes en boucle
Les systèmes embarqués utilisent normalement juste quelques lignes de code et les bouclent indéfiniment. Différents langages de programmation utilisent différentes manières de le faire. Mais le concept est le même : ils utilisent une sorte de boucle. Pour Python, c’est while True:.
while True:
if GPIO.input(7) == GPIO.HIGH:
print("Pin 7 is HIGH!")
elif GPIO.input(7) == GPIO.LOW:
print("Pin 7 is LOW...")
sleep(0.15)while True: vous permet de boucler le code indéfiniment. Tout ce que vous placez à l’intérieur s’exécutera pour toujours tant qu’il y a de l’électricité sur la carte.
if GPIO.input(7) == GPIO.HIGH: est une instruction if. Elle dit que si la broche 7, qui est une broche d’entrée, est lue comme HIGH, alors elle doit exécuter tout ce qui est à l’intérieur.
print("Pin 7 is HIGH!") est à l’intérieur d’une instruction if. Tout ce qu’elle fait est d’imprimer Pin 7 is HIGH! sur la console. Vous pouvez remplacer cela par n’importe quelle chaîne, nombre ou variable qui contient cela.
Ensuite, il y a elif GPIO.input(7) == GPIO.LOW:. C’est essentiellement la même chose que if GPIO.input(7) == GPIO.HIGH: sauf pour la première partie : elle utilise elif au lieu de if. Le code elif signifie Else If. Ce qu’il dit, c’est que si tout le code ci-dessus renvoie faux, alors Python doit exécuter cette instruction else-if.
Enfin, sleep(0.15) met le code en pause pendant 0.15 secondes. Pourquoi mettre le code en pause ? C’est principalement pour des problèmes de performance. Le Raspberry Pi enverra le code de sortie si rapidement que cela va faire laguer votre interface graphique un peu. C’est encore plus prononcé si vous utilisez votre Raspberry Pi via SSH. Il y aura un délai perceptible qui ne fera qu’empirer avec le temps. Mettre le code en pause le ralentit pour éviter des problèmes de performance.
À lire aussi : Comment programmer l’Arduino via Visual Studio Code en utilisant PlatformIO
Questions fréquentes
Est-il sûr de changer les broches du Raspberry Pi à chaud ?
Changer les broches à chaud, ou remplacer les broches du Raspberry Pi sous tension, est généralement une mauvaise idée. Il est toujours plus sûr de le retirer de l’alimentation avant de changer.
Qu’est-ce qui rend les boutons-poussoirs à 4 broches meilleurs que les boutons-poussoirs à 3 broches ?
En termes d’utilité, ils sont essentiellement les mêmes. Mais avoir quatre broches vous permet de câbler le bouton-poussoir à 4 broches à un autre bouton-poussoir dans un circuit en série.
Puis-je transformer n’importe quelle broche du Raspberry Pi en broche d’entrée ?
Le Raspberry Pi peut avoir 40 broches, mais seulement 27 d’entre elles sont GPIO. Vous ne pouvez programmer que les broches GPIO en broches d’entrée et de sortie. La plupart des IDE ne vous permettront pas de reprogrammer une broche non-GPIO en broche d’entrée.
Toutes les photos et captures d’écran par Terenz Jomar Dela Cruz