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: 15mA, met lightSleep: 0,5mA.

 
void OnDataRecv(byte *mac, byte *data, byte len) {
  rcvd = true;
  memcpy(&Sync, data, sizeof(Sync));
  styd = millis() + Sync.Sync - 2;
  W = (bussy) ? 108 : 8;  // wake-up
}

void loop() {
  if (low && millis() > (styd - W)) {
    low = false;
    WiFi.mode(WIFI_STA);
  }

  ...... plaats hier de uit te voeren actie

  if (rcvd) {
    rcvd = 0;
    Sleep(bussy, (styd - W) - millis());
  }
}

void Sleep(bool bussy, int sleepTime) {
  low = true;
  WiFi.mode(WIFI_OFF);
  if (bussy) wifi_fpm_set_sleep_type(MODEM_SLEEP_T);
  else wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
  wifi_fpm_open();
  wifi_fpm_do_sleep(sleepTime * 1000);
  if (bussy) delay(1);
  else delay(sleepTime + 1);
}

Dit voorbeeld gebruikt een sync interval van 1 Sec.

NOOT: Omdat bij modemsleep de CPU actief blijft, verloopt de herstart van het modem sneller en kan het wake-up moment (enkel) in dat geval (tot wel 80mS) dichter bij het sync moment gekozen worden.

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

HOME