Arduino
IoT
ESP8266
ArduinoIDE
ESP-WROOM-02

ESP8266 (ESP-WROOM-02) で消費電力を抑えるには (スリープモードまとめ)

More than 3 years have passed since last update.


概要

ESP8266 (以下、WROOM02) の消費電力を抑える


はじめに

WROOM02 では、何種類かの低消費電力モードがあるので、そのまとめ。

Deep-Sleep が最も低消費電力だが、(タイマーで復旧するので)サーバモードでは使えない。

Modem-Sleep / Light-Sleep は無線通信などの割り込みによって復旧する。


データシート

秋月 WROOM02 データシート


消費電力

Parameters
Typical
Unit

Modem-Sleep
15,000
uA

Light-Sleep
900
uA

Deep-Sleep
10
uA


Modem-Sleep / Light-Sleep


  • WROOM02 をサーバとして使う場合は、これらのタイプ。


定義

~/Library/Arduino15/packages/esp8266/hardware/esp8266/2.0.0/tools/sdk/include/user_interface.h

enum sleep_type {

NONE_SLEEP_T = 0,
LIGHT_SLEEP_T,
MODEM_SLEEP_T
};

bool wifi_set_sleep_type(enum sleep_type type);


使い方



  • setup 関数内で wifi_set_sleep_type( type ) を実行する。
    → 後は適当なタイミングで、自動的にスリープと目覚めを繰り返す。

  • 見た目、スリープ状態かどうか、わからない。



  • Modem-Sleep するように設定する場合。

extern "C" {

#include <user_interface.h>
}

void setup() {
// ... Wi-Fi設定等

wifi_set_sleep_type(MODEM_SLEEP_T);
}

void loop() {
}


回路図

回路に変更は不要


参考

以下、一連のまとめ記事が、めちゃくちゃ詳しい。


Deep-Sleep


  • 消費電力がものすごく低い。

  • WROOM02 をセンサーとして使うなら、このタイプ。

  • 復旧時、再起動されて、setup( ) から実行になる。


定義

~/Library/Arduino15/packages/esp8266/hardware/esp8266/2.0.0/cores/esp8266/Esp.h

// compatibility definitions

#define WakeMode RFMode
#define WAKE_RF_DEFAULT RF_DEFAULT
#define WAKE_RFCAL RF_CAL
#define WAKE_NO_RFCAL RF_NO_CAL
#define WAKE_RF_DISABLED RF_DISABLED

void deepSleep(uint32_t time_us, RFMode mode = RF_DEFAULT);


使い方


  • IO16 ピン を RST(リセット) に繋いでおく必要がある。
    → 指定時間経過後にリセットが実行され、再起動がかかる。

  • スリープ時間は マイクロ秒 で指定する。


  • setup 関数内の最後で ESP.deepSleep( ) を実行すればよい。
    → loop は一度も実行されないで、スリープに突入することができる。
    → setup だけで処理が完結する (setupだけを繰り返す) スケッチが最適。



  • 10 秒間スリープして、再起動したい場合

void setup() {

// ... Wi-Fi設定等

// setup の末尾に記述する
ESP.deepSleep(10 * 1000 * 1000);
}

void loop() {
}


回路図

IO16 を RST に繋げる。


「ESP8266 (ESP-WROOM-02) でセンサーを扱う」の回路図では

cirkit.png


参考

以下、一連のまとめ記事が、めちゃくちゃ詳しい。


まとめ

WROOM02 での低消費電力モードをまとめました。

それぞれに、メリット・デメリットがるので、用途に合わせて選択する必要があります。


  • Deep-Sleep が最も低消費電力だが、(タイマーで復旧するので)サーバモードでは使えない。

  • Modem-Sleep / Light-Sleep は無線通信などの割り込みによって復旧する。

Modem-Sleep と Light-Sleep の明らかな違いは、分かりませんでした。
(→ それなら Light-Sleep を選択すればよいじゃない?)

消費電力を時系列に詳しく測ることができる計測器が欲しい。