🛠 Faire clignoter une LED sur les GPIO du CM3
Objetivos
Aprender a controlar una salida GPIO en el CM3 con la biblioteca gpiozero (incluida con Raspberry Pi OS). El CM3 expone 48 líneas GPIO (GPIO0-45) en el conector SODIMM, repartidas en dos bancos de alimentación independientes: bank0 (GPIO0-27) y bank1 (GPIO28-45). Cada banco funciona a la tensión de su pin VREF, de 1,8 V a 3,3 V — en la CMIO3 el conector es de 3,3 V.
Material
- CM3 (o CM3 Lite) sobre CMIO3, con Raspberry Pi OS iniciado (ver « assembler-kit-cm3-cmio3 »)
- 1 LED + resistencia de 330 Ω entre GPIO17 y GND
- No se necesita convertidor de nivel para 3,3 V; en cambio, en una placa base personalizada con un banco a 1,8 V, es posible que un LED estándar no se encienda — verificar el riel VREF del banco correspondiente
Código completo
#!/usr/bin/env python3
# blink.py — LED sur GPIO17 (bank0), numérotation BCM identique au Pi 3
from gpiozero import LED
from time import sleep
led = LED(17) # GPIO17, bank0 ; la tension de sortie = tension VREF de la banque
while True:
led.on
sleep(1)
led.off
sleep(1)
sudo apt update && sudo apt install python3-gpiozero
python3 blink.py
Verificación esperada
El LED parpadea a 1 Hz (1 s encendido, 1 s apagado). Ctrl-C detiene el programa. El comando gpioread 17 (wiringPi) o gpiodetect / gpioinfo gpiochip0 (libgpiod) confirman que el pin está correctamente configurado como salida.
Errores frecuentes
- Confundir los GPIO del SODIMM con los pines del conector de 40 pines de un Pi 3 clásico: aquí la numeración BCM corresponde directamente a los números GPIO del conector SODIMM.
- Tocar GPIO28, 29, 44 o 45 sin resistencias de pull externas: estos pines NO tienen resistencia de pull por defecto (datasheet RP-008161-DS §9.1) y quedan flotantes al arrancar; añada resistencias de pull off-chip en una placa personalizada.
- Reutilizar HDMI_HPD_N_1V8 o EMMC_EN_N_1V8 como GPIO: estos pines están reservados para el firmware, desviarlos rompe el arranque o el HDMI.
- Superar 16 mA por pin y 50 mA por banco: un LED sin resistencia puede destruir la salida.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash