🛠 Le Bridge : faire exécuter des commandes Linux depuis le croquis
Objetivos
Dar el paso que hace interesante a la Tian: el Bridge, capa de comunicación entre el sketch (SAMD21) y Linux (AR9342), que circula por una conexión serie interna entre los dos chips. Vas a llamar a comandos shell de Linux desde el sketch y recuperar su salida — aquí, el tiempo de funcionamiento del sistema, legible en /proc/uptime.
Material
- 1 Arduino Tian alimentada por USB (mientras Linux arranca, ~30 s a 1 min en el primer arranque)
- Cable micro-USB + Arduino IDE con el paquete Tian
- Ningún cableado externo: todo ocurre entre los dos cerebros de la placa
Código completo
// Exécuter une commande shell côté Linux et lire le résultat.
#include <Bridge.h>
void setup {
Serial.begin(9600);
while (!Serial) { } // attend l'ouverture du port USB
Bridge.begin; // ouvre le canal vers Linux
}
void loop {
// runShellCommand renvoie un Process dont on lit la sortie comme un flux.
BridgeProcess p = Bridge.runShellCommand("cat /proc/uptime");
String uptime = p.readString;
Serial.print(F("Linux uptime: ")); Serial.println(uptime);
delay(5000);
}
Verificación esperada
Tras la carga, el Monitor serie muestra cada 5 s una línea « Linux uptime: 83.42 0.00 » cuyo primer valor crece continuamente: es efectivamente el núcleo Linux del AR9342 el que responde, no el sketch. Corta la alimentación completa y vuelve a conectar: el uptime vuelve a cero, prueba de que es el sistema Linux el que cuenta.
Errores frecuentes
- Hablar al Bridge antes de que termine el arranque de Linux: en el primer arranque tras un corte, el comando falla silenciosamente; añade un reintento o espera a que el LED de estado de Linux indique que el arranque ha terminado.
- Confundir el Bridge de la Tian con el de la Yun: la biblioteca y la API exactas difieren (runShellCommand, value map, etc.). >
- Creer que runShellCommand es asíncrono: cada lectura de la salida espera el resultado; no lo cadencies a 1 kHz en loop.
- Olvidar que Linux puede estar bloqueado mientras el sketch sigue ejecutándose: el SAMD21 sobrevive a un kernel panic; si el Bridge deja de responder, es el lado Linux el que hay que diagnosticar (SSH).
- Inyectar variables de usuario en un comando shell sin escapar: en el lado Linux, una entrada no controlada se convierte en una inyección de comandos.
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
- Configurer le WiFi et piloter Linino en SSH
- Télémétrie : pousser une mesure du capteur vers le réseau
- GPIO duos : commander les broches de l'Arduino depuis Linux
Ejemplos de código para esta placa
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino