buzzer-alarme.ino
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);