0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ESP32-WROOM-32のLIGHT-SLEEPとタイマーでの復帰で省電力化する

Last updated at Posted at 2023-07-05

はじめに

WiFiモジュールとして有名なESP32-WROOM-32を、WiFiは使わずに単なる高性能CPUとして使うことがあったので、その際に見つけたことを書いておきます。

省電力化の方法

WiFiは不要な案件であったので、WiFiをオフにします。

WiFi.disconnect(true);

更に電流を抑えるため、ライトスリープを併用することにしました。
スリープから目覚めるのには、タイマーを使います。
esp_sleep_enable_timer_wakeup(50 * 1000UL);
としておけば、50msごとに起動するはずなのですが、これでは目覚めません。
何故かWiFiを接続してconfigTzTimeで時刻合わせをすれば大丈夫なのですが、最初からWiFiをオフにすると目覚めなくなります。
色々試したのですが、
sntp_set_system_time(1688564256, 0);
のように、現時刻を設定すると目覚めるようになりました。
この時、1688564256の値を0とか1ではなぜだか目覚めません。

esp32.ino
#include <WiFi.h>

int keyState = 1;

void setup()
{
  Serial.begin(115200);
  while (!Serial);

  pinMode(GPIO_NUM_0, INPUT_PULLUP);

  // WiFi をオフさせる
  WiFi.disconnect(true);

  sntp_set_system_time(1688564256, 0);

  // 50 ms のタイマー設定
  esp_sleep_enable_timer_wakeup(50 * 1000UL);
}

void loop()
{
  int key = digitalRead(0);
  if (key == 0 && keyState != 0)
    Serial.println("Press");
  keyState = key;
  Serial.flush();
  esp_light_sleep_start();
}

これで、loop()の頭の部分に必要な処理を追加すれば、50ms間隔で処理をした後ライトスリープして消費電流が格段に減ります。
ライトスリープなので、ディープスリープのように小難しいことをしなくとも気楽に使えます。
通常の処理が軽めの案件では使えると思います。

消費電流計測値

テスターで計った消費電流です。ESP-WROOM-32E CPU単体で計測しています。
(1)WiFiに接続した場合
  66~74mA
(2)WiFiをオフした場合
  55.3mA
(3)上記サンプルプログラム(インターバル50m秒)の場合
  2.8mA
インターバルを長くしても消費電流は減りませんでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?