概要
通信モジュールの消費電流を計測し、回路の構想を練った。
背景と目的
前回、Sigfoxの通信モジュールの動作を確認した。今回は、通信モジュールの消費電流を計測し、全体の回路の構想・設計をする。
詳細
1.Sigfox Shield for Arduino
1.1 通信中
モジュールのGNDラインに0.5Ωの抵抗を入れ、電圧をオシロスコープで監視。送信中は、約120mV程度の電圧が立ったので、およそ240mA程度が流れていることがわかる。なお、送信していないときは、約10~20mAといったところ。
1.2 スリープ中
そもそも、スリープさせるにはどうすればいいのか?というのがわからない。 unabiz-arduino-masterライブラリのWisol.cppには、
#define CMD_XXX "AT***"
という制御コマンドが定義されているのだが、この中にスリープらしきものが見つからない。 なので、スリープというより電源供給を断ってしまおうと考えている。念のため、以下を確認。
- 3.3Vを供給しないで、モジュール動作を止めた状態にしたところ、およそ1.2mAが流れていた
- さらに5Vの供給をやめたところ、この1.2mAも流れなくなった
なので、レベルシフタ関連の回路部分が消費しているものと思われる。5V、3.3V両方を遮断できれば消費電流がぐっと抑えられる。
2.ESP-WROOM-32
2.1 通常動作中
今回はWi-FiやBluetoothを使用しない状態で、Sigfox ModuleとUART通信を行う程度。一応、その際の電流を測定してみた。ESP-WROOM-32 DevKitCなので、周辺回路がいろいろ電流を食っているが、80~100mA程度。 最大で120mAくらいを見ておけば十分ではないだろうか。
2.2 スリープ中
Web各所に電流を調べた結果が載っているのでそれらを参照すると、スリープ中は数~10数uAとのこと。
3.回路の構想
バッテリー駆動を考慮して、送信動作をしないとき(スリープ)に消費電力が十分小さくなるように、以下のような構成にする。
バッテリーは、ENELOOPの単3を4本直列として、4.8V。これを5V系とする。 ESP32のGPIOで、UnaShieldのGNDラインの導通をコントロールして、通信しないときはシステムをOFFしてしまうつもりだ。
- 1日に朝夕の2回送信
- 1回の送信動作中の消費電流は平均200mA程度で10秒程度
- スリープ中は、レギュレータの無負荷時電流が30uA、ESPのスリープ時電流を10uAとして全体で40uA
上記の条件から、平均電流は
(200mA * 10 / 60 / 60 [hour] * 2回 + 40uA) = 1.15mA
なので、1900mAh程度の単3のエネループだと、
1900mAh / 1.15mA / 24h = 68.8日
と2か月程度持つ計算。とはいえ、そんなに計算通りいかないだろうから、おおよそ1か月~2か月くらい持つと考えておく。それなりの頻度で、田んぼには行くはずなので、この程度のバッテリーの持ちでもとりあえずは大丈夫だろう。
まとめ
通信モジュールの消費電流を計測し、回路の構想を練ることができた。次回は、いよいよ実装をしたいと思う。