Comment connecter un bouton à votre Raspberry Pi?  Voici deux manières de commencer, illustrées à l'aide de Python et d'une LED.

2 façons d'ajouter un bouton à votre projet Raspberry Pi

Publicité Apprendre à utiliser les broches GPIO sur votre Raspberry Pi ouvre tout un monde de possibilités. Les principes de base appris dans le cadre de projets pour débutants ouvrent la voie à des connaissances utiles à la fois en électronique et en programmation. Ce tutoriel vous montrera deux manières d’ajouter un bouton à votre projet Raspberry Pi. Le bouton

Publicité

Apprendre à utiliser les broches GPIO sur votre Raspberry Pi ouvre tout un monde de possibilités. Les principes de base appris dans le cadre de projets pour débutants ouvrent la voie à des connaissances utiles à la fois en électronique et en programmation.

Ce tutoriel vous montrera deux manières d’ajouter un bouton à votre projet Raspberry Pi. Le bouton sera utilisé pour contrôler une LED. Des instructions écrites sont disponibles sous la vidéo.

Tu auras besoin de

Pour commencer, assurez-vous de disposer des composants suivants:

  • 1 x Raspberry Pi (Tout ira bien, le modèle 3B est utilisé dans ce tutoriel)
  • 1 x bouton poussoir
  • 1 x LED
  • 1 x 220 Ohm Resistor (Les valeurs supérieures conviennent, votre LED sera simplement plus faible)
  • 1 x planche à pain
  • Brancher des fils

Une fois rassemblés, vous devriez avoir des composants qui ressemblent à ceci:

Pièces nécessaires pour le didacticiel du bouton Pi

Vous aurez également besoin d'une carte SD avec le système d'exploitation Raspbian installé. Le moyen le plus rapide de procéder consiste à utiliser l’image NOOBS (New Out Of The Box Software). Des instructions sur la façon de procéder sont disponibles dans cette vidéo:

Mise en place du circuit

Vous utiliserez les broches GPIO du Pi pour faire le circuit, et si vous ne les connaissez pas, notre guide des broches GPIO de Raspberry Pi vous aidera. Le circuit est presque identique à celui de notre précédent projet LED Raspberry Pi, avec l’ajout du bouton que vous utiliserez aujourd’hui.

Configurez votre circuit selon ce schéma:

Fritzing Diagram for Tutoriel sur le bouton Pi

  • Les broches 5v et GND se connectent aux rails d'alimentation de la planche à pain.
  • La broche 12 (GPIO 18) se connecte à la branche positive du voyant.
  • Une jambe de la résistance se fixe à la jambe négative de la DEL et l'autre jambe se fixe au rail de mise à la terre de la planche à pain.
  • La broche 16 (GPIO 23) se fixe sur un côté du bouton, l’autre côté sur le rail de mise à la terre de la planche à pain.

Une fois qu'il est configuré, voici à quoi cela devrait ressembler:

Raspberry Pi relié à un bouton et une LED sur une planche à pain.

Vérifiez votre circuit pour vous assurer qu'il est correct, puis mettez votre Raspberry Pi sous tension.

Méthode 1: la bibliothèque RPi.GPIO

Une fois que le Pi a démarré, allez dans le menu et sélectionnez Programmation> Thonny Python IDE . Un nouveau script Python s'ouvrira. Si vous êtes totalement novice en Python, c'est un très bon langage pour les débutants et il existe de nombreux endroits géniaux pour en apprendre davantage sur Python après avoir terminé ce didacticiel!

Thonny Python IDE

Commencez par importer la bibliothèque RPi.GPIO, puis définissez le mode tableau.

 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) 

Déclarez maintenant les variables pour les numéros de broche des voyants et des boutons.

 ledPin = 12 buttonPin = 16 

Notez que puisque le mode de tableau est défini sur BOARD, nous utilisons les numéros de broches plutôt que les numéros GPIO. Si cela vous semble confus, un tableau de broutage de Raspberry Pi peut vous aider à mieux comprendre.

Mon Pinout

Mise en place du bouton

Il est temps de configurer les broches GPIO. Définissez la broche LED sur la sortie et la broche du bouton sur l'entrée avec une résistance de rappel

 GPIO.setup(ledPin, GPIO.OUT) GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

Le texte après GPIO.IN fait référence à la résistance de rappel interne du Raspberry Pi. Vous devez l'activer pour obtenir une lecture nette du bouton. Étant donné que le bouton se connecte à la broche de terre, nous avons besoin d’une résistance pull-up pour maintenir la broche d’entrée HAUTE jusqu’à ce que vous appuyiez dessus.

Avant de poursuivre, examinons les résistances de soulèvement et de descente.

Entrées: Résistances Pull Up / Pull Down

Lorsque vous configurez une broche GPIO en entrée, il lit cette broche pour déterminer son état. Dans ce circuit, vous devez savoir si une broche est HIGH ou LOW pour déclencher le voyant lorsque vous appuyez sur le bouton. Ce serait simple si ceux-ci étaient les seuls états qu'une broche puisse avoir, mais malheureusement, il existe un troisième état: FLOTTANT .

Une broche flottante a une valeur comprise entre haut et bas, entraînant une action imprévisible de l'entrée. Les résistances pull-up / pull-down résolvent ceci.

Exemple de diagramme de résistance de tirage

