カテゴリー
ESP8266+ESP32+RISC-V

乾電池で連続340日間動作するESP8266搭載ワイヤレスセンサ

乾電池による節電動作を行いつつ、現在の温度の遠隔監視や滑らかなグラフ曲線を行う方法の一例として、センサ値が変化したときだけ送信する方法を紹介します。

単3アルカリ電池3本にて、Wi-FiモジュールESP-WROOM-02によるワイヤレスセンサの長期動作実験を行い、340日(相当)の動作検証を行いました。
 
ハードウェアはESP-WROOM-02へ温湿度センサモジュールAE-HDC1000(秋月電子通商・販売終了)をI2C接続し、電源にはレギュレータXC6202P332(TOREX)および合計2500μFの低ESRコンデンサを使用した。電池には単3電池の約半分の容量である単4アルカリ電池3本を使用。
 
 
実験では、単3電池の半分の容量に相当する単4電池を使用し、連続170日間の動作を確認しました。
また単4の方が内部インピーダンスが高い点も考慮すると、単3だと1年を超える可能性もあります。
まずは、この実験に活用したクラウドサービスの紹介をさせていただきます。実験中の測定結果をクラウドサービスAmbientへ送信することで、スマホやパソコンなどで簡単にグラフ表示することができます。意外と手間のかかるデータの蓄積もAmbientに任すことが出来る点も大きな利点です。公開チャネルにすることで、実験に対する信憑性についても、向上するかもしれません。
下図は、実験終了時(2017年10月2日)の様子です。
 
 

長期間動作のポイント

長期間動作に欠かせないのは、(1)ワイヤレスモジュール動作時間の抑制と、(2)センサなどの間欠駆動、(3)電源の高効率化です。
本ブログでは、それぞれについて簡単に説明します。

温度が変化した時だけ送信する

ワイヤレスモジュールの動作時間を短くするために、温度が変化した時にだけ送信を行います。下図は、横軸に送信間隔(10分)、縦軸に温度変化(%)をプロットした散布図です。
10分間隔で温度を確認し、温度の変化率が1%以上となった時に、送信を行っていることが分かります。360分(6時間)以上経過したときは、温度変化に関わらず送信を行います。
温度の確認と送信以外の期間は、ディープスリープモードで待機します。
 
ESP-WROOM-02用のスケッチ(最新・改良中):
https://github.com/bokunimowakaru/esp/tree/master/2_example/example09m_hum
 
今回の測定に使用したスケッチ(2016/11/12):

センサ等の回路を間欠駆動

ESP-WROOM-02のディープスリープ中は、LEDや温湿度センサへの電源供給も止めて、節電しました。本センサの消費電流は0.2mA程度と低いのですが、待機電流で0.2mAというのは乾電池駆動にとっては、とても大きな電流です。
例えば、2000mAhの電池で1年間もたせるには平均0.23mA以下にする必要があるので、センサの待機電流に0.2mAも要してしまうことは許されません。
そこで、センサをスリープモードにするか、電源を切って節電を行います。ここではGPIO 13の出力をセンサおよびLED用の電源に使用し、間欠駆動させました。

電源レギュレータ XC6202P332による超低待機電力化

電源レギュレータの待機電力にも注意が必要です。500mA以上の高出力に対応したレギュレータや、古いレギュレータの中には、待機電流が1mA以上のものがあります。前述のとおり、待機電流1mAというのは、乾電池駆動のワイヤレスセンサには、全く受け入れられない大電流です。
今回、使用したTOREX製の電源レギュレータXC6202P332の待機電流は、0.01mA(10μA)で、実力的には6μA程度しかありません。これなら、乾電池での長期動作に使うことが可能です。
一方、このレギュレータの最大出力は150mAです。ESPモジュールの消費電流80mAについては、十分に供給することができるものの、ESPモジュールのスリープ復帰時にレギュレータ内の電流制限回路が作動してしまいます。そこで、レギュレータの出力側のコンデンサを1000μFに変更しました。これで、単3アルカリ乾電池の終止電圧まで安定したスリープ復帰が行えます。
ところが、半年前の検証で、単4アルカリ乾電池だと、電池を使い切る前に(電池の内部インピーダンスによる)電圧降下でスリープ復帰に失敗することが判明しました。今回は、コンデンサの容量を2倍以上の2500μFにすることで、終止電圧まで動作できるように対策しました。
なお、容量の大きなコンデンサの中にはリーク電流の大きなものもあります。かえって寿命が短くなることもあるので、注意してください。とはいえ、コンデンサのデータシートを見てもリーク電流は書かれていないことが多く、また書かれていたとしても実力よりも大幅に大きい値が示されています。製造や印加電圧などの条件によって偏差が大きいことが予想されるので、実測してから使うのが良いでしょう。一例として、3μA未満のものを選別すると良いでしょう。
 

