🛠 GPIO duos : commander les broches de l'Arduino depuis Linux
Objetivos
Aprovechar el concepto más avanzado de la Tian: los pines de E/S están físicamente conectados a ambos procesadores. El sketch de Arduino los controla de forma clásica, pero Linux también puede reclamarlos a través de la interfaz sysfs estándar del kernel (/sys/class/gpio), documentada en la ficha oficial de la Tian con la tabla de correspondencia pin Arduino ↔ número GPIO Linux. Harás parpadear un LED desde un script shell, sin tocar el sketch.
Material
- 1 Arduino Tian encendido, acceso SSH (tutorial panel web/SSH)
- 1 LED + resistencia de 330 Ω en un pin que aparezca en la tabla de correspondencia GPIO de la documentación oficial
- El sketch del tutorial Blink debe estar retirado o no usar el pin elegido (de lo contrario, ambos lados se pelearán)
Procedimiento
# 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
Verificación esperada
El LED parpadea a 1 Hz controlado únicamente por el script shell — el SAMD21 no tiene nada que ver. Siguiente paso de diagnóstico: carga un sketch que ponga el mismo pin en un estado fijo, luego vuelve a ejecutar el script: el estado final visible es el del último en escribir. Prueba de que el hardware es compartido y que te toca a ti arbitrar.
Errores frecuentes
- Dos maestros en el mismo pin sin protocolo: el sketch escribe HIGH, un cron de Linux escribe LOW, el LED zumba moralmente. Define un propietario por pin (regla de ingeniería, no un bug de software).
- Tomar la tabla GPIO de la Yun como si fuera la de la Tian: los chips difieren (AR9331 vs AR9342), la numeración también — siempre lee la tabla del documento oficial de la Tian.
- Olvidar
echo out > direction: sin dirección definida, la escritura en value falla con un error de E/S poco claro. - Dejar GPIO exportados después de experimentar:
echo $N > /sys/class/gpio/unexportlibera correctamente, de lo contrario el re-export fallará en el siguiente script. - Confundir los GPIO del SoC Linux con los pines «Arduino»: no todos los pines físicos están necesariamente cableados en ambos lados; solo los casos listados en la tabla oficial están garantizados como dúos.
- En producción, prefiere un bus limpio (I2C, SPI) con un verdadero maestro único en lugar de GPIO compartido con dos cabezas.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino