sommeil-basse-consommation.ino

Particle Photon · Fichier : sommeil-basse-consommation.ino · Langage : Arduino · Usage : Réveil périodique en mode Stop pour fonctionner sur batterie

Le cycle de survie sur batterie : réveil, mesure DHT, publication cloud, puis deep sleep de 60 s radio éteinte. Le redémarrage à chaque cycle simplifie le firmware au prix d'un reconnexion cloud — le compromis classique du capteur sur pile.

Matériel requis

Un module Particle Photon (Wi-Fi 2,4 GHz, microcontrôleur STM32, blindage métallique) alimenté par USB ou VIN. 1 capteur DHT11 + batterie LiPo (le module gère la charge sur sa borne VUSB/VIN).

Câblage

DHT sur D5 comme l'exemple capteur ; batterie sur les bornes LiPo. Antenne externe si le boîtier est métallique.

Fonctionnement

System.sleep(SLEEP_MODE_DEEP, 60) coupe tout sauf le minuteur de réveil ; la carte repart de setup() au réveil. WiFi.off/Cellular.off évitent la consommation résiduelle de la radio.

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

Réveil par interruption externe (interrupt sur D2 pour un détecteur), ou adaptatif : allonger le sommeil quand la mesure est stable.

sommeil-basse-consommation.ino

// Cycle basse consommation : mesure, publication, Stop 60 s.
// Le lien cloud est coupe pendant le Stop (reconnexion au reveil).

#include "DHT.h"
DHT dht(D5, DHT11);

void setup() {
  Serial.begin(9600);
  dht.begin();
  Particle.process();          // laisse la connexion s'etablir
}

void loop() {
  // 1) Rejoindre le cloud (bloquant jusqu'a 10 s).
  if (!Particle.connected()) Particle.connect();

  // 2) Mesurer et publier.
  dht.measure();
  char trame[64];
  snprintf(trame, sizeof(trame), "{\"t\":%.1f,\"h\":%.1f}",
           dht.readTemperature(), dht.readHumidity());
  Particle.publish("mesure-batterie", trame, 60, PRIVATE);

  // 3) Endormissement : radio eteinte, courant divise.
  Serial.println("Endormissement 60 s...");
  Serial.flush();
  WiFi.off();
  Cellular.off();   // ignore sur les modeles sans cellulaire
  delay(100);
  System.sleep(SLEEP_MODE_DEEP, 60);  // deep sleep 60 s

  // Au reveil, la carte redemarre depuis setup() :
  // le cycle complet se repete a chaque reveil.
}

// Sur batterie 180 mAh, le deep sleep entre deux publications
// fait tenir des semaines ; verifier le courant reel de sa variante.

← Retour à la fiche