veille-cloud.ino
Le mode SEMI_AUTOMATIC reprend la main sur le lien cloud : le script clignote vite quand le nuage est perdu, lentement quand tout va bien, et retente une connexion chaque minute. Le réflexe déploiement pour une carte sur batterie ou en zone Wi-Fi capricieuse.
Matériel requis
Un module Particle Boron (nRF52840, Wi-Fi + Bluetooth LE, variante cellulaire le cas échéant) avec antenne embarquée. Aucun (LED D7 embarquée).
Câblage
Rien à câbler. Alimentation : USB, LiPo ou 3,6-5,5 V sur VIN.
Fonctionnement
Particle.connected() reflète l'état du lien ; Particle.process() alimente la machine à états cloud sans bloquer. En cas de panne prolongée, WiFi.connect + Particle.connect relancent la session.
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 watchdog matériel (System.reset) si le lien ne revient pas après N minutes, ou publier un événement d'alerte à la coupure.
veille-cloud.ino
// Indicateur de sante reseau : LED + Particle.process() manuel.
// Utile quand le module doit survivre a des coupures Wi-Fi.
unsigned long derniereVerif = 0;
bool etaitConnecte = false;
void setup() {
pinMode(D7, OUTPUT);
Serial.begin(9600);
// Mode SEMI_AUTOMATIC : a nous de maintenir le lien.
Particle.process();
}
void loop() {
bool connecte = Particle.connected();
if (connecte != etaitConnecte) {
etaitConnecte = connecte;
Serial.println(connecte ? "CLOUD: connecte" : "CLOUD: perdu");
}
// Feux de circulation : rapide si nuage perdu, fixe sinon.
bool clignote = (millis() / (connecte ? 1000 : 150)) % 2;
digitalWrite(D7, clignote);
// Battee du lien cloud (non bloquant, a appeler souvent).
Particle.process();
if (millis() - derniereVerif >= 60000) {
derniereVerif = millis();
if (!connecte) {
Serial.println("Tentative de reconnexion...");
WiFi.connect();
Particle.connect();
}
}
}
// En AUTOMATIC (defaut), le framework fait deja tout seul :
// ce montage sert aux builds SEMI/MANUAL ou tres occupes.