alerte-obscurite.ino

Arduino Yún · Archivo : alerte-obscurite.ino · Lenguaje : Arduino · Uso : Détecter l'obscurité côté MCU, notifier côté Linux

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 Yun (ATmega32U4 + Linux Linino sobre un Atheros AR9331, Wi-Fi y Ethernet, ranura microSD). 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: selecciona el puerto serie para grabar y luego la placa Arduino Yun para el monitor. Por el lado Linux: ssh root@arduino.local (contraseña de la distribución). La app Yunwizard configura la red.

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.

← Volver a la ficha