Raspberry Pi ~05 : Ajouter un bouton matériel (avec Python)

Dans ce guide, nous allons voir comment câbler un bouton au Raspberry Pi, et le faire fonctionner grâce à Python.
Nous aurons besoin pour ce guide :

  • d’un Raspberry Pi (la préparation du mini-guide ~04 est idéale)
  • d’un bouton de type micro-switch,
  • d’une platine d’expérimentation (un petit modèle suffira),
  • de deux fils Dupont male-femelle.

Commençons par mettre à jour notre distribution Raspbian, afin d’avoir les librairies qui nous intéressent :
sudo apt-get update
sudo apt-get dist-upgrade

Ou alors, pour simplement mettre à jour le composant Rpi.GPIO :
wget http://raspberry-gpio-python.googlecode.com/files/python-rpi.gpio_0.5.3a-1_armhf.deb
wget http://raspberry-gpio-python.googlecode.com/files/python3-rpi.gpio_0.5.3a-1_armhf.deb
sudo dpkg -i python-rpi.gpio_0.5.3a-1_armhf.deb
sudo dpkg -i python3-rpi.gpio_0.5.3a-1_armhf.deb

Le circuit

Circuit pour un unique bouton

Circuit pour un unique bouton

Attention au sens du bouton, tous ne sont pas cablés de la même manière. Il est conseillé de vérifier avec un multimètre quelles sont les pattes du bouton qui ferment le circuit quand on appuie dessus.

A part ca, c’est une simple question de relier une patte du switch au GND du Raspberry Pi et l’autre patte au GPIO 23 (nous avons choisi le 23, car c’est un des GPIO qui ne peut pas avoir d’autre fonction que… GPIO)

Donc, quand on appuiera sur le bouton, le GPIO 23 sera connecté directement au GND.

Le code

#!/usr/bin/env python2.7
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

# Le GPIO 23 est initialisé en entrée. Il est en pull-up pour éviter les faux signaux
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)

print "Veuillez vérifier que vous avez un bouton connecté de telle maniere"
print "qu il connecte le port GPIO 23 (pin 16) au GND (pin 6)\n"
raw_input("Pressez Entree quand vous etes pret\n>")

print "En attente de signal sur le port GPIO 23"
# a partir de la, le script ne fera plus rien jusqu a ce que 
# le signal sur le port 23 commence à chuter vers zéro. C'est
# la raison pour laquelle nous avons utilisé le pull-up pour 
# garder le signal "HIGH" et empecher un faux signal

print "Pendant ce temps votre Rapsberry Pi ne gaspille pas" 
print "de ressources en attendant un appui sur le bouton.\n"
print "Pressez le bouton quand vous voulez lancer un signal."
try:
    GPIO.wait_for_edge(23, GPIO.FALLING)
    print "\nAppui detecte. Maintenant votre script va"
    print "effectuer l'action correspondant a un appui sur le bouton."
except KeyboardInterrupt:
    GPIO.cleanup()       # reinitialisation GPIO lors d'une sortie CTRL+C
GPIO.cleanup()           # reinitialisation GPIO lors d'une sortie normale

Si on regarde les commentaires dans le code, on s’aperçoit qu’on vient de créer un : « j’attends que le port GPIO 23 soit relié au GND lors d’un appui sur le bouton, si c’est le cas j’affiche un message et je quitte le script ».

Bien sûr, on peut parfaitement modifier le script afin de faire faire ce que l’on veut à notre bouton. C’est d’ailleurs le sujet d’un autre tutoriel, qui enseigne comment utiliser ce bouton un peu plus efficacement pour éteindre proprement le Raspberry Pi.

Cet article fait partie d’une série de petits guides concernant le Raspberry Pi. Le sommaire se trouve ici.

A propos Captain Stouf

Spécialiste en systèmes informatiques, Développeur matériel et logiciel, Inventeur, Maker : électronique, Systems on Chip, micro-controlleurs, Internet of Things, Modélisation / Scan / Impression 3D, Imagerie...

4 réflexions au sujet de « Raspberry Pi ~05 : Ajouter un bouton matériel (avec Python) »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.