buzzer-alarme.ino

Particle Boron · Fichier : buzzer-alarme.ino · Langage : Arduino · Usage : Buzzer d'alarme déclenché par un événement cloud

Un événement cloud "alarme" déclenche une sirène deux tons sur buzzer passif, et "off" l'arrête. Le motif sonore est non bloquant (tone avec durée + pas de 200 ms), l'alarme reste donc pilotable pendant qu'elle sonne.

Matériel requis

Un module Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante cellulaire le cas échéant) avec antenne embarquée. 1 buzzer passif 3,3-5 V.

Câblage

Buzzer entre D6 et GND. tone() génère la fréquence ; un buzzer actif ne conviendrait pas (bip fixe).

Fonctionnement

Particle.subscribe appelle le handler à chaque événement "alarme" ; loop() alterne deux fréquences toutes les 200 ms sans jamais bloquer le lien cloud.

Exécution

Installer le CLI Particle (particle setup), particle flash --serial ou OTA (particle flash <nom> firmware.bin). L'application Device Cloud ou l'API REST complete le deploiement.

Variantes

Ajouter un bouton local de muting, ou faire clignoter la LED D7 en synchro avec le son.

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);

← Retour à la fiche