hogehoge, world.

米国カリフォルニアのソフトウェアエンジニアがIT・自転車・音楽・天体写真・語学などについて書く予定。

Particle Mesh: Early Adopterはつらいよ (2) ~ Xenon/Argonの消費電流

前回に続いては実際にParticle Meshを触ってみた体験レポを書こうと思っていたのだが、そんなものよりも需要あるかな?と思い、Particle Meshの消費電流を測ってみたのでそっちを先に書いてみる。ちなみにParticle本家のコミュニティにもポストしてみたところ早速+5 Likesをゲット。

結論から行くと、下記がXenonの消費電流を測ったグラフ(横軸ms/縦軸mA)で、通常稼働時が17~18mA、通信時が35~40mAといったところである。

f:id:tomoto335:20190105052304p:plain

測定はこんな風にINA219+Arduino Nanoを使った電流計で。ソフトウェアはここ。パワー供給はArduino Nanoの3V3出力では心もとないので、USBの5Vを自前のレギュレータを通してXenonの3V3に突っ込んでみた。

f:id:tomoto335:20190105053258j:plain

Xenon消費電流解説

  • グラフの左端=ぶちっと電源を挿したところから出発。最初にネットワーク確立処理がガラガラポンと走り、5秒強で完了した感じである。ちなみにこれはかなり調子がよいケースで、調子が悪いと何十秒もかかる。
  • 最初の突入電流のスパイクの上がカットされているが、一瞬120mAくらい出ている。
  • ネットワーク確立後、(1)ピンの電圧を読み取る→(2)Mesh.publishでデータ送出→(3)delay10秒を繰り返すアプリケーションが走る。10秒ごとに立っている濃いスパイクが(2)に相当する。その他に薄いスパイクが出ている(ハートビート?)が、それらも含めて通信時には概ね35mA~40mA食っているであろうことが読み取れる。
  • delay中は約17mA食っている。delayを使わずloopを空回りさせる版も作って測ってみたが約18mAとほぼ変わらなかった。現在Particle Meshにはスリープモードが実装されていないので、それが実装されればdelay中はもっと消費電流が下がると期待できる。
  • データ送出はMesh.publishを使っているが、クラウドまで飛ぶParticle.publishだと何か変わるかな?と思ってやってみたが、スパイクの高さや形は変わらなかった。両方ともUDPパケット一発送るだけだと推測。

ESP8266との比較

下記は昔の記事 ESP-WROOM-02(Arduino)によるWiFiネットワーキング (11) ~ 降水確率予報 "Amedes" で測定したESP8266の消費電流測定例である。Particle Meshがどのくらい低パワーなのか、比べてみよう。

f:id:tomoto335:20160622033224p:plain

このESP8266アプリケーションは、通常Light Sleepモード(約20mA)にいて、100msごとに復帰してリクエストを確認(約90mAのスパイク)するサイクルを持つ。また、このグラフにははっきり表れていないが、WiFi通信時には最大300mA/平均150mA程度のスパイクが立つ。

状態 Xenon ESP8266
アイドル時 17mA 20mA
CPU稼働時 18mA 90mA
通信時 <40mA >150mA

こう見てみると、起動処理中だろうが通信中だろうが40mA以下で回っているXenonは大したものだ、ボタン電池でも駆動できるというのはこういうことか、と思える。ESP8266は弱い電源だと起動時の電流(>200mA)が足りなくて延々と落ち続けることももあったが、そういう心配はまったくなさそうだ。

ただ、「弱い電源でも駆動できる」と「電気(電池の容量)を食わない」とはイコールではない。ESP8266がアイドル時にLight Sleepに入ったときの消費電流は20mAと、Xenonのアイドル時の消費電流17mAとそれほど変わらないわけで、実際にバッテリーを繋いだときの「もち」は感覚的に2倍違うかといった程度だった。スリープモードが実装されて、ほとんどの時間Deep Sleepモードで待機するデータ送信系のアプリなどであれば、ボタン電池で数ヶ月や一年行けるのかもしれない。

Argonの消費電流

あまり気にする人はいないと思うが、Argonの消費電流も一応測ってみた。ArgonはXenonに加えてESP32が入っているので、XenonとESP8266を足し合わせたような特性になるのだろうと予想したが、まさにその通り。起動直後からのArgonの電流を示すグラフ(上)と、その一部(約3秒分)を拡大したグラフ(下)を示す。

f:id:tomoto335:20190105074753p:plain

f:id:tomoto335:20190105074756p:plain

  • アイドル状態で約40mA。Xenonの17mA + ESP8266の20mAに非常に近い。
  • 約100msごとに何かやっていて*1、これが約110mA。これもXenonの17mA+ESP8266の90mAに非常に近い。
  • WiFi通信に概ね>300mA食っている感じ?ESP8266の測定結果よりかなり大きいが、WiFIのスペックとがESP32とESP8266で違うからかな?

では、次回こそは体験レポ書きます。

*1:これは筆者のアプリケーションではなくシステムのバックグラウンドプロセスで、先のESP8266のグラフのスパイク周期と一致しているのは単なる偶然と考えられる。