🛠 Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
Objectifs
Piloter une sortie et lire une entrée sur les nappes cape avec Adafruit_BBIO, la bibliothèque Python historique de l'écosystème BeagleBone : des milliers de tutoriels BBB l'utilisent et vous la rencontrerez. Vous apprendrez au passage la correspondance broche vers ligne GPIO (P8_11 = gpio1_13, soit la ligne 45 du gpiochip0 unique de l'AM335x) et la lecture équivalente en libgpiod moderne.
Matériel
- 1 BeagleBone Black + alimentation
- 1 breadboard, fils, 1 bouton poussoir, 1 LED + 1 résistance 330 Ω
- Câblage : bouton entre P9_11 et GND (pull-up interne) ; LED + 330 Ω entre P8_11 et GND
- Rappel : toute la logique est en 3,3 V — du 5 V sur une broche détruit la carte.
Code complet
#!/usr/bin/env python3
# pip3 install Adafruit_BBIO (images communautaires Debian)
import Adafruit_BBIO.GPIO as GPIO
LED, BTN = "P8_11", "P9_11"
GPIO.setup(LED, GPIO.OUT)
GPIO.setup(BTN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # bouton vers GND
try:
while True:
# actif-à-l'état-bas : appuyé == LOW
GPIO.output(LED, GPIO.input(BTN) == GPIO.LOW)
finally:
GPIO.cleanup # libère les broches, sinon elles restent réclamées
# Équivalent moderne sans Python (libgpiod, images récentes) :
# P8_11 = gpio1_13 = ligne 45 du gpiochip0 ; les noms P8_xx viennent du DT
gpioset -t 200m gpiochip0 P8_11=1 # impulse 200 ms
gpioget gpiochip0 P9_11 # état du bouton
gpiodetect ; gpioinfo gpiochip0 | grep -E "P8_11|P9_11"
Vérification attendue
LED éteinte au repos, allumée quand on appuie sur le bouton. gpioinfo montre les deux broches réclamées par le script pendant son exécution, et libérées après GPIO.cleanup. Avec gpioset, on voit la LED s'allumer 200 ms.
Erreurs fréquentes
- Adafruit_BBIO est un héritage legacy : sur les images Debian très récentes il peut être absent ou capricieux — préférer libgpiod pour du neuf, mais savoir lire l'ancien code.
- Oublier PUD_UP : sans pull-up, l'entrée flotte et la LED clignote du vent.
- Inverser la logique : bouton câblé vers GND = appuyé donne LOW.
- Zapper GPIO.cleanup dans un script qu'on relance : la broche reste occupée et le second lancement échoue.
- Confondre la numérotation : P8_11 et P9_11 sont des broches de nappes DIFFÉRENTES ; P9_11 s'appelle aussi uart4_rxd dans le device tree.
- Résistance LED oubliée : la LED ou la broche rend l'âme (respecter les 3,3 V et le courant de broche).
Autres tutoriels pour cette carte
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Comprendre les triggers en pilotant les 4 LED utilisateur
- Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V
- Ajouter une horloge temps réel sur le bus I2C des capes
- Micro-HDMI : exploiter les limites d'affichage de la BBB
- Capes historiques : capemanager, EEPROM d'identification et pièges des broches
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash