buzzer-alarme.ino

Particle Boron · Archivo : buzzer-alarme.ino · Lenguaje : Arduino · Uso : Buzzer d'alarme déclenché par un événement cloud

Un evento cloud "alarme" dispara una sirena de dos tonos en un zumbador pasivo, y "off" la detiene. El patrón sonoro no bloquea (tone con duración + paso de 200 ms), así la alarma sigue controlable mientras suena.

Hardware

Un módulo Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante celular si procede) con antena integrada. 1 zumbador pasivo de 3,3-5 V.

Cableado

Zumbador entre D6 y GND. tone() genera la frecuencia; un zumbador activo no valdría (pitido fijo).

Funcionamiento

Particle.subscribe ejecuta el handler en cada evento "alarme"; loop() alterna dos frecuencias cada 200 ms sin bloquear nunca el enlace cloud.

Ejecución

Instala el CLI de Particle (particle setup), graba con particle flash --serial u OTA (particle flash <nombre> firmware.bin). La app Device Cloud o la API REST completan el despliegue.

Variantes

Añadir un botón local de silencio, o hacer parpadear el LED D7 sincronizado con el sonido.

buzzer-alarme.ino

// Buzzer passif sur D6 : sequence d'alarme declenchee par evenement.
const int BUZZER = D6;
bool alarme = false;

void surEvenement(String event, String data) {
  if (data == "on")  alarme = true;
  if (data == "off") alarme = false;
}

void setup() {
  pinMode(BUZZER, OUTPUT);
  Particle.subscribe("alarme", surEvenement, MY_DEVICES);
  Serial.begin(9600);
}

void loop() {
  static uint32_t t0 = 0;
  static int etape = 0;
  if (millis() - t0 < 200) return;
  t0 = millis();

  if (alarme) {
    // Motif deux tons repetes (la, si, la, si...).
    static const int NOTES[] = {440, 587};
    tone(BUZZER, NOTES[etape % 2], 180);
    etape++;
  } else {
    noTone(BUZZER);
  }
}

// Declencher depuis une autre carte ou l'API :
// Particle.publish("alarme", "on", 60, PRIVATE);

← Volver a la ficha