🛠 Faire clignoter une LED via le GPIO avec libgpiod
Objectifs
Découvrir le connecteur 40 broches de la Radxa ROCK 3B (Rockchip RK3568) et faire clignoter une LED avec libgpiod, l'API GPIO moderne de Linux que Radxa recommande officiellement — l'ancien mécanisme sysfs « gpio export » est déprécié. Vous apprendrez à identifier la bonne puce (gpiochip) et la bonne ligne avec gpiofind/gpioinfo plutôt qu'à copier des numéros hérités de tutoriels Raspberry Pi.
Matériel
- Radxa ROCK 3B sous Radxa OS (Debian) ou image mainline, alimentée en USB-C (PD 12 V / 2 A recommandé par la doc officielle)
- 1 LED + résistance 330 Ω, câbles Dupont femelle-mâle
- Écran HDMI ou session SSH
Code complet
sudo apt update && sudo apt install -y gpiod
gpiodetect # RK3568 : gpiochip0..gpiochip3 (banques GPIO0..GPIO3)
gpiofind PIN_7 # renvoie « gpiochipLigne » pour la broche 7 du connecteur
# Nommage Rockchip : GPIO3_C5 -> gpiochip3, ligne 21 (banque*8 + groupe + index)
sudo gpioset -m signal $(gpiofind PIN_7) 1 & # reste haut jusqu'au Ctrl-C
sudo gpioget $(gpiofind PIN_11) # lire une autre broche
# Clignotage 10 cycles sans compiler :
for i in $(seq 1 10); do sudo gpioset --time=0.2 $(gpiofind PIN_7) 1; sleep 0.3; done
Vérification attendue
gpiodetect affiche gpiochip0 à gpiochip3. gpiofind PIN_7 renvoie une paire chip/ligne ; avec le câble correct, la LED s'allume ~0,2 s à chaque tour de boucle. La LED RGB heartbeat (pilote « heartbeat » dans le device tree) clignote déjà sous Linux : vous pouvez la récupérer avec echo none | sudo tee /sys/class/leds/*/trigger si elle gêne vos mesures.
Erreurs fréquentes
- Chercher des numéros BCM de Raspberry Pi : sous Radxa OS / noyau Rockchip, on raisonne en gpiochip + ligne libgpiod, et le plan du connecteur est celui de Radxa (couleur-coded), pas celui du Pi.
- Oublier
sudo: les lignes GPIO sont réservées tant que la règle udev « gpio » n'est pas configurée (reloguer après ajout au groupe gpio). gpiosetsans-m signalou--timequitte immédiatement et remet la broche à 0 : on ne voit rien clignoter.- Câbler un GPIO en 5 V : la logique du connecteur est en 3,3 V (5 V uniquement sur les broches d'alimentation 2/4).
- Brancher un HAT Raspberry Pi « en force » : la compatibilité est « mostly compatible » (ROCK Pi 4 / Pi 3-4) mais pas exacte — comparer le code couleur du connecteur avant, sous peine de câbler un signal UART sur une broche I2C.
Autres tutoriels pour cette carte
- Lire un bouton poussoir en Python avec python3-libgpiod
- Premier réseau : Ethernet double gigabit, Wi-Fi optionnel et SSH
- Installer et booter le système sur un SSD NVMe (M.2 M-Key)
- Interroger un capteur I2C sur le connecteur 40 broches
- Surveiller température et fréquence CPU, piloter le ventilateur PWM
- Routeur / passerelle réseau double Gigabit avec OpenWrt et PoE
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash