🛠 Première LED sur GPIO17 : banques, courants et broches réservées
Objectifs
Allumer une LED depuis un GPIO du CM1 en comprenant la cartographie des broches : les GPIO sont répartis en banque 0 (GPIO 0 à 27) et banque 1 (GPIO 28 à 45). Les lignes GPIO46 et GPIO47 sont réservées au système (ID SD/eMMC) et ne doivent pas être détournées. Le BCM2835 autorise 16 mA par broche et au total 50 mA par banque : une LED avec résistance de 330 ohms passe largement, un relais direct non. On pilote en sysfs, puis en gpiod.
Matériel
- Un Compute Module 1 sur IO Board
- 1 LED + résistance 330 ohms
- Fils dupont (les GPIO de l'IO Board sortent du connecteur J6)
Code complet
# Méthode sysfs (simple)
echo 17 | sudo tee /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
while true; do
echo 1 > /sys/class/gpio/gpio17/value; sleep 0.5
echo 0 > /sys/class/gpio/gpio17/value; sleep 0.5
done
# Méthode gpiod (moderne)
gpiodetect
gpioset gpiochip0 17=1 # allume
gpioset gpiochip0 17=0 # éteint
# Rappel des limites : 16 mA/broche, 50 mA/banque, broches 46/47 interdites
Vérification attendue
La LED clignote à 1 Hz. cat /sys/class/gpio/gpio17/direction renvoie out. Tenter echo 46 > export échoue (ligne réservée au système) — c'est le comportement attendu, pas une panne. Le calcul de résistance : (3,3 V - 2 V LED) / 13 mA environ 100 ohms minimum ; 330 ohms donnent une LED bien visible sous un courant très sage.
Erreurs fréquentes
- Utiliser GPIO46/47 comme sortie : lignes réservées (détection de carte SD), le noyau refuse ou le système devient instable.
- Dépasser 50 mA cumulés sur la banque 0 en pilotant plusieurs charges : le SoC chauffe et les niveaux s'effondrent ; ajouter un transistor/driver.
- Confondre numéro BCM et numéro physique du connecteur : le schéma de l'IO Board fait foi, utiliser
pinctrlougpio readall. - Oublier la résistance : la LED claque, ou pire la broche. Toujours 330 à 1k ohms.
- Laisser un export sysfs actif entre deux scripts :
write error: Device or resource busy, penser àunexport.
Autres tutoriels pour cette carte
- Flasher l'eMMC du CM1 avec rpiboot et le jumper J4
- Premier boot : Bullseye legacy, rails 3,3 V et ordre des alimentations
- Servo moteur sur PWM0 (GPIO18) : 50 Hz et 2,5 à 12,5 %
- BME280 sur I2C0 (GPIO2/3) : activer i2c_arm et lire l'ID 0x60
- Caméra officielle sur le connecteur FPC CSI du CM1
- Boot sans EEPROM : fallback USB et bootcode.bin sur eMMC
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash