🛠 Allumer une LED via le GPIO avec libgpiod
Objetivos
Encender y apagar un LED desde el GPIO de la Raspberry Pi 3 Model B con la biblioteca libgpiod (API de dispositivo de carácter moderna, que reemplaza a wiringPi, obsoleto). Comprender la diferencia entre la numeración BCM (número de pin del SoC) y el número físico del conector de 40 pines, y recordar que la lógica GPIO del Pi 3B es de 3,3 V únicamente — los pines GPIO NO son tolerantes a 5 V.
Material
- Raspberry Pi 3 Model B con Raspberry Pi OS Lite
- LED rojo + resistencia de 330 Ω (posible conexión a masa mediante una resistencia adicional de 220 Ω)
- Protoboard y cables Dupont
- Fuente de alimentación de 5 V micro-USB de 2,5 A recomendada
- Paquete
libgpiod-utils(ogpiodsegún la versión de la distribución)
Código completo
El controlador GPIO del SoC expone /dev/gpiochip0 en el Pi 3B. Configuramos GPIO17 como salida y luego hacemos que parpadee:
# Installation des outils
sudo apt update && sudo apt install -y libgpiod-utils
# Vérifier le nom du chip (gpiochip0 sur Pi 3B)
gpiodetect
# Éteindre proprement le GPIO17 (broche physique 11)
gpioset gpiochip0 17=0
# Clignoter 10 fois : 200 ms allumé, 300 ms éteint
for i in $(seq 1 10); do
gpioset -t 200ms gpiochip0 17=1
sleep 0.3
done
Cableado: pin físico 11 (GPIO17) → resistencia de 330 Ω → ánodo del LED; cátodo del LED → resistencia de 220 Ω → pin físico 14 (GND).
Verificación esperada
gpiodetect muestra gpiochip0 [brcm-gpios] (54 lines). Durante el bucle, el LED parpadea aproximadamente 2 veces por segundo. gpioinfo gpiochip0 | grep line\ 17 muestra la línea en output durante la ejecución de gpioset. Al presionar Ctrl-C, la liberación de la línea devuelve el pin a entrada (LED apagado).
Errores frecuentes
- Confundir BCM17 con el pin físico 17 (¡que es de 3,3 V!): siempre cruzar con el diagrama de pines, BCM17 = pin físico 11.
- Olvidar la resistencia: el LED se quema o se solicita demasiado al pin (límite de 3,3 V / unos pocos mA por pin).
- Conectar el LED a un pin de 5 V (pines 2 y 4): tensión prohibida en los pines GPIO del Pi 3B.
permission denieden/dev/gpiochip0: ser miembro del grupogpio(sudo usermod -aG gpio $USER) o ejecutar consudo.- Nombre de chip incorrecto en otra placa (Banana Pi/Orange Pi de tamaño similar): verificar con
gpiodetectantes de cablear. - Usar un tutorial antiguo de wiringPi: la API está obsoleta, usar libgpiod o gpiozero.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython