🛠 GPIO duos : commander les broches de l'Arduino depuis Linux
Objectifs
Exploiter le concept le plus avancé de la Tian : les broches d'E/S sont physiquement reliées aux deux processeurs. Le croquis Arduino les pilote classiquement, mais Linux peut aussi les revendiquer via l'interface sysfs standard du noyau (/sys/class/gpio), documentée dans la fiche officielle de la Tian avec la table de correspondance broche Arduino ↔ numéro GPIO Linux. Vous allez faire clignoter une LED depuis un script shell, sans toucher au croquis.
Matériel
- 1 Arduino Tian sous tension, accès SSH (tuto panneau web/SSH)
- 1 LED + résistance 330 Ω sur une broche qui apparaît dans la table de correspondance GPIO de la documentation officielle
- Le croquis du tuto Blink doit être retiré ou ne pas utiliser la broche choisie (sinon les deux côtés se battent)
Procédure
# Côté SSH Linux — N = numéro GPIO correspondant à votre broche,
# à lire dans la table officielle broche Arduino -> GPIO de la Tian.
# >
# celle de la Yun, utiliser la table du document officiel archivé.
N=21 # exemple de valeur, À REMPLACER par la valeur de la table officielle
echo $N > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$N/direction
while true; do
echo 1 > /sys/class/gpio/gpio$N/value
sleep 0.5
echo 0 > /sys/class/gpio/gpio$N/value
sleep 0.5
done
Vérification attendue
La LED clignote à 1 Hz pilotée par le seul script shell — le SAMD21 n'y est pour rien. Étape de diagnostic suivante : téléversez un croquis qui met la même broche à l'état fixe, puis relancez le script : l'état final visible est celui du dernier à écrire. Preuve que le matériel est partagé et que c'est à vous d'arbitrer.
Erreurs fréquentes
- Deux maîtrès sur la même broche sans protocole : le croquis écrit HIGH, un cron Linux écrit LOW, la LED grésille moralement. Définissez un propriétaire par broche (règle d'ingénierie, pas un bug logiciel).
- Prendre la table GPIO de la Yun pour celle de la Tian : les puces diffèrent (AR9331 vs AR9342), la numérotation aussi — toujours lire la table du document officiel Tian.
- Oublier
echo out > direction: sans direction définie, l'écriture dans value échoue avec une erreur d'E/S peu parlante. - Laisser des GPIO exportés après expérimentation :
echo $N > /sys/class/gpio/unexportlibère proprement, sinon le re-export échoue au script suivant. - Confondre les GPIO du SoC Linux avec les broches « Arduino » : toutes les broches physiques ne sont pas forcément câblées des deux côtés ; seuls les cas listés dans la table officielle sont garantis duos.
- En production, préférer un bus propre (I2C, SPI) avec un vrai maître unique plutôt que du GPIO partagé à deux têtes.
Autres tutoriels pour cette carte
- Découvrir l'Arduino Tian : un microcontrôleur et un vrai Linux sur la même carte
- Bouton et LED sur les GPIO de la Tian : les bases côté SAMD21
- Lire un capteur avec l'ADC 12 bits du SAMD21
- Le Bridge : faire exécuter des commandes Linux depuis le croquis
- Configurer le WiFi et piloter Linino en SSH
- Télémétrie : pousser une mesure du capteur vers le réseau
Exemples de code pour cette carte
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino