🛠 Télémétrie : pousser une mesure du capteur vers le réseau
Objectifs
Chaîner les deux mondes pour un premier pipeline de données : le SAMD21 acquiert la mesure (ADC 12 bits sur A0), la transmet au Bridge, et le côté Linux l'envoie sur le réseau par HTTP. Vous allez découvrir le pattern « le MCU mesure, Linux transporte » — la raison d'être de la Tian par rapport à une carte à microcontrôleur seul.
Matériel
- 1 Arduino Tian connectée au réseau (voir le tuto panneau web/SSH)
- 1 LDR + 10 kΩ en pont diviseur sur A0 (point milieu vers A0)
- Un PC de test lançant un mini-serveur HTTP écoutant les POST, par exemple :
# sur le PC, pour recevoir : nc -l -p 8080 (netcat) ou tout serveur web local
Code complet
// Le SAMD21 mesure, Linux expédie.
#include <Bridge.h>
const uint8_t LDR = A0;
const uint32_t PERIODE = 10000; // 1 POST toutes les 10 s
uint32_t précédent = 0;
void setup {
Serial.begin(9600);
while (!Serial) { }
Bridge.begin;
}
void loop {
uint32_t maintenant = millis;
if (maintenant - précédent < PERIODE) return;
précédent = maintenant;
int v = analogRead(LDR); // 0..4095 (ADC 12 bits)
String cmd = "curl -s -m 5 -X POST -d ldr=" + String(v);
cmd += " http://192.168.1.20:8080/tian"; // IP de votre PC
BridgeProcess p = Bridge.runShellCommand(cmd);
p.readString; // vide la sortie, évite les blocages
Serial.print(F("envoye ldr=")); Serial.println(v);
}
Vérification attendue
Côté PC, chaque POST reçu affiche « ldr=xxxx » qui suit vos variations de lumière (bouchez la LDR, la valeur chute). Coupez le WiFi du routeur : les envois échouent mais le croquis continue de mesurer — la robustesse vient du timeout -m 5 de curl, qui empêche le blocage de la boucle.
Erreurs fréquentes
- curl absent de l'image Linino de base :
opkg update && opkg install curl ca-bundlecôté SSH ; sinon busybox wget en secours. - Coller l'IP en dur partout : centralisez la config, sinon chaque changement de DHCP vous fait perdre une heure.
- POSTer à chaque tour de loop : le Bridge n'est pas un bus temps réel, cadencez (10 s ici) ; Linux journalise tout.
- >
- Comparer millis avec < au lieu de la soustraction non signée : le débordement (~49 jours) fige la cadence.
- Enrober des données dans la commande shell sans échapper : un nom de capteur avec des espaces casse la ligne de commande — d'où un payload numérique simple ici.
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
- 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