🛠 Allumer une LED via le GPIO avec libgpiod
Objectifs
Allumer et éteindre une LED depuis le GPIO du Raspberry Pi 3 Model B avec la bibliothèque libgpiod (API character device moderne, qui remplace wiringPi déprécié). Comprendre la différence entre numérotation BCM (numéro de broche SoC) et numéro physique du connecteur 40 broches, et retenir que la logique GPIO du Pi 3B est en 3,3 V uniquement — les broches GPIO ne sont PAS tolérantes 5 V.
Matériel
- Raspberry Pi 3 Model B sous Raspberry Pi OS Lite
- LED rouge + résistance 330 Ω (mise à la masse via 220 Ω supplémentaire possible)
- Breadboard et câbles Dupont
- Alimentation 5 V micro-USB 2,5 A recommandée
- Paquet
libgpiod-utils(ougpiodselon la version de la distribution)
Code complet
Le contrôleur GPIO du SoC expose /dev/gpiochip0 sur le Pi 3B. On configure GPIO17 en sortie puis on le fait clignoter :
# 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
Câblage : broche physique 11 (GPIO17) → résistance 330 Ω → anode LED ; cathode LED → résistance 220 Ω → broche physique 14 (GND).
Vérification attendue
gpiodetect affiche gpiochip0 [brcm-gpios] (54 lines). Pendant la boucle, la LED clignote environ 2 fois par seconde. gpioinfo gpiochip0 | grep line\ 17 montre la ligne en output pendant l'exécution de gpioset. Au Ctrl-C, la libération de la ligne remet la broche en entrée (LED éteinte).
Erreurs fréquentes
- Confondre BCM17 et broche physique 17 (qui est 3,3 V !) : toujours croiser avec le brochage, BCM17 = broche physique 11.
- Oublier la résistance : la LED grille ou on sollicite trop la broche (limite 3,3 V / quelques mA par broche).
- Relier la LED à une broche 5 V (broches 2 et 4) : tension interdite sur les broches GPIO du Pi 3B.
permission deniedsur/dev/gpiochip0: être membre du groupegpio(sudo usermod -aG gpio $USER) ou lancer ensudo.- Mauvais nom de chip sur une autre carte (Banana Pi/Orange Pi de même gabarit) : vérifier avec
gpiodetectavant de câbler. - Utiliser un vieux tutoriel wiringPi : l'API est dépréciée, utiliser libgpiod ou gpiozero.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython