🛠 Maîtriser les GPIO sur Banana Pi BPI-RT2

Banana Pi BPI-RT2 : Carte routeur WiFi 6 AX3000 · avance · Un guide avancé pour configurer, lire et écrire sur les broches GPIO de la BPI-RT2 via sysfs et libgpiod.

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

É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.

  1. 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.

  1. 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 ``

  1. 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 ``

  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).

  1. 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

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels