alerte-obscurite.ino
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.