概要
ESP8266 (以下、WROOM02) の消費電力を抑える
はじめに
WROOM02 では、何種類かの低消費電力モードがあるので、そのまとめ。
Deep-Sleep が最も低消費電力だが、(タイマーで復旧するので)サーバモードでは使えない。
Modem-Sleep / Light-Sleep は無線通信などの割り込みによって復旧する。
データシート
消費電力
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() {
}
回路図
回路に変更は不要
参考
以下、一連のまとめ記事が、めちゃくちゃ詳しい。
- ESP-WROOM-02のメモ(11):3つのSleepの使い分け
- ESP-WROOM-02プログラミング:スリープのテスト
-
ESP-WROOM-02:スリープの調査結果
↑ グラフで見ると、すごくよくわかる。
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) でセンサーを扱う」の回路図では
参考
以下、一連のまとめ記事が、めちゃくちゃ詳しい。
まとめ
WROOM02 での低消費電力モードをまとめました。
それぞれに、メリット・デメリットがるので、用途に合わせて選択する必要があります。
- Deep-Sleep が最も低消費電力だが、(タイマーで復旧するので)サーバモードでは使えない。
- Modem-Sleep / Light-Sleep は無線通信などの割り込みによって復旧する。
Modem-Sleep と Light-Sleep の明らかな違いは、分かりませんでした。
(→ それなら Light-Sleep を選択すればよいじゃない?)
消費電力を時系列に詳しく測ることができる計測器が欲しい。