ESP8266の消費電流について調べました。
調べた動機はESP8266で温度・湿度・気圧を測定してネットに送信するセンサー端末を作り、乾電池駆動でなるべく長期間動かそうと考え、そのための基礎データーを得ることでしたが、途中から調査そのものも面白くなってきました。

サマリー

  • 電源オンの立ち上がり時に200mA程度の電流が流れる(三端子レギュレーター出力側コンデンサー47μFの時)
  • Wi-Fiオンの場合、75mA前後の電流消費だが、時々120〜180mA程度の電流が流れることがある
  • Deep sleepに入ると、0.1mA程度しか消費しない
  • 三端子レギュレーターTA48M033Fの出力は安定していて、リップル分もあまりない
  • Deep sleep復帰後にWi-Fi接続しないなら、RF_DISABLEDを指定してDeep sleepした方が消費電流が少なく抑えられる

なるべく再現可能なように測定条件などを開示していますが、得られた結果は私の環境での値であり、結果を保証するものではありません。

消費電流モニター

ESP8266の消費電流、電源電圧の測定のために、測定対象とは別にもう一つESP8266を使った消費電流モニターを作りました。内容は「AmbientとESP8266でマイコンの消費電流モニターを作る」をご覧ください。

測定環境

測定対象の温度・湿度・気圧ロガーの回路図はこんな感じです。

esp_bme280

単三乾電池3本を電源にして三端子レギュレーターで3.3Vを作り、ESP8266を駆動しています。温度・湿度・気圧センサーはBoschのBME280を、三端子レギュレーターは東芝のTA48M033Fを使い、ブレッドボードで配線しています。

測定対象と消費電流モニターの接続はこんな感じです。INA226PRCが電流センサーで、その下に電流モニターがつきます。

電流モニター接続

測定対象の温度・湿度・気圧ロガーと消費電流モニターを接続した写真です。

電流モニター接続写真

測定対象のプログラムは大まかには次のような流れです。

  • 電源オンまたはDeep sleep解除で動き出し、
  • Wi-Fiアクセスポイント(AP)に接続し、
  • 温度・湿度・気圧センサーを読み、
  • データーをネット上のサーバー(Ambient)に送信し、
  • Deep sleepする

消費電流の大まかな傾向

電源オン→Wi-Fi AP接続→センサー読み込み→データー送信→Deep sleepという動作をした時の消費電流はグラフ1のような感じです。三端子レギュレーターの出力側で測定し、出力側のコンデンサーは47μFです。秋月電子さんで買った導電性高分子アルミ固体電解コンデンサーを使いました。

fig1

  • 立ち上がりで200〜300mA近い電流が流れる
  • その後は75mA前後の電流消費だが、時々120〜180mA程度の電流が流れることがある
  • Deep sleepに入ると、0.1mA程度しか消費しない

三端子レギュレーター

三端子レギュレーターTA48M033Fの出力は安定していて、リップル分もあまりありません(グラフ2)。これはグラフ1と同じ測定で得られた消費電流と電源電圧を重ねてグラフ化したものです。

fig2

三端子レギュレーターの出力側コンデンサーは470μFでも100μFでも47μFでも電圧の変動に大きな差は見られませんでした。グラフ3は出力側コンデンサーを100μFにした時の消費電流と電源電圧です。

fig3

立ち上がり時の電流はコンデンサーの値によって違いがあるようで、470μF、100μFの時は300mA前後流れますが、47μFの時は200mA程度と少ないようです。ちなみに秋月電子さんがTA48M033Fに同梱しているのは47μFの電解コンデンサーです。

Deep sleepからの復帰

Deep sleepから復帰した時の消費電流を調べました。まず、復帰後Wi-Fiオンとなる

    ESP.deepSleep(t, RF_DEFAULT);

でDeep sleepし、復帰後にwifi.bigin()でWi-Fiアクセスポイントに接続した場合の消費電流です。

fig4

Wi-Fiの電波状態によって接続する時間が変わるので、比較は難しいのですが、電源オンからの立ち上がり時よりもDeep sleepからの復帰の方が立ち上がり時間が短いような感じです。

次に、同じRF_DEFAULT(復帰後Wi-Fiオン)でDeep sleepし、復帰後Wi-Fiアクセスポイントに接続せず、センサーの値だけ読んで、またDeep sleepした場合の消費電流です。

fig5

立ち上がり部分を拡大したのが次のグラフ6です。

fig6

もう一つ、復帰後Wi-Fiオフとなる

    ESP.deepSleep(t, RF_DISABLED);

でDeep sleepした場合を測定しました。こちらもDeep sleep復帰後、センサーの値を読み、またDeep sleepしたものです。

fig7

立ち上がり部分を拡大したのが次のグラフ8です。

fig8

拡大するとはっきりしますが、復帰後Wi-Fiオン(RF_DEFALUT)の場合、復帰後に一度180mAほど電流が流れ、その後も70〜74mAほど電流が流れています。これがWi-Fiモジュールの初期化処理ではないかと思われます。それに対し、復帰後Wi-Fiオフ(RF_DISABLED)の場合は、15〜35mA程度しか電流が流れません。Deep sleep復帰後にWi-Fi接続しないなら、RF_DISABLEDを指定してDeep sleepした方が消費電流が少なく抑えられます。