alerte-obscurite.ino

Arduino Tian (id : tian) · Fichier : alerte-obscurite.ino · Langage : Arduino · Usage : Détecter l'obscurité côté MCU, notifier côté Linux

La détection reste côté MCU (rapide, temps réel), la notification côté Linux (logger, mail, MQTT). Cette répartition des rôles est la philosophie des cartes Yun/Tian : chaque processeur fait ce qu'il fait de mieux.

Matériel requis

Une Arduino Tian (Microchip SAM3X8E + Linux TianOS sur Atheros AR9344, double port USB, Ethernet et Wi-Fi). 1 LDR + résistance 10 kΩ en diviseur sur A0.

Câblage

LDR entre 5 V et A0, résistance 10 kΩ entre A0 et GND.

Fonctionnement

Le seuil avec hystérésis évite les oscillations à la tombée du jour ; logger écrit dans le syslog du Linux, consultable par journalctl ou relayé par un script système.

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

Remplacer logger par un curl vers une API de notification, ou allumer une lampe pilotée par le Linux via GPIO/relais.

alerte-obscurite.ino

// LDR sur A0 : seuil franchi -> notification cote Linux (log + LED).
#include <Bridge.h>
#include <Process.h>

const int LDR = A0;
const int SEUIL = 300;          // a calibrer
const unsigned long HYSTERESIS = 30000;

bool nuit = false;
unsigned long dernierEtat = 0;

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

void notifier(const char *message) {
  Process p;
  p.runShellCommand(String("logger 'capteur: ") + message + "'");
  while (p.running());
  Serial.println(message);
}

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

  int valeur = analogRead(LDR);
  if (!nuit && valeur < SEUIL) {
    nuit = true;
    notifier("obscurite detectee");
  } else if (nuit && valeur > SEUIL + 80) {   // hysteresis 80
    nuit = false;
    notifier("retour a la lumiere");
  }
}

// Cote Linux : journalctl -f (ou logread) voit passer les alertes,
// et un script logrotate/cron peut les pousser par mail.

← Retour à la fiche