SORACOM LTE-Mボタン 消費電力の研究

# はじめに

2020/11/12に開催されたSORACOM UG Online #2にて発表したLTの内容になります。

[SORACOM LTE-M Button](https://soracom.jp/products/gadgets/)はIoTを手軽に試せるデバイスとして人気が高く、いろいろなところで使われているようです。

![products_soracom-lte-button-enterprise_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/e458f924-8aab-4585-c6a7-48f453282e8a.jpeg)

その魅力の一つは乾電池で動作することにあります。IoTでは電源が取れない場所で稼働することも多く、また仮に電源があっても繋いでいると手軽に持ち運びできません。
乾電池で動作するボタンはどんなところでも使うことができ、モデムもボタン自体で持っているため、場所を選ばずに簡単に使用することができます。
そこで気になるのが消費電力です。乾電池で動作すると言ってもすぐに電池切れを起こすようでは頻繁に電池交換が必要になってしまい、運用負荷が上がってしまいます。そうならないよう様々な工夫がされていると聞いていますが、実際のところどの程度の実力を持っているのか、知りたいところです。
そこで以下の３点を確認しました。

- 1回あたりどれだけ電力を使っているか？
- 使っていない時電力を消費しているか？
- 何回使えるのか？

## 1回あたりどれだけ電力を使っているか？

ボタンは待機時の消費電力を抑えるため、1回1回モデムの電源を入れて回線接続し直しています。そのため、1回ごとに送信に15秒ほど時間がかかっているのですが、その間程度の電力を消費しているのでしょうか？

今回も電力計には[PW3335](https://www.hioki.co.jp/jp/products/detail/?product_key=660)を使用しています。これにはオートレンジ積算という機能があり、待機時と使用時で電力が大きく変動するような場合であっても正確に電力が測定できます。ボタンの電力を測定するのにうってつけと言えます。

![autorange.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/462fd036-a9bc-0431-8c21-35eb3b68ccda.png)

測定された電力の波形は以下のようになります。

こちらはクラウド処理時間5秒とした場合の電力波形です。(Lambdaで5秒スリープして終了しています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/3cb1baef-4cc8-72ac-34ec-3e28a9dc4fcb.png)

状況を記載すると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/8f85068a-f44e-b63a-b1d0-ee08a518984e.png)

ここで注目したいのはオレンジ点灯している時間です。この時間はボタンからクラウドにデータを送信して、受信データを待っている時間です。処理時間5秒だとその時間だけ継続されます。

一方クラウド処理時間をほとんどなしになると以下のように、この期間はほとんどなくなります。(Lambdaでスリープせずに終了しています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/eea6a9c2-e474-1874-6a8f-f2a811d1f940.png)

この時間は約0.35W消費とかなり大きいので、できるだけ短くしたいところです。
処理時間0秒と、5秒の場合、どの程度時間に違いが出るのかを以下の表にまとめました。

| | 電流量(mAh) | | 電力量(mWh) | |
| :---: | :---: | :---: | :---: | :---: |
| | 処理0秒 | 処理5秒　| 処理0秒 |処理5秒 |
| 1回目 | 0.4726 | 0.6603 | 1.110 | 1.593 |
| 2回目 | 0.4752 | 0.6647 | 1.117 | 1.605 |
| 3回目 | 0.4752 | 0.6671 | 1.119 | 1.611 |
| 4回目 | 0.4744 | 0.6731 | 1.118 | 1.622 |
| 5回目 | 0.4754 | 0.6692 | 1.115 | 1.617 |
| 平均 | 0.4756 | 0.6669 | 1.116 | 1.610 |

消費電力量はおおよそ5割増しになっています。クラウドの処理1秒ごとに0.1mWh増える程度の影響ですね。
使用者側が調整できる部分はこの時間しかないので、ボタンをできるだけ長持ちさせたい場合はこの点に注意する必要があります。
ボタンとの組み合わせで一番使われるのは多分SORACOM Funk + AWS Lambdaの組み合わせだと思いますが、Lambdaは初回起動時やしばらく使われていなかった場合には起動に時間がかかりますので、その点も注意しましょう。
時間がかかる処理の場合は、Lambda内で実行するのではなくキューにメッセージを飛ばして後処理するか、FunkではなくFunnelを使ってAWS IoT経由でLambdaを使用するなど工夫することができます。(普通に使うのに比べて面倒になるので、電池をそこまで気にしなくていい場合にはやらなくてもいいと思いますが)

また、ちょっと面白いのが電力波形の最後の山です。緑点灯してちょっと経ったところでこの山が立ちます。緑点灯した時点でクラウド側の処理は終わっているので、その時点でモデムの電源を切ってしまっていいはずなのですが、なぜかその後消費電力が増えます。
これはおそらく回線を切断しているのでしょう。仮に切断処理をせずに終了すると、SORACOM上では1時間オンライン状態が継続されます。ボタンが回線を切断することにより、切断されたということが基地局やSORACOMに伝わり、オフライン状態に戻ります。行儀の良い動作をしていますね。

## 使っていない時電力を消費しているか？

ボタンにおいて一番大事なのが待機電力と考えています。
ボタンは基本的には待機状態であり、押されたり、接点をCloseにされて初めて動作するデバイスです。いわばイベントドリブンなデバイスですね。
待機時間が動作時間に比べ圧倒的に長いため、待機電力が大きいと使える回数が減ってしまう、極端な話1回も動作できずに電池切れてしまうかもしれません。

上で見たように、ボタン押されるまではモデムは動作しておらず、待機電力が低くなるよう工夫されていますが、ボタンの信号の待ち受けや、ボタン押した後は動作が終わるまで駆動していることから、ボタン押すまで内部に電源が入らない、という感じでもなさそうです。待機中も最小限の待ち受け処理はしていると見て良いでしょう。

また、Button Plus(接点入力付きボタン)で接点がCloseされている時に消費電力が増えることは、[公式で言及](https://soracom.jp/products/gadgets/button_plus/)されています。

> ボタン押し、もしくは Close を続けても、連続送信は行わず1回の操作として扱い、次の入力操作も受け付けません。再度送信をしたい場合は一度 Open にする必要があります。また、Close 状態を維持し続けた場合、その間の消費電力が増加します。通常時は Open になるようにシステム設計をしてください。

そうは言ってもButton Plusを使う場合は、無人の状態で使う状況がほとんどだと思われるため、どの程度の消費電力になるか知りたいところです。
以下の表に、それぞれの状態で測定した消費電力をまとめました。

| | 電流(mA) | 電力(mW) | 予想持続時間 |
| :---: | :---: | :---: | :---: |
| 通常待機中 | 0.0106 | 0.0108 | 10年以上 |
| ボタン押下中 | 0.1158 | 0.3383 | 1年程度 |
| 接点Close中 | 0.1150 | 0.3365 | 1年程度 |

まず通常待機中はほとんど消費しないですね。素晴らしいです。ちょっとだけ増えましたが、ノイズかな？と思われる程度です。このレベルであれば消費していないと言っても良いでしょう。
ボタンをずっと押していたり、接点をCloseしている間は、やはり多少増えますね。これは接点H側が大きめの抵抗で電源にプルアップされており、ボタン押したり接点をCloseするとその信号が接点L側と導通して電流が流れるのでしょう。とは言え、その電流もかなり小さめで、放っておくとすぐにでも電池切れてしまう、というものではなさそうです。これが気になる場合は、押しっぱなしの時には自動的にOpen状態に戻す外部の回路をつけるとよいですが、その外部回路の電源どうするのかという問題も出てきます。ボタンのハードウェアでClose状態で1分以上たったら内部的にはOpenになるようにしてもらうのが一番なんですが、いまさらハードウェア変えるのは難しいでしょうね。

## 何回使えるのか？

利用者側にとって一番気になるのは何回押せるのかだと思います。
ここまでの実験結果で、待機電力はほぼなし、1回あたり約0.475mAhを消費することがわかっています。
乾電池の容量は流す電流の大きさによって変わるので一概に言えないのですが、
[Panasonicの資料](https://jpn.faq.panasonic.com/app/answers/detail/a_id/29060/p/1846)によると100mAで約8.2時間 = 820mAhということのようです。電流が小さければもっと長持ちします。
単純に計算すると1700回程度ですね。だいたいこの程度の回数持つという予想されます。

1分に1回自動的にON/OFFして回数を実測してみました。付属の電池はそれなりに減っていたため、新品の電池に交換して実施しました。電池は[PanasonicのEVOLTA LR03(EJ)](https://panasonic.jp/battery/drycell/p-db/LR03EJ2S.html)です。

結果は**1946回**となりました。かなり長持ちですね。1日1回程度の動作であれば5年保つ計算です。電池や温度などの環境によって変動するとは言え、最低1000回くらいは使えるのではないでしょうか。条件がよければ2000回いけるかも。

最終的な電池1つあたりの電圧は1.171Vとなりました。割と低い電圧まで使えるようです。電池が不足するとボタンが赤点滅するのですが、その状態になっても何度か成功したので、厳密にこの電圧で切る、というわけでもなさそうです。途中までは普通に動作して、電力波形の山が高いところで赤点滅になるので、使う電流が低めだと成功し、高めだと失敗する、という状態と考えられます。

また、電池残量はボタンから報告されており、どの程度減っているのかの目安を知ることができます。以下の図のような減り方になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542185/2f27aa1f-8fda-b10d-fd14-e12201015b47.png)

| レベル | 回数 |
| :---: | :---: |
| 1 | 179 |
| 0.75 | 138 |
| 0.5 | 158 |
| 0.25 | 1471 |
| 合計 | 1946 |

見ての通り、かなり早い段階でレベルが0.25になり、そこから1000回以上押せる結果となりました。これは実運用上ちょっと困りますね。。実運用ではレベルが0.25になったら交換、ということになると思うので、まだ半分以上使える状態で交換することになってしまいます。
電池の種類や温度環境、配線抵抗、ボタンの個体差などによって変わるので、ある程度余裕はみているのだと思いますが、もうちょっと精度を上げて欲しいところではあります。（僕の持っているボタンと今回使った電池の相性でこうなる、という可能性もあります）

# おわりに

IoTを始めるのに最適なSORACOMのLTE-Mボタンですが、実運用されている事例がいくつも出ているようです。
実運用においては消費電力が気になるところですが、LTE-Mボタンは省電力性能が高く、特に待機電力は非常に優秀で、電源の無いところに置きっぱなしで動作させても長期間動作させられることがわかりました。
電池交換の負担が少ないのはいいですね。安心して使っていきましょう！