Présentation:
Sysfs (System File System) est un mécanisme du noyau Linux qui permet d’interagir avec les périphériques matériels, comme les GPIO (General Purpose Input/Output), via des fichiers virtuels dans le système de fichiers.
C’est une méthode simple pour apprendre à contrôler les broches GPIO depuis un terminal ou des scripts shell, mais elle est aujourd’hui considérée comme legacy (obsolète) et remplacée par libgpiod dans les nouvelles versions de Linux.
Structure de Sysfs pour les GPIO
Toutes les opérations se font via des fichiers dans /sys/class/gpio/ :
| Fichier/Dossier | Description |
|---|---|
/sys/class/gpio/export | Écriture d’un numéro de GPIO pour l’activer |
/sys/class/gpio/unexport | Écriture d’un numéro de GPIO pour le désactiver |
/sys/class/gpio/gpioXX/ | Dossier créé pour chaque GPIO exporté (XX = numéro) |
direction (in ou out) | Définit si la broche est en entrée ou sortie |
value (0 ou 1) | Lit ou écrit l’état logique de la broche |
edge (none, rising, falling, both) | Configure une interruption (pour les entrées) |
Exemple Pratique : Allumer une LED (GPIO17)
📌 Configuration initiale
- Vérifier que Sysfs est disponible (sur les vieilles versions de Raspberry Pi OS) :
ls /sys/class/gpio/
on doit obtenir quelque chose comme ça:
bruno@rpi364:~/Works/gpio1 $ ls /sys/class/gpio/
export gpiochip0 gpiochip504 unexport
Exporter la broche GPIO17 :
echo 17 > /sys/class/gpio/export
Crée le dossier /sys/class/gpio/gpio17/.
Configurer en sortie :
echo out > /sys/class/gpio/gpio17/direction
💡 Allumer/Éteindre la LED
En fait la broche GPIO17 va sortir un 1 , ici une tension de 3,3V
echo 1 > /sys/class/gpio/gpio17/value
Éteindre (0V)
La broche GPIO17 va sortir 0 , ici une tension 0V
echo 0 > /sys/class/gpio/gpio17/value
🔌 Nettoyage (quand terminé)
echo 17 > /sys/class/gpio/unexport
Autre Exemple : Lire un Bouton (GPIO27)
echo 27 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio27/direction
Lire l’état !
cat /sys/class/gpio/gpio27/value
on a fini ! on débranche
echo 27 > /sys/class/gpio/unexport
