🛠 Première LED sur GPIO17 : banques, courants et broches réservées
Objetivos
Encender un LED desde un GPIO del CM1 comprendiendo la asignación de pines: los GPIO están repartidos en el banco 0 (GPIO 0 a 27) y el banco 1 (GPIO 28 a 45). Las líneas GPIO46 y GPIO47 están reservadas para el sistema (ID SD/eMMC) y no deben utilizarse para otros fines. El BCM2835 permite 16 mA por pin y un total de 50 mA por banco: un LED con una resistencia de 330 ohmios funciona perfectamente, un relé directo no. Se controla mediante sysfs y luego mediante gpiod.
Material
- Un Compute Module 1 sobre una IO Board
- 1 LED + resistencia de 330 ohmios
- Cables dupont (los GPIO de la IO Board salen del conector J6)
Código completo
# 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
Verificación esperada
El LED parpadea a 1 Hz. cat /sys/class/gpio/gpio17/direction devuelve out. Intentar echo 46 > export falla (línea reservada para el sistema); este es el comportamiento esperado, no un fallo. El cálculo de la resistencia: (3,3 V - 2 V del LED) / 13 mA dan aproximadamente 100 ohmios como mínimo; 330 ohmios proporcionan un LED bien visible con una corriente muy moderada.
Errores frecuentes
- Utilizar GPIO46/47 como salida: líneas reservadas (detección de tarjeta SD), el kernel lo rechaza o el sistema se vuelve inestable.
- Superar los 50 mA acumulados en el banco 0 controlando varias cargas: el SoC se calienta y los niveles de tensión caen; añadir un transistor/driver.
- Confundir el número BCM con el número físico del conector: el esquema de la IO Board es la referencia, utilizar
pinctrlogpio readall. - Olvidar la resistencia: el LED se quema, o peor aún, el pin. Siempre entre 330 y 1k ohmios.
- Dejar una exportación sysfs activa entre dos scripts:
write error: Device or resource busy, acordarse de hacerunexport.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash