alerte-obscurite.ino
La detección se queda en el MCU (rápido, tiempo real), la notificación en el Linux (logger, correo, MQTT). Ese reparto de papeles es la filosofía de las placas Yun/Tian: cada procesador hace lo que mejor sabe hacer.
Hardware
Un Arduino Tian (Microchip SAM3X8E + Linux TianOS sobre un Atheros AR9344, doble USB, Ethernet y Wi-Fi). 1 LDR + resistencia de 10 kΩ en divisor sobre A0.
Cableado
LDR entre 5 V y A0, resistencia de 10 kΩ entre A0 y GND.
Funcionamiento
El umbral con histéresis evita oscilaciones al anochecer; logger escribe en el syslog del Linux, consultable con journalctl o retransmitido por un script del sistema.
Ejecución
Arduino IDE con la placa Arduino Tian: grabado por el puerto USB « Native ». Por el lado Linux: ssh root@arduino.local. La librería Bridge es idéntica a la del Yun.
Variantes
Sustituir logger por un curl a una API de notificación, o encender una lámpara controlada por el Linux vía GPIO/relé.
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.