見出し画像

【IoT基礎】#06 「電源制御モジュール」をどう選ぶか?

電池駆動IoTデバイスを長期稼働させたい場合、必要な時間だけ電源供給する間欠運転が有用です。本記事では、間欠運転を実現するための部品を「電源制御モジュール」と定義し、電源制御モジュールの必要性と、自作IoTシステムに適した電源制御モジュールである「Wio Extension – RTC」についてまとめます。


背景と目的

このIoT基礎シリーズでは、IoTデバイスを自作する上で必要となる知識の全体像を知るとともに、自作する上で必要となる各要素に関し、どのような選択肢があり、どのように選べばいいのかを、私自身の経験をもとに整理しています。
これまで、
#00 はじめに
#01 IoTシステムの全体構成を知る
#02 「電源」をどう選ぶか?
#03 「電池」をどう選ぶか?
#04 「通信」をどう選ぶか?
#05 「マイコン」をどう選ぶか?
という記事を書きました。
電源/電池、通信、マイコンを組み合わすことで、最低限のIoTを実現できますが、特に電池駆動の場合、現場に設置したIoTシステムを長期稼働させたい、という課題があるのではないでしょうか。長期稼働には、必要な時間だけ電源供給する間欠運転が有用です。本記事では、間欠運転を実現する電源制御モジュールの必要性について整理します。

ここで、少し私自身の経験に触れます。2019年、私が電池駆動型IoTシステムを開発していた際、如何に長期稼働を実現するか、が最大の課題でした。ちょうどそのタイミングに、自作で使いやすい電源制御モジュール(=Wio Extension – RTC)が発売され、救われた経験があります。このモジュール無しには、電池駆動での長期稼働(1年以上)は不可でした。Wio Extension – RTCを使うメリットは何なのか、どのように接続するのか、など整理します。Wio Extension – RTC、めちゃくちゃおすすめです。

詳細

1. 電池駆動型IoTデバイスの課題は待機電力

電池駆動型IoTシステムを長期稼働させるためには、如何に消費電力量を低減させるかを、考える必要があります。この消費電力量[mWh]を深堀りすると、下記の模式図のように表されます。

グラフの横軸が時間、縦軸が消費電力[mW]であり、青色の線がIoTデバイスの消費電力の時間変化です。①が計測時の消費電力量②が送信時の消費電力量③が待機時の消費電力量です。消費電力量[mWh]は電力[mW]x時間[h]であり、グラフの面積が消費電力量[mWh]に相当します。

定期的にデータを送信するIoTシステムにおいて、1サイクルの消費電力量は①+②+③で表されます。私が扱うセンサーやマイコンの環境下では、①+②は10秒弱です。仮に①+②の時間が10秒とし、計測頻度が1時間=3600秒とすると、③の時間は3590秒となります。このように、計測や送信時間よりも、待機時間のほうが長いことが一般的であるため、待機電力を下げることが、長期稼働に極めて効果的です!!!

2. 待機電力をいかにゼロに近づけるか

問題は、待機電力をゼロに近づける方法です。低消費電力のマイコンを用い、かつsleepモードを用いることも有用なのですが、sleepモードを用いたとしても、Arduino系では数mA〜数10mAオーダーまでしか下げることができません。理想的にはμAオーダーまで下げたいところです。そこで有用となるのが電源管理モジュールであるWio Extension – RTCです!!!

再掲:Wio Extension – RTC

Wio Extension – RTCを、電池とマイコンの間に割り込ますと、
・マイコンへの電源を、任意時間OFFする
・電源OFF時の待機電流を、1μA以下に低減させる
・任意時間経過後、マイコンへの電源をONにする
を実現できます!!!本当に便利なモジュールです!!!

(2024/04/16追記) deepsleepモードを用いることで、0.1μA〜数10uAオーダーまで下げられるマイコンが出てきており、これを用いるのも選択肢の一つです。ただし、 deepsleepの場合、マイコンの省電力化が実現できる一方で、センサーに電源供給され続けるため、センサー側の待機電力を考慮する必要があります。

3. Wio Extension – RTCは、Arduino等にも接続できる

開発当初、私は、Wio Extension – RTCにWioという名前が付いていることから、Wio系マイコン専用かと思っていました。確かに、Wio Extension – RTCのネジ穴位置は、Wio系マイコン専用設計になっていますが、I2C接続できるマイコンであれば電源制御することが可能です。Arduino系マイコンにも、M5Stack系マイコンにも接続できます!

Wio Extension – RTCという名前がわかりにくいですよね。。

4. Wio Extension – RTCの接続方法

ここで、具体的なWio Extension – RTCの接続方法について図で示します。下図をご覧ください。

①は、電池をマイコンに直接接続したIoTデバイスの模式図です。この構成で待機電力を下げるには、限界があります。
②は、電池とマイコンの間にWio Extension – RTCを割り込ませた模式図です。これで、Wio Extension – RTCよりも右側で消費される待機電力をゼロにすることができます!!!

接続方法を補足すると、電池とWio Extension – RTCのUSBmicroB端子を接続し、Wio Extension – RTCのUSBtypeA端子とマイコンを接続します。また、マイコンとWio Extension – RTCをGroveケーブルで接続します。

5. Wio Extension – RTCのプログラム

Wio Extension – RTCのArduinoライブラリが公開されています。

主要部分のコードのみを記述すると下記の通りです。
簡単なコードで、待機電流1μA以下を実現できます!!!
もし、スリープ時にも記憶させたい変数がある場合、Wio Extension – RTCのEEPROMに、記憶させることもできます。便利ですね。

#include "WioRTC.h" // ライブラリ読込
#define BOOT_INTERVAL   (3600)  // スリープ時間[sec.]
WioRTC Rtc;
void setup(){
 
  // (中略)マイコンのsetupなど

  Wire.begin(); // I2Cの初期化
  Rtc.begin();  //Wio Extension – RTCの初期化

}

void loop(){
  uint8_t val;
  Rtc.EepromRead(0, &val, sizeof(val)); // Wio Extension – RTCのEEPROMを読込み
  val++;
  Rtc.EepromWrite(0, &val, sizeof(val)); // Wio Extension – RTCのEEPROMに書込み

  Rtc.SetWakeupPeriod(BOOT_INTERVAL); // スリープ時間定義
  Rtc.Shutdown(); // スリープ。これで1uA以下に!
  while (1) {}
}

まとめと今後の課題

電池駆動型IoTシステムを長期稼働させるには、待機電力をゼロに近づけることが必要であり、そのためには電源制御モジュールが有用であること、また自作IoTシステムで使いやすいWio Extension – RTCを紹介しました。

私は、このWio Extension – RTCがとても気に入っています。IoTシステム実運用上の一番のコストは電池交換工数であり、電池交換頻度を下げる電源制御モジュールの採用は極めて有用です。是非、自作IoTシステム構築の際、Wio Extension – RTCを活用してみてください。

Wio Extension – RTC以外の電源管理モジュールの存在を知らず、もしご存知の方がいらっしゃれば、情報共有頂くと嬉しいです。

次の記事では、センサー選びについてまとめます。


参考

・Wio Extension – RTCの使い方が、ソラコム公式ブログにまとまっています。大変わかりやすいです。

・Wio Extension – RTCは、下記から購入できます。

・Wio Extension – RTCのArduinoライブラリが公開されています。これを使えば簡単に待機電流1μA以下を実現できます。


この記事が気に入ったらサポートをしてみませんか?