stats

ESP-Light-Sleep 3

Wanneer bij het voorbeeld "ESP-Light-Sleep 2" de uit te voeren actie langer is dan de sync interval tijd dient de CPU natuurlijk actief te blijven (bussy). In dat geval is enkel een modemsleep gewenst! De energie- winst is weliswaar minder dan bij lightsleep, maar de moeite waard!

Verbruik met modem aan: 70mA, met modemSleep: 25mA, met lightSleep: 10mA.

 
void OnDataRecv(byte *mac, byte *data, byte len) {
  rcvd = true;
  memcpy(&Sync, data, sizeof(Sync));
  styd = millis() + (Sync.Sync - 10);
}

void loop() {
  if (low && millis() >= styd) {
    low = false;
    wifi_set_opmode(WIFI_STA); 
    delay(1);
  }

  ...... plaats hier de uit te voeren actie (bussy)

  if (rcvd) {
    rcvd = 0;
    low = true;
    WiFi.mode(WIFI_OFF); 
    delay(1);
    if (!bussy)  Sleep(styd - millis());
  }
}

void Sleep(int sleepTime) {
  wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
  wifi_fpm_open();
  wifi_fpm_do_sleep(sleepTime * 1000);
  delay(sleepTime - 5);
}

Dit voorbeeld gebruikt een sync interval van 1 Sec.

NOOT:

  • Hoewel wifi_set_opmode() en WiFi.mode() nagenoeg hetzelfde doen 'gebruiken' ze in combinatie enkel bij WIFI_OFF 100mS, in plaats van beiden!
  • By LightSleep wordt de Xtal timing van millis() tijdelijk overgenomen door een RTC timing. Het optredende drift (..) wordt gecompenseerd via de delay na de LightSleep (!bussy).

    Heb je vragen of opmerkingen? Stuur me een berichtje en je krijgt alle gewenste informatie!

    HOME