L'image ci-dessus est un schéma simplifié d'un bouton et d'un Raspberry Pi. La broche GPIO se connecte à la terre via le bouton. La résistance de tirage interne attache la broche GPIO à l'alimentation interne Pi. Ce courant circule et la broche est tirée en toute sécurité jusqu'à HIGH.

Lorsque vous appuyez sur le bouton, la broche GPIO se connecte directement à la broche de terre et le bouton affiche une valeur basse.

Schéma de la résistance de tirage

Les résistances de tirage sont prévues lorsque le commutateur est connecté à la broche d'alimentation. Cette fois, la résistance interne attache la broche GPIO à la masse, en maintenant LOW jusqu’à ce que vous appuyiez sur le bouton.

La théorie de la résistance pull-up et pull-down est déroutante à première vue, mais constitue une connaissance importante à posséder lors de l'utilisation de microcontrôleurs. Pour l'instant, si vous ne le comprenez pas bien, ne vous inquiétez pas!

Continuons là où nous nous sommes arrêtés.

La boucle du programme

Ensuite, configurez la boucle du programme:

 while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW) 

La boucle while True exécute continuellement le code qu'elle contient jusqu'à la fin du programme. Chaque fois qu'il boucle, il met à jour le paramètre buttonState en lisant l'entrée du bouton . Tant que vous n'appuyez pas sur le bouton, il reste HAUT .

Une fois le bouton enfoncé, l'état du bouton devient BAS . Cela déclenche l' instruction if, puisque False est identique à LOW et que le voyant s'allume. L'instruction else éteint le voyant lorsque le bouton Pin est différent de False.

Enregistrez et exécutez votre script

Enregistrez votre script en cliquant sur Fichier> Enregistrer sous et en choisissant un nom de fichier. Vous pouvez exécuter l'esquisse en cliquant sur le bouton de lecture vert de la barre d'outils Thonny.

Panneau de configuration Thonny

Maintenant, appuyez sur le bouton et votre LED devrait s'allumer! Appuyez sur le bouton rouge Stop à tout moment pour arrêter le programme

Bouton gif testant gif

Si vous rencontrez des difficultés, vérifiez votre code et la configuration du circuit à la recherche d'erreurs, puis réessayez.

Méthode 2: bibliothèque zéro GPIO

La bibliothèque RPi.GPIO est fantastique, mais il y a un nouvel enfant dans le quartier. La bibliothèque GPIO Zero a été créée par Ben Nuttall, gestionnaire de la communauté Raspberry Pi, dans le but de simplifier le code, d’en simplifier la lecture et l’écriture.

Pour tester la nouvelle bibliothèque, ouvrez un nouveau fichier Thonny et importez la bibliothèque.

 from gpiozero import LED, Button from signal import pause 

Vous remarquerez que vous n'avez pas importé toute la bibliothèque. Etant donné que vous utilisez uniquement une LED et un bouton, vous n’avez besoin que de ces modules dans le script. Nous importons également Pause depuis la bibliothèque de signaux, qui est une bibliothèque Python pour la gestion des événements.

La configuration des broches est beaucoup plus facile avec GPIO Zero:

 led = LED(18) button = Button(23) 

Étant donné que la bibliothèque GPIO Zero possède des modules pour les voyants et les boutons, vous n'avez pas besoin de configurer les entrées et les sorties comme auparavant. Vous remarquerez que bien que les repères n'aient pas changé, les numéros ci-dessus sont différents de ceux indiqués ci-dessus. En effet, GPIO Zero utilise uniquement les numéros de broches GPIO (également appelés numéros Broadcom ou BCM).

Le reste du script ne comporte que trois lignes:

 button.when_pressed = led.on button.when_released = led.off pause() 

L'appel pause () ici arrête simplement le script de quitter lorsqu'il atteint le bas. Les événements à deux boutons sont déclenchés chaque fois que le bouton est enfoncé et relâché. Enregistrez et exécutez votre script et vous obtiendrez le même résultat qu'auparavant!

Deux façons d'ajouter un bouton à Raspberry Pi

Parmi les deux façons de configurer le bouton, la méthode GPIO Zero semble être la plus simple. Il est toujours intéressant de connaître la bibliothèque RPi.GPIO, car la plupart des projets Raspberry Pi débutants l'utilisent. Aussi simple que soit ce projet, les connaissances peuvent être utilisées pour un certain nombre de choses.

Utiliser les broches GPIO est un excellent moyen d’apprendre et d’inventer vos propres périphériques, mais c’est loin de tout ce que vous pouvez faire avec le Pi. Notre guide non officiel de Raspberry Pi Raspberry Pi: Le didacticiel non officiel Raspberry Pi: Le didacticiel non officiel Que vous soyez un propriétaire actuel de Pi qui souhaite en savoir plus ou un propriétaire potentiel de cet appareil de la taille d'une carte de crédit, il ne s'agit pas d'un guide vous voulez manquer. Lire la suite regorge d'idées créatives et de tutoriels que vous pouvez essayer vous-même! Pour un autre tutoriel comme celui-ci, voyez comment créer un bouton de connexion Wi-Fi. Comment créer votre propre bouton de connexion Wi-Fi avec ESP8266. Comment créer votre propre bouton de connexion Wi-Fi avec ESP8266. Dans ce tutoriel, vous allez apprendre créer un bouton compatible Wi-Fi utilisant NodeMCU et IFTTT. Lire la suite .

Pour en savoir plus sur les didacticiels de projets DIY, GPIO, Python, Raspberry Pi.