🛠 Station météo autonome en deep sleep

ESP32 (original, classe ESP32-WROOM-32) · avance · Schéma : IMG-esp32-avance-1-deep-sleep-station-meteo.svg — Station météo ESP32 sur batterie avec capteur SHT31, courbe de consommation alternant pics de mesure et sommeil à 150 µA

Objectifs

Construire une station météo autonome : mesurer température et humidité avec un SHT31, puis endormir l'ESP32 entre deux mesures. En deep sleep, l'ESP32 tombe à environ 150 µA — seuls le timer et l'RTC restent actifs, et la mémoire RTC conserve les variables marquées RTC_DATA_ATTR. Vous maîtriserez la cause de réveil, le I2C et la discipline d'alimentation.

Matériel

Code complet

#include <Wire.h>
#include <Adafruit_SHT31.h>

Adafruit_SHT31 sht31 = Adafruit_SHT31;
RTC_DATA_ATTR uint32_t compteur = 0;   // survit au deep sleep

void setup {
  Serial.begin(115200);
  delay(200);
  esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause;
  Serial.printf("\nReveil : %d (4 = timer)\n", (int)cause);

  Wire.begin(21, 22);
  sht31.begin(0x44);
  float t = sht31.readTemperature;
  float h = sht31.readHumidity;
  compteur++;
  Serial.printf("Mesure %u : %.2f C, %.1f %%\n", compteur, t, h);

  esp_sleep_enable_timer_wakeup(900ULL * 1000000ULL); // 15 min
  Serial.println(F("Endormissement..."));
  Serial.flush;
  esp_deep_sleep_start;
}

void loop {}   // jamais atteint : tout se passe dans setup

Vérification attendue

À chaque réveil, la console affiche une mesure avec un compteur qui augmente (la mémoire RTC est bien conservée), puis la carte se tait 15 minutes. Avec un micro-ampèremètre, on mesure environ 40 mA en mesure et environ 150 µA en sommeil profond.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels