releve-periodique.ino
Le duo parfait des cartes Yun/Tian : le MCU mesure, le Linux horodate et journalise en CSV. Le capteur analogique devient un enregistreur autonome, exportable en un scp, sans horloge externe.
Matériel requis
Une Arduino Yun (ATmega32U4 + Linux Linino sur Atheros AR9331, Wi-Fi et Ethernet, emplacement microSD). 1 capteur analogique (LDR, potentiomètre) sur A0.
Câblage
Capteur entre A0, 5 V et GND selon le montage diviseur.
Fonctionnement
date +%s fournit l'epoch côté Linux (le MCU n'a pas d'horloge) ; echo >> ajoute la ligne CSV au fichier. Le test -f crée l'entête au premier lancement.
Exécution
Arduino IDE : sélectionne le port série pour téléverser, puis la carte Arduino Yun pour le moniteur. Côté Linux : ssh root@arduino.local (mot de passe de la distribution). L"app Yunwizard configure le réseau.
Variantes
Ajouter la température du SoC dans le CSV, ou remplacer le shell par FileIO pour éviter le spawn de processus.
releve-periodique.ino
// Horodateur via le Linux, mesure via le MCU : CSV dans /tmp.
#include <Bridge.h>
#include <Process.h>
const int CAPTEUR = A0;
unsigned long t0 = 0;
String horodatage() {
Process p;
p.runShellCommand("date +%s"); // epoch seconde
String s = p.readString();
while (p.running());
s.trim();
return s.length() ? s : String(millis() / 1000);
}
void setup() {
Bridge.begin();
Serial.begin(9600);
Process init;
init.runShellCommand(
"test -f /tmp/mesures.csv || echo 'epoch,capteur' > /tmp/mesures.csv");
while (init.running());
}
void loop() {
if (millis() - t0 < 30000) return; // 30 s
t0 = millis();
int brut = analogRead(CAPTEUR);
String ligne = horodatage() + "," + String(brut);
Process ecriture;
ecriture.runShellCommand("echo '" + ligne + "' >> /tmp/mesures.csv");
while (ecriture.running());
Serial.print("journalise : ");
Serial.println(ligne);
}
// Cote Linux : scp root@<carte>:/tmp/mesures.csv . pour exporter.