🛠 Maîtriser les GPIO sur Banana Pi BPI-RT2
Objectifs
Ce tutoriel vise à maîtriser l'interaction bas niveau avec les broches GPIO de la Banana Pi BPI-RT2. Contrairement aux cartes Linux classiques, le SoC Realtek RTL8198D nécessite une compréhension précise du mapping des broches physiques vers les numéros de GPIO Linux. Nous apprendrons à identifier les broches disponibles sur les connecteurs 5 et 9 broches, à configurer les directions (entrée/sortie) et à manipuler les états logiques pour interfacer des capteurs ou des afficheurs simples.
Matériel nécessaire
- Une carte Banana Pi BPI-RT2 alimentée en 12V DC.
- Un module de conversion USB-UART (TTL 3.3V) pour l'accès console.
- Des fils de connexion (jumpers) mâle-femelle.
- Une LED et une résistance de 330 ohms (pour le test de sortie).
- Un bouton-poussoir (pour le test d'entrée).
- Un ordinateur hôte avec un client SSH.
Étapes
Connectez-vous en SSH. Le firmware OpenWrt utilise le noyau Linux standard. Pour connaître le mapping physique des broches, consultez le schéma technique ou les fichiers de device tree source (.dts) fournis dans le BSP Realtek. Les connecteurs 5 et 9 broches exposent les signaux GPIO et I2C. Notez que les numéros de GPIO Linux ne correspondent pas toujours à l'ordre physique des broches.
- Accès et identification du mapping
Avant d'utiliser des bibliothèques complexes, testez l'accès direct via le système de fichiers sysfs. Créez un répertoire de travail et exportez un GPIO connu (par exemple GPIO 12, à vérifier selon votre mapping) : ``bash echo 12 > /sys/class/gpio/export ls /sys/class/gpio/gpio12/ `` Si le répertoire apparaît, le GPIO est disponible. Si une erreur "Device or resource busy" survient, le GPIO est peut-être utilisé par le noyau ou un pilote.
- Vérification de la disponibilité via sysfs
Configurez le GPIO en sortie et allumez une LED connectée via une résistance entre la broche GPIO et la masse (GND) : ``bash echo out > /sys/class/gpio/gpio12/direction echo 1 > /sys/class/gpio/gpio12/value ` La LED doit s'allumer. Pour l'éteindre, écrivez 0. Pour libérer la ressource : `bash echo 12 > /sys/class/gpio/unexport ``
- Configuration en sortie et test LED
La méthode sysfs est dépréciée. Installez libgpiod-utils via opkg si disponible, ou compilez-le. Utilisez gpioinfo pour lister les chips GPIO disponibles. Identifiez la ligne correspondant à votre broche physique : ``bash gpioinfo ` Pour mettre une ligne en sortie haute (supposons chip0, line 12) : `bash gpiodetect gpioset gpiochip0 12=1 ``
- Utilisation de libgpiod (méthode moderne)
Configurez le GPIO en entrée avec pull-up interne si supporté, sinon utilisez une résistance externe vers VCC. Lisez l'état : ``bash echo in > /sys/class/gpio/gpio13/direction cat /sys/class/gpio/gpio13/value `` Appuyez sur le bouton pour voir la valeur changer (0 ou 1 selon le câblage).
- Lecture d'entrée (Bouton-poussoir)
Vérification
Assurez-vous que la LED s'allume et s'éteint en réponse aux commandes gpioset ou aux écritures sysfs. Vérifiez que la lecture du bouton change de valeur lors de l'appui. Si les commandes échouent, vérifiez les permissions (chmod) et assurez-vous que le GPIO n'est pas réservé par le firmware pour d'autres fonctions (comme le WiFi ou l'Ethernet).
Pour aller plus loin
Explorez l'interface I2C exposée sur les mêmes connecteurs pour connecter des capteurs numériques (température, humidité). Utilisez i2cdetect pour scanner le bus. Pour des applications temps réel, envisagez l'écriture de modules noyau personnalisés utilisant les API GPIO du noyau Linux, plutôt que les appels système depuis l'espace utilisateur, afin de réduire la latence.
Autres tutoriels pour cette carte
- Contrôler les GPIO sur Banana Pi BPI-RT2
- Configurer un réseau WiFi 6 fiable avec le BPI-RT2
- Mise en route et premier branchement du Banana Pi BPI-RT2
- Interfacer un capteur DHT11 avec le GPIO de la BPI-RT2
- Configurer le BPI-RT2 comme passerelle réseau et stockage léger
- Mise en route avancée : Premier accès console et flashage du firmware BPI-RT2