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

  • 48
    Like
  • 0
    Comment
More than 1 year has 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 を選択すればよいじゃない?)
消費電力を時系列に詳しく測ることができる計測器が欲しい。