valeurs-partagees.ino

Arduino Tian (id : tian) · Fichier : valeurs-partagees.ino · Langage : Arduino · Usage : Échanger des valeurs entre le croquis et Linux (valuePut/Get)

Le magasin de valeurs du pont est la variable partagée MCU↔Linux : valuePut expose une clé lisible par une simple requête HTTP locale, valueGet récupère une consigne écrite depuis le Linux. Deux lignes pour un aller-retour complet.

Matériel requis

Une Arduino Tian (Microchip SAM3X8E + Linux TianOS sur Atheros AR9344, double port USB, Ethernet et Wi-Fi). 1 potentiomètre ou LDR sur A0 pour la démo.

Câblage

Curseur sur A0, extrémités sur 5V et GND.

Fonctionnement

Bridge.valuePut pousse la clé vers le démon bridge côté Linux, exposée sous /data/<clé> ; valueGet relit la valeur d'une clé que le Linux a écrite avec un POST /data.

Exécution

Arduino IDE avec la carte Arduino Tian : téléversement par le port USB « Native ». Côté Linux : ssh root@arduino.local. La bibliothèque Bridge est identique à celle de la Yun.

Variantes

Ajouter des clés d'état (relais, mode) pour un petit automate, ou faire tourner la consigne depuis un cron Linux.

valeurs-partagees.ino

// Echange de donnees par le magasin de cles du pont.
#include <Bridge.h>

const int CAPTEUR = A0;
unsigned long t0 = 0;

void setup() {
  Bridge.begin();
}

void loop() {
  if (millis() - t0 < 1000) return;
  t0 = millis();

  // 1) Publier la mesure : cote Linux -> GET /data/lumiere
  int brut = analogRead(CAPTEUR);
  Bridge.valuePut("lumiere", String(brut).c_str());

  // 2) Lire une consigne ecrite par le Linux (defaut 500).
  String consigne;
  if (!Bridge.valueGet("seuil", consigne) || consigne.length() == 0) {
    consigne = "500";
  }
  int seuil = consigne.toInt();

  if (brut < seuil) {
    Bridge.valuePut("alerte", "obscurite");
  } else {
    Bridge.valuePut("alerte", "ok");
  }
}

// Cote Linux (Yun) :
//   curl http://localhost/data/lumiere
//   curl -d "400" http://localhost/data/seuil

← Retour à la fiche