releve-periodique.ino

Arduino Yún · Fichier : releve-periodique.ino · Langage : Arduino · Usage : Horodateur Linux + capteur : journal CSV complet sans PC

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.

← Retour à la fiche