🛠 Station météo autonome en deep sleep

ESP32 (original, clase 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

Objetivos

Construir una estación meteorológica autónoma: medir la temperatura y la humedad con un SHT31, y luego poner el ESP32 en modo de sueño profundo entre dos mediciones. En modo de sueño profundo, el ESP32 consume aproximadamente 150 µA: solo el temporizador y el RTC permanecen activos, y la memoria RTC conserva las variables marcadas con RTC_DATA_ATTR. Dominarás la causa de la reactivación, el protocolo I2C y la disciplina de alimentación.

Material

Código completo

#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

Verificación esperada

En cada reactivación, la consola muestra una medición con un contador que aumenta (la memoria RTC se conserva correctamente), y luego la placa permanece en silencio durante 15 minutos. Con un microamperímetro, se mide aproximadamente 40 mA durante la medición y aproximadamente 150 µA en modo de sueño profundo.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales