🛠 Comprendre les triggers en pilotant les 4 LED utilisateur
Objectifs
Découvrir le sous-système LED de Linux sans souder quoi que ce soit : la BeagleBone Black possède 4 LED utilisateur définies dans le device tree mainline (am335x-bone-common.dtsi) sous les noms beaglebone:green:heartbeat, mmc0, usr2 et usr3. Chaque LED expose un « trigger » : une source d'activation gérée par le noyau (battement de cœur, activité carte SD, minuteur...). C'est la porte d'entrée vers le pilotage matériel sous Debian.
Matériel
- 1 BeagleBone Black alimentée (le simple câble mini-USB suffit)
- Accès SSH ou console série (le connecteur debug 6 broches 3,3 V TTL est disponible si l'écran manque)
Code complet
# Lister les LED exposées par le device tree
ls /sys/class/leds/
# beaglebone:green:heartbeat beaglebone:green:mmc0
# beaglebone:green:usr2 beaglebone:green:usr3
# Voir les triggers disponibles ; l'actif est entre crochets [ ]
cat /sys/class/leds/beaglebone:green:usr2/trigger
# Chaque LED prend son rôle métier :
echo heartbeat > /sys/class/leds/beaglebone:green:heartbeat/trigger
echo mmc0 > /sys/class/leds/beaglebone:green:mmc0/trigger
# usr2 en minuteur 250 ms allumée / 500 ms éteinte
echo timer > /sys/class/leds/beaglebone:green:usr2/trigger
echo 250 > /sys/class/leds/beaglebone:green:usr2/delay_on
echo 500 > /sys/class/leds/beaglebone:green:usr2/delay_off
# Reprise la main : retirer le trigger puis piloter la luminosité
echo none > /sys/class/leds/beaglebone:green:usr3/trigger
echo 255 > /sys/class/leds/beaglebone:green:usr3/brightness
echo 0 > /sys/class/leds/beaglebone:green:usr3/brightness
Vérification attendue
La LED heartbeat pulse au rythme du noyau, mmc0 clignote pendant les écritures sur la carte SD (tester avec dd si une microSD est insérée), usr2 clignote au rythme configuré. Avec le trigger none, usr3 obéit instantanément aux commandes echo.
Erreurs fréquentes
- Oublier les deux-points dans les noms de chemins (beaglebone:green:usr2) : la complémentation par tabulation est votre amie.
- Écrire dans brightness sans passer le trigger à none : le trigger actif écrase en permanence votre valeur.
- Confondre les LED : heartbeat est une LED utilisateur programmable, ce n'est pas la LED du port Ethernet ni la LED d'alimentation.
- Sur les très anciennes révisions A5B, les LED ont été volontairement rendues plus faibles (résistance passée de 820 Ω à 4,75 kΩ) : une LED discrète n'est pas une LED morte.
- Le trigger heartbeat se ralentit quand le système est très chargé : c'est voulu (il reflète la charge du noyau).
- Attendre ces LED sur les broches P8/P9 : elles sont soudées sur la carte, les broches cape sont un autre exercice.
Autres tutoriels pour cette carte
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
- 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