🛠 Le Bridge : faire exécuter des commandes Linux depuis le croquis
Objectifs
Franchir le pas qui fait l'intérêt de la Tian : le Bridge, couche de communication entre le croquis (SAMD21) et Linux (AR9342), circulant sur une liaison série interne entre les deux puces. Vous allez appeler des commandes shell Linux depuis le croquis et récupérer leur sortie — ici la durée de fonctionnement du système, lisible dans /proc/uptime.
Matériel
- 1 Arduino Tian alimentée par USB (le temps que Linux démarre, ~30 s à 1 min au premier boot)
- Câble micro-USB + Arduino IDE avec le package Tian
- Aucun câblage externe : tout se passe entre les deux cerveaux de la carte
Code complet
// 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);
}
Vérification attendue
Après le téléversement, le Moniteur série affiche toutes les 5 s une ligne « Linux uptime: 83.42 0.00 » dont la première valeur croît en continu : c'est bien le noyau Linux de l'AR9342 qui répond, pas le croquis. Coupez l'alimentation complète et rebranchez : le uptime repart de zéro, preuve que c'est le système Linux qui compte.
Erreurs fréquentes
- Parler au Bridge avant la fin du boot Linux : au premier démarrage après une coupure, la commande échoue silencieusement ; ajoutez un retry ou attendez que la LED de statut Linux indique le boot terminé.
- Confondre le Bridge Tian avec celui de la Yun : la bibliothèque et l'API exactes diffèrent (runShellCommand, value map, etc.). >
- Croire que runShellCommand est asynchrone : chaque lecture de la sortie attend le résultat ; ne cadencez pas ça à 1 kHz dans loop.
- Oublier que Linux peut être planté alors que le croquis tourne : le SAMD21 survit à un kernel panic ; si le Bridge ne répond plus, c'est le côté Linux qu'il faut diagnostiquer (SSH).
- Injecter des variables utilisateur dans une commande shell sans échapper : côté Linux, une entrée non contrôlée devient une injection de commande.
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
- 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
Exemples de code pour cette carte
clignotant-rest.inoArduinoconsole-bridge.inoArduinovaleurs-partagees.inoArduinoprocess-shell.inoArduinoserveur-json.inoArduinolecture-fichier.inoArduino