veille-cloud.ino

Particle Photon · Archivo : veille-cloud.ino · Lenguaje : Arduino · Uso : Surveiller la connexion réseau et recharger le lien cloud en cas de panne

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.

← Volver a la ficha