sommeil-profond.ino

ESP32-C6 · Fichier : sommeil-profond.ino · Langage : Arduino · Usage : Réduire la consommation au sommeil profond minuté

En sommeil profond, le SoC consomme quelques microampères : réveil par minute ou par appui, l'autonomie d'une pile tient des mois. RTC_NOINIT_ATTR garde le compteur de réveils entre deux remises à zéro.

Matériel requis

Une carte ESP32-C6 (RISC-V 160 MHz, Wi-Fi 6 + BLE 5 + 802.15.4) type DevKitC-1, alimentée par USB. Aucun pour tester ; bouton sur GPIO0 pour réveiller manuellement (attention : GPIO0 est aussi la broche bootloader).

Branchement

Bouton GPIO0 vers GND. En montage sur batterie, retirer le pont USB-Série qui consomme plus que le SoC endormi.

Fonctionnement

esp_sleep_enable_timer_wakeup arme l'horloge RTC, ext0 surveille un niveau ; esp_deep_sleep_start coupe tout le reste. Au réveil le programme repart de setup() — les variables RAM sont perdues, sauf les attributs RTC. Dans l'Arduino IDE (paquet esp32 récent), choisissez « ESP32C6 Dev Module » puis Téléverser ; pour Zigbee/Thread utilisez ESP-IDF (idf.py set-target esp32c6).

Pour aller plus loin

Réveiller sur un capteur (ext1 sur plusieurs broches), ou endormir entre deux lectures DHT du sketch dédié.

sommeil-profond.ino

// Sommeil profond : reveil toutes les 30 s ou sur GPIO0 (LOW).
// Le compteur de reveils est conserve en RTC memory (tenu sous tension).
RTC_NOINIT_ATTR int reveils;

void setup() {
  Serial.begin(115200);
  delay(150);                       // laisser le pont USB-serial s'ouvrir
  reveils++;
  Serial.printf("\nReveil n°%d — mesure, puis dodo 30 s\n", reveils);

  // (ici : lecture capteur, envoi radio, etc.)
  Serial.printf("heap libre avant dodo : %u\n", ESP.getFreeHeap());

  esp_sleep_enable_timer_wakeup(30ULL * 1000000);          // 30 s
  esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0);             // ou GPIO0 a LOW
  Serial.println("Entree en sommeil profond...");
  Serial.flush();
  delay(10);
  esp_deep_sleep_start();
}

void loop() {}   // jamais atteint : le deep sleep reinitialise tout

← Retour à la fiche