実験結果

実験では単4アルカリ乾電池を使用しました。前述のとおり単3の約半分の容量なので、実験期間を短縮することが出来ます。下図は170日間の動きです。
6月の中旬に大きな電圧低下が見られます。これまでも長期間の試験では似たような現象が生じていましたが、原因は分かっていません。乾電池を直列接続した場合の他の電池との相互作用ではないか、あるいは特定の電圧でESPモジュール側の消費電流が増大するのではないか、何らかの一過性の化学変化が発生しているのではないか、などが考えられますが、未確認です。
 
単3電池の半分の容量である単4アルカリ電池で、2017/4/15~2017/10/2の170日間、動作した。これは単3で340日間に相当する。
 
 
 
下図は、温度が1%以上変化した時の測定間隔を横軸に、頻度を縦軸に示したヒストグラムです。10分以内が1サンプルしか無く、最低送信間隔は20分くらいで良いことが分かりました。
 
 
測定間隔50分を超えると、急速に送信した頻度(サンプル数)が下がりますが、100分を超えてからは頻度の変化が横ばいになります。100分以上の区間の累積頻度の割合は全体の47%であり、また平均測定間隔は140分でした。
以上の通り、本方式によって平均送信間隔を10倍以上に伸ばせることが分かりました。
 
ところで、本方式では、温度変化しか見ていません。温度が一定で、湿度だけが変化すると、温湿度センサの測定としては不適切です。そこで、湿度の変化率を確認してみました。下図では、温度が1%以上、変化したときに測定したサンプルを用い、サンプルの半数(50%)が湿度変化率1%、大半(80%)が湿度変化率2%以内となっていることが分かりました。人間にとって、湿度変化は、温度変化に対して何倍も鈍感です。その点も考慮すれば、湿度に変化があるときは、概ね温度変化をともなうと言ってよいでしょう。
 
 
 

今後の実験予定

今回は惜しくも目標に到達されることが出来ませんでした。実験を行った時期としても、電池への負担の少ない春季~夏季にかけての実験でした。今回、得られた知見から、次は単3アルカリ電池で実時間1年の試験を行いたいと考えています。次回の試験に向けて、以下のパラメータ等を変更する予定です。
  • 最小測定間隔=20分 (今回は10分)
  • 測定間隔調整=20分/30分/60分の自動切り替え
    (前回の送信から60分以上経過したら30分間隔、90分以上で60分間隔)
  • 閾値      =0.3℃ (今回は1%、平均0.28℃に相当)
  • 電源      =単3アルカリ乾電池×3本 (今回は単4)
  • コンデンサ   = 1500μF (今回は2500μF)
  • 温湿度センサ =検討中 (今回はHDC1000だったが、販売終了のため)
  • ESPモジュール=ESP-WROOM-02 (ESP32では1年動作の目途が立たないため)
  • その他、電源配線の半田付けなどによる接触抵抗の低減を行う予定。
最小測定間隔を広げた理由は、ESPモジュールの起動時の消費エネルギーの削減です。前述のとおり、実測による平均送信間隔が140分(平均換算34μA)とESPモジュール待機電流(20μA)、レギュレータ待機電流(6μA)、コンデンサリーク電流(3μA)、電圧測定用の分圧抵抗(20μA)から、合計の平均電流は83μAしかありません。目標の230μAに対して十分なマージンがありました。
この齟齬の原因は起動時の過渡期に発生しているものと考え、温湿度測定のみの起動頻度を減らすことにしました。

むすび

温度が変化した時にだけ送信を行う手法を用いることで、平均送信間隔140分、単3電池で340日相当の長時間動作が行えることが分かりました。引き続き、1年・365日動作の実現に向けて取り組む予定です。
 
ボクにもわかるESPモジュール
https://bokunimo.net/blog/category/esp/
 
by ボクにもわかる電子工作
https://bokunimo.net/
 

 - 
Chinese (Simplified)
 - 
zh-CN
Chinese (Traditional)
 - 
zh-TW
English
 - 
en
French
 - 
fr
German
 - 
de
Italian
 - 
it
Japanese
 - 
ja
Korean
 - 
ko
Russian
 - 
ru
Spanish
 - 
es