veille-cloud.ino

Particle Photon · 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 Photon (Wi-Fi 2,4 GHz, microcontrôleur STM32, blindage métallique) alimenté par USB ou VIN. Aucun (LED D7 embarquée).

Câblage

Rien à câbler. Alimentation : USB ou 3,6-5,5 V sur VIN (3,3 V max sur les broches).

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

Avec le CLI Particle : particle flash --serial (mode DFU, double reset) ou flash OTA une fois la carte en ligne. Le mode Safe Mode (reset + WiFi) sert au dépannage.

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