🛠 Allumer une LED via le GPIO avec libgpiod
Objetivos
Descubrir el conector GPIO de 40 pines del Raspberry Pi 4B (lógica de 3.3 V, compatible con todos los Pi anteriores) y encender un LED con libgpiod, la interfaz de caracteres moderna del kernel de Linux que reemplaza a wiringPi, obsoleto. Al final, sabrás controlar un pin como salida desde una simple terminal.
Material
- Raspberry Pi 4B con Raspberry Pi OS Bookworm
- LED rojo + resistencia de 330 ohmios
- Protoboard y cables Dupont
- El SoC BCM2711 expone hasta 6 I2C, 6 UART y 6 SPI; no tiene ADC integrado.
Código completo
sudo apt install gpiod
sudo adduser "$USER" gpio # puis reconnexion
# GPIO18 = broche physique 12 ; 330R en serie avec la LED, cathode vers GND
gpiodetect # doit afficher: gpiochip0 [brcmstb-gpio] (54 lines)
gpioinfo gpiochip0 | head -n 20
gpioset gpiochip0 18=1 # LED allumee
sleep 2
gpioset --duration=2s gpiochip0 18=0
for i in $(seq 1 10); do gpioset --duration=0.3s gpiochip0 18=1; sleep 0.3; done
Verificación esperada
gpiodetect muestra gpiochip0 (el BCM2711); el LED se enciende durante 2 segundos y luego el bucle lo hace parpadear 10 veces a aproximadamente 2 Hz. Si no aparece ningún dispositivo gpiochip = módulo gpio-mockup o kernel incompleto.
Errores frecuentes
- Confundir el número físico (pin 12) y el número BCM (GPIO18): gpioset espera el número BCM.
- Olvidar la resistencia: el LED se quema, y por seguridad nunca superes los 16 mA por pin ni los 50 mA en total en el conector.
- Controlar con 5 V en lugar de 3.3 V: la lógica GPIO es de 3.3 V.
- Permiso denegado: salir del grupo gpio (olvido del relogin) o usar sudo.
- Más adelante, para PWM, usa GPIO18 (pin 12): ya es el correcto aquí.
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