veille-cloud.ino
El modo SEMI_AUTOMATIC recupera el control del enlace cloud: el script parpadea rápido cuando la nube se pierde, lento cuando todo va bien, y reintenta cada minuto. El reflejo de despliegue para una placa a batería o en zona Wi-Fi caprichosa.
Hardware
Un módulo Particle Photon (Wi-Fi 2,4 GHz, microcontrolador STM32, blindaje metálico) alimentado por USB o VIN. Ninguno (LED D7 integrada).
Cableado
Nada que cablear. Alimentación: USB o 3,6-5,5 V en VIN (3,3 V máx. en los pines).
Funcionamiento
Particle.connected() refleja el estado del enlace; Particle.process() alimenta la máquina de estados de la nube sin bloquear. Tras un corte largo, WiFi.connect + Particle.connect reinician la sesión.
Ejecución
Con el CLI de Particle: particle flash --serial (modo DFU, doble reset) o flash OTA cuando la placa esté en línea. El Safe Mode (reset + WiFi) sirve para depurar.
Variantes
Añadir un watchdog hardware (System.reset) si el enlace no vuelve tras N minutos, o publicar un evento de alerta al cortarse.
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.