batterie.ino

M5Stack Core (ESP32) — familia Basic / Gray (K001 / K002) · Archivo : batterie.ino · Lenguaje : Arduino · Uso : Suivre la batterie et économiser l'énergie

El PMIC IP5306 del Core da nivel de pila, estado de carga y tres niveles de reposo. lightSleep corta CPU y pantalla sin perder contexto: la manera correcta de esperar sin vaciar la batería.

Hardware necesario

Un M5Stack Core Basic/Gray (ESP32 en carcasa con TFT de 320×240, botones A/B/C, altavoz, ranura microSD, batería de 110 mAh). Ninguno; un cable USB para ver cambiar el estado de carga.

Cableado

Sin cableado. La batería interna se carga por USB-C; los LED de carga están en el PMIC.

Funcionamiento

getBatteryLevel consulta el PMIC por I2C (0x34); lightSleep(ms) pone el núcleo en pausa con despertar por PowerKey (botón C) o timeout. El contexto RAM sobrevive, al revés que el deep sleep. En el Arduino IDE (paquete esp32), placa « M5Stack-Core-ESP32 »; instale la biblioteca « M5Stack » (o M5Unified) desde el gestor y suba.

Para ir más lejos

Pase a sueño profundo + despertar temporizado para una estación que duerme horas, aceptando la pérdida de contexto.

batterie.ino

// Batterie 110 mAh (IP5306) : niveau, charge, veille et reveil bouton.
#include <M5Stack.h>

void setup() {
  M5.begin(true, false, true, true);
  M5.Power.begin();
  M5.Lcd.setTextSize(2);
}

void loop() {
  M5.update();
  M5.Lcd.setCursor(10, 20);
  M5.Lcd.printf("Batterie : %3d %%\n", M5.Power.getBatteryLevel());
  M5.Lcd.printf("Charge   : %s\n",
                M5.Power.isCharging() ? "OUI" : "non");
  M5.Lcd.printf("Prise    : %s\n",
                M5.Power.isChargeFull() ? "pleine" : "-");
  M5.Lcd.drawString("Bouton A = 10 s de veille", 10, 140, 2);

  if (M5.BtnA.wasPressed()) {
    M5.Lcd.fillScreen(TFT_BLACK);
    M5.Lcd.drawString("Veille... bouton C", 30, 110, 2);
    M5.Power.lightSleep(10000);   // CPU halt 10 s, ecran coupe, reveil C
    M5.Lcd.fillScreen(TFT_BLACK);
  }
  delay(500);
}

← Volver a la ficha