定期的にBLEでセンサーと通信しそのデータをLoRaで送信するデバイスを屋外に設置したい。 雨や直射日光はかからないものの、防塵防水ケース内に収められるデバイスを想定しています。 電池で駆動させようとしており、それにあたってどんな電池を使うべきか考えてみました。
モジュール選定
その前に、デバイス内で使うBLEモジュールとLoRaモジュールを選定します。 各モジュールによって動作電圧が変わるため、これを決めないと電池も決められない。
BLEモジュール
BLEモジュール、というかこれでLoRaモジュールも操作するのでマイコンも込みです。 ESP32系かnRF系で選ぶ予定で、比較表を作るとこちらのとおり。
| ESP32-C3 | ESP32-H2 | nRF52840 | nRF54L15 | |
|---|---|---|---|---|
| CPU | RISC-V 160 MHz | RISC-V 96 MHz | Cortex-M4F 64 MHz | Cortex-M33 128MHz |
| RAM | 400 KB | 256 KB | 256 KB | 256 KB |
| Flash | 4 MB | 4 MB | 1 MB | 1.5 MB |
| 動作電圧 | 3.0 ~ 3.6 V | 2.7 ~ 3.6 V | 1.7 ~ 5.5 V | 1.7 ~ 3.6 V |
| 最大電流 | 345mA@3V3 (Wi-Fi) | 112mA@3V3 (BLE) | 16.4mA@3V (BLE) | 9.8mA@3V (BLE) |
| DeepSleep1 | 5uA | 7uA | 2.35uA | 3.0 uA |
| モジュール | ESP32-C3-WROOM-02@440円 | ESP32-H2-MINI-1@350円 | XIAO nRF52840@1780円 | XIAO nRF54L15@1800円 |
ペリフェラルはどれもUART/I2C/SPI/ADCなどを備えています。 暗号化のハードウェアアクセラレーションなどもだいたい同じなのでこの辺は割愛。
ESP32-C3-WROOM-02はBLEだけでなくWi-Fiも積んでいます。 そのためかデータシートには最大電流の値はWi-Fi送信時のデータしか記載されておらず、BLEだとどうなるかは不明です。 Wi-Fiの場合よりは低くなるとは思いますが……隣のESP32-H2-MINI-1を見ても112mAなのはなかなか大きい。 ほぼDeepSleepし定期的に起きてBLEで通信することを想定しており、常時この電流を消費するわけではありませんが、これに耐えられる電池を選ぶ必要があります2。
そして、ESP32系は動作電圧も厳しい。 電池の電圧が初期電圧と終止電圧を含めてこの範囲に収まるものを選ぶか、収まらないなら別途DC/DC回路も必要になることでしょう。
その点、nRF系は動作電圧が広く消費電流も少なくて良い。 ただし、これはあくまでチップ単体の話であり、ここで想定したXIAOボードでは5Vまたはリチウムイオン電池利用として3.7V程度の入力を想定していそうです。 それ以下の電圧入力もできるかも知れない……ですが、この辺は使うなら回路図を確認しないといけません。 また、XIAOボードよりも安く、ほぼnRFチップ単体しか載っていないRAYTAC社のモジュールもありますが、これはこれで使ったことがないので周辺回路や書き込みのこと調査してから使い始める必要があります。
個人的に一番使い慣れているのはESP32-C3ですが、いやでも電源がなぁ……と考えるとままなりません(SNSWHR)。
LoRaモジュール
次にLoRaモジュールの選定です。 が、実はもう決まっており 802.11 LRとLoRaとBLE Coded PHYを試す で使った E220-900T22S(JP)モジュールを利用します。
一応、電源に関するデータをまとめておくと下記のとおり。
| E220-900T22S(JP) | |
|---|---|
| 動作電圧 | 3.1 ~ 5.5 V(通常時) 2.2 ~ 5.5 V(低電圧動作モード有効) |
| 最大電流 | 43mA@3V3 |
| DeepSleep | 2.5uA |
nRF系の最大電流を見たあとだと消費電流が激しいな、と思ってしまいます。 いや、昔のLED2個分くらいの電流で数km届く電波を出してくれることを考えたらすごいことなんですが……。
なお、「低電圧動作モード」は古いファームウェアだと使えないようです。 手元にあるのは初期のモジュールのため、おそらく使えません。 ファームウェア更新用の手順とバイナリは公開されているので、更新しようと思えばできそうです3。
また、このモジュールには内蔵LDOの3.3V出力端子が外部に出ており、100mA程度なら外部機器に供給して良いとのこと。 今回の場合だと、5V程度をE220-900T22S(JP)に供給して、そのLDO出力をnRF54L15に供給する、といった使い方は考えられそうです。
電源
そしてようやく電池の話。 が、電池電圧がモジュールの動作電圧に合わない場合は何らかのDC/DC回路を使うことになるので、電池単体とDC/DCの話で分けておきます。
電池
電池は入手性が良く、比較的安全で、安価なもの種類の電池を選んで特性をまとめていきます。 特性は電池のブランドによっても変わるため、代表的なものから控えめな値を採用しました。 電力量も放電電流によって左右されますが、この辺はざっくりです。 放電電流の値についてもざっくり。 あくまで今回の用途における比較に使えればOKくらいとしてください。
それを踏まえたうえで、まずは充電池(二次電池)の比較です。
| リン酸鉄リチウムイオン充電池 (18650セル) | エネループ(単3) | ニッケル亜鉛充電池(単3) | |
|---|---|---|---|
| 公称電圧 | 3.2 V | 1.2 V x2=2.4V, x3=3.6V | 1.6 V x2=3.2V, x3=4.8V |
| 初期電圧 | 3.65 V | 1.4 V x2=2.8V, x3=4.2V | 1.9 V x2=3.8V, x3=5.7V |
| 終止電圧 | 2.5 V | 1.0 V x2=2.0V, x3=3.0V | 1.3 V x2=2.6V, x3=3.9V |
| パルス放電電流 | 数A | 数A | 数A |
| 連続放電電流 | 数A | 数A | 数A |
| 電力量 | 5.76 Wh | 2.4 Wh | 1.92Wh |
| 動作温度 | -20 ~ 45℃ | -20 ~ 50℃ | -10 ~ 50℃ |
| 1本あたり価格 | 700円 | 350円 | 750円 |
実際に使うにあたっては充電器、またデバイス側に保護回路も必要ですが、ここでは割愛。 続いて乾電池(一次電池)。
| アルカリ乾電池 (単3) | リチウム乾電池 (単3) | CR2032 | CR123A4 | 塩化チオニルリチウム電池 (ER34615) | |
|---|---|---|---|---|---|
| 公称電圧 | 1.5V x2=3.0V, x3=4.5V | 1.5V x2=3V, x3=4.5V | 3V | 3V | 3.6V |
| 初期電圧 | 1.65V x2=3.3V, x3=4.95V | 1.8V x2=3.6V, x3=5.4V | 3.2V | 3.2V | 3.65V |
| 終止電圧 | 0.9V x2=1.8V, x3=2.7V | 0.9V x2=1.8V, x3=2.7V | 2.0V | 2.0V | 3.0V |
| パルス放電電流 | 数百mA | 数A | 数mA | 数A | 数十mA |
| 連続放電電流 | 数百mA | 数A | 0.2mA | 20mA | 数mA |
| 電力量 | 3Wh | 4.5Wh | 0.675 Wh | 4.5Wh | 68.4Wh |
| 動作温度 | 5 ~ 45℃ | -40 ~ 60℃ | -30 ~ 85℃ | -40 ~ 70℃ | -40 ~ 85℃ |
| 1本あたり価格 | 30 ~ 100円 | 400円 | 40 ~ 250円 | 300 ~ 500円 | 1000 ~ 2000円 |
| Wh単価 | 約10 ~ 33円 | 約88円 | 約59 ~ 370円 | 約67 ~ 111円 | 約15 ~ 30円 |
リン酸鉄リチウムイオン充電池やエネループ、ニッケル亜鉛充電池、アルカリ乾電池は動作温度に不安があります。 南極や赤道直下で使うわけではありませんが、もう少し余裕が欲しい。 リチウム乾電池は悪くはありませんが、電圧が合わないので他の選択肢があるならそちらを選びたい。 CR2032は放電電流的に今回の用途では厳しそうです。
塩化チオニルリチウム電池は扱いやすい電圧でWh単価も安く良さそうに見えるのですが、万が一内部の材料が漏れ出た場合に有毒ガスが発生するというのが不安。 使用後に自治体が有害ゴミとして回収してくれるかどうかも分かりません。 回収してもらえたとしても、実は他の乾電池と誤解されていて、その後の処理では特有のリスクがある電池として扱われないのでは?と心配です。 使用後に正しく処理してもらえる回収ルートがあるなら別ですが、個人の趣味プロジェクトで扱うには難があると思いました。
ということで、消去法でCR123Aが良さそうです。 電圧や放電電流、動作温度に関しては許容範囲。 容量やWh単価もまぁ良いでしょう。 安全性に関しては、何をやっても問題ないか?充電したりバーナーで炙ったりしても?というのはさておき、正しい使い方を十分認識しそれに沿えば問題なさそうです。 廃棄に関しても、カメラやスマートロック用途として広く流通している電池のため、自治体にも回収してもらえるでしょう。
なお、CR123Aと似た電池としてCR2があります。 CR123Aと比べて小型なぶん容量も小さいですが、価格は小さくなっておらず今回の比較からは外しました。 すでにCR2が手元にあったり、数mmでも小型にしたいならCR2も使えそうです。
DC/DC
CR123Aの電圧を考えると、ESP32系のモジュールでは電池容量を最後まで使いきれません。 また、やっぱりリチウム乾電池を使いたいとなった場合などでも使えるようにDC/DCを考えます。
DC/DCの要件としては、チップ自体の自己消費電流が少ないこと。 また、今回しか使う予定がないのでモジュールになっていると嬉しい。 秋月電子で入手できるものとしては下記のモジュールが良さそうです。
TPS63802使用 昇降圧電源モジュールキット: キット一般 秋月電子通商-電子部品・ネット通販
https://akizukidenshi.com/catalog/g/g115557/
現時点の価格は780円。 入力は1.8 ~ 5.5V、TPS63802自体の静止電流は11uA。 動作モードとして強制PWMモードとパワーセーブモードがあり、パワーセーブモードのほうが消費電流が少ない。 秋月電子のモジュールとしてはデフォルトで強制PWMモードだが、ジャンパによりパワーセーブモードにできる。 ただし、この状態だとVIN-GND間にR1/160kの抵抗が入っており、VIN=3.2Vとすれば20uAが無駄に消費される。 気になるなら外したほうが良いでしょう。
自己消費電流が小さいDC/DCを探したらたまたま昇降圧タイプだったので、乾電池を数本直列にして使おうとしたときもいけそうですね。 降圧ならLDOを使うという手もあり、この辺は使えそうです。
ESP32の電源LDOにRT9080を使う #IoT - Qiita
https://qiita.com/yugulab/items/275b66731f2e01e16552
1個30円。 ただ、もちろんLDOなので入力電圧/出力電圧の差だけエネルギーは捨てられます。 DC/DCの価格と電池の価格のどちらを重視するか、充電池を使い続ける前提でランニングコストをほぼ無視できるならこちらのほうが良いかも知れません。
まとめ
電池はCR123Aが良いと思いました。 BLEモジュールにnRF系を使うなら電源入力に直結もできそうです。 ESP32系を使う場合はDC/DCモジュールを使いましょう。
いまの気持ちとしては、ESP32-C3とDC/DCを使おうかな……という感じです。
消費電流は大きいですがこちらのほうが慣れている。 電池が切れたときも、DC/DCのENだけ気を付ければ良く、ESP32側でのBrownoutに気を使わなくて良い。 電池電圧を測定する際も、低圧側なのでADCに直接入力できる。 抵抗で分圧するが、常にGNDに電流が流れるのを嫌ってGPIOで制御するなど考えなくて良い。
稼働時間も、相当悲観的に見積もって40日は持つ。 楽観的に見積もれば半年くらいは持ちます。 そしてこれは5分に1回起きる場合であり、もっと稼働時間を伸ばしたければ別に10分に1回にしてもまぁ良いです。
owari.
Footnotes
タイマーで復帰可能なレベルのDeepSleepを想定しています。 ↩
大容量のコンデンサで補う手段もありますが、これはこれでリーク電流による消費に配慮しないといけない。 ↩
専用の書き込み器を使うようですが、その辺のシリアル変換モジュールでもいけないですかね。こんな感じで。sovol-dryer-firmware/README.md at main · rcambrj/sovol-dryer-firmware ↩
CR123Aと同じサイズの充電池のことも「CR123A」と表記されることがあるようですが、ここで述べているのは一次電池です。 ↩
