buzzer-alarme.ino

Particle Photon · 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 Photon (Wi-Fi 2,4 GHz, microcontrôleur STM32, blindage métallique) alimenté par USB ou VIN. 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

Avec le CLI Particle : particle flash --serial (mode DFU, double reset) ou flash OTA une fois la carte en ligne. Le mode Safe Mode (reset + WiFi) sert au dépannage.

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