Skocz do zawartości

ESP32: optymalizacja zasilania przy modem sleep


Pomocna odpowiedź

Napisano

Dzień dobry, walczę z ESP32, które ma być zasilane bateryjnie. Ma się uruchamiać co 10 minut, odczytać dane i wysłać je po WiFi. Poza czujnikami są jeszcze podłączone dwa kontaktrony, zliczam ich impulsy poprzez przerwanie. Z tego co się orientuję, jeśli chcę skorzystać z gotowych funkcji, to odpada mi usypianie całego ESP. Mam do wyboru wybudzenie przez GPIO albo czas, nie można korzystać z obu opcji jednocześnie (?), więc pozostaje mi tylko wyłączenie WiFi i Bluetooth. Opisywany w wielu miejscach modem sleep i tak wygląda wystarczająco oszczędnie (~3-20 mA, mi się udało uzyskać najmniej 13 mA na Lolin32 przy taktowaniu 10 MHz).

Problem w tym, że mierząc pobór prądu ESP nie widzę różnicy między wyłączonym, a włączonym WiFi:

  • 41 mA przy pustym szkicu
  • 47 mA po samym podłączeniu się po sieci WiFi
  • 41,5 mA po wyłączeniu Bluetooth i WiFi

Funkcje i biblioteki, z których korzystałem do pomiaru:

#include <WiFi.h>        
#include <esp_bt.h>
#include <esp_wifi.h>

void setup() {
  if (WiFi.status() != 3) {
    WiFi.begin("ssid", "password");
    while (WiFi.status() != 3) delay(500);
  }
  delay(1000);
  
  btStop();
  esp_bt_controller_disable();
  WiFi.mode(WIFI_OFF);
  esp_wifi_stop();
}

void loop() {
}

Płytka to NodeMCU-32S, procek ustawiony na 80 MHz. Analogicznie jest na LoLin32, tam tylko konkretne wartości pomiarów są niższe. Pisane w Arduino IDE, które nie zwraca żadnego błędu. Po podłączeniu do WiFi mogę się normalnie pingować, po rozłączeniu już nie. Co jest nie tak? Co jeszcze można zoptymalizować pod kątem zużycia energii?

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...