veille-cloud.ino

Particle Boron · Fichier : veille-cloud.ino · Langage : Arduino · Usage : Surveiller la connexion réseau et recharger le lien cloud en cas de panne

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.

← Retour à la fiche