veille-cloud.ino

Particle Boron · 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 Boron (nRF52840, Wi-Fi + Bluetooth LE, variante celular si procede) con antena integrada. Ninguno (LED D7 integrada).

Cableado

Nada que cablear. Alimentación: USB, LiPo o 3,6-5,5 V en VIN.

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

Instala el CLI de Particle (particle setup), graba con particle flash --serial u OTA (particle flash <nombre> firmware.bin). La app Device Cloud o la API REST completan el despliegue.

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