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

超シンプル回路!乾電池で295日間動作するESP32-WROOM-32

Espressif製Wi-FiモジュールESP32-WROOM-32を使い、シンプルな超簡易的周辺回路で動作する「IoTセンサの実験」を行ったところ、295日間(9.7か月)の動作が確認できました。

実証結果

下図は、モノタロウ製の単3アルカリ乾電池2本をESP32-WROOM-32モジュールへ直結し、送信間隔60分で動かしたときの、乾電池2本分の電圧の推移です。295日(9.7か月)にわたって動作し続けました。

単3アルカリ乾電池2本をESP32モジュールへ直結することで、295日(9.7か月)の動作(送信間隔60分)が行えた。縦軸が電池電圧、横軸が経過月数。

上図の横軸の先頭「12/29」は、実験の開始日2017年12月29日を示します。横軸の主目盛の間隔は1か月、補助目盛は1週間です。
3月末までは徐々に電圧が下がり、4~5月は2.8V付近を維持します。その後、ふたたび徐々に下がり、2.65Vで停止しました。

3月末の1週間ほどの期間には、2.8V前後を約0.03Vの変動を繰り返しています。この期間は、ESP32-WROOM-32モジュール内のレギュレータが2つの動作状態をもっており、2.8Vで切り替わるものと考えられます。 例えば、2.8V以下でLDOがバイパスされる機能が搭載されていると、このような動作になるでしょう。

超シンプル回路の背景

この実験を行った背景を説明します。 (興味の無い方は、次節の「実験方法」へ進んでください)

ESP32-WROOM-32モジュールのディープスリープ時の待機電力は、旧モデルESP-WROOM-02の60μAに対して20μAと低い点、プロセッサの高速化により処理時間を短く出来る点などから、旧モデルと同等以上の動作期間が実現できると言われています。
しかし、実使用状態では、起動時の突入電流の大きさから、旧モデルの半分以下の期間しか動作しないことが多くありました。

突入電流が生じている状態で適切に起動させるには、500mA以上の供給能力がある電源レギュレータと、大容量の低ESRコンデンサが必要ですが、こういった部品の多くは、待機電流が大きく、また電圧降下により電池の終止電圧を高めてしまいます。

下記は、 村田製LXDC55を搭載した秋月電子通商製のAE-LXDC55-3.3Vを使用したときの実験結果の一例です。

待機電流は、製作段階で確認することができます。しかし、電池の消耗とともにESP32モジュールが起動しなくなり、電池を使い切ることなく停止してしまうので、製作段階で確認した待機電流から電池寿命を試算しても、期待通りの結果が得られません。
そこで、「どうせ電池を使いきれないのであれば」と、 割り切った回路が、「直列2本の乾電池を直結するシンプル回路」です。

ところで、かつて(2016年12月時点)のESP32-WROOM-32のデータシートには、乾電池2本直結による動作の可能性が示されていました(電源電圧の入力範囲が2.2V~3.6Vとなっていた)。
しかし、実測では2.7Vを下回ると動作しなくなるので、実際に乾電池2本直結で動かした例は見当たりませんでした。
さらに、2017年9月には、データシート上の動作電圧も2.7V~3.6Vに訂正され、乾電池2本の直結動作が難しいことが明らかになりました。多くの乾電池駆動の機器は、乾電池1本あたり1V前後まで動作します。1本あたり1.35Vまでしか動作しないESP32-WROOM-32は、電池を使い切らない状態で停止してしまいます。

始めから無駄だと分かっている実験
それを行うのは、良いアイデアが思いつかないボクだけかも

電池の開放電圧が2.9Vのときは起動するが、2.7V以下だと起動に失敗し、リセット処理が繰り返される様子

このような背景で実験に着手しました。 電源回路を省略することで、待機電力の大幅な削減と、電圧降下の抑制効果が図れます。 その結果として、一般的なレギュレータ(秋月などで手軽に手に入るレギュレータ)を使用するよりも、長寿命化することができました。

実験方法

実験に使用したESP32-WROOM-32は、秋月電子通商製のDIP化キットAE-ESP-WROOM-32です。

単3乾電池2本用の電池ボックスの電源コード(赤)をESP32-WROOM-32の3V3へ、電源コード(黒)をGNDへ接続し、低ESRのコンデンサ1000μFをこれらの端子へ並列に挿入しました。

また、電圧モニタ用に、電源端子を150kΩの抵抗2個で1/2に分圧して、IO34へ入力しました。

製作したプログラムは下記からダウンロード出来ます。

製作したプログラム: https://github.com/bokunimowakaru/esp/blob/master/2_example/example36c_le/

プログラム12行目~15行目を①手持ちのWi-Fiアクセスポイント、②Ambientで得たIDとライトキーへ変更し、③19行目の「#define SLEEP_P」を60分(60*60*1000000)に書き換えてから、ESP32-WROOM-32へ書き込んでください。分圧比は考慮されていませんので、考慮したい場合は、変数adcに2を乗算してください。

実験中の電圧の推移は、Ambientへ送信して蓄積することにより、下図のようなグラフで確認することが出来ます。外出中もスマホで確認が出来て、便利です。

また、UDPのパケットをモニターすることで、電池切れを速やかに検出するこも出来ます。

下記のスクリプトの「DEVS=」内にある「adcnv_1」の数字は、電池切れの判定時間(分)です。180を設定しておけば、電池が切れてから約3時間以内に検出することが出来ます。 また、メールで通知を行うために、muttをインストールし、「MAILTO=」にメールアドレスを入力してください。

電池切れを検出し、メールを送信するスクリプト: https://github.com/bokunimowakaru/esp/blob/master/tools/udp_alive_mon.sh

GMailで送信するためのインストール・設定用スクリプト: https://github.com/bokunimowakaru/esp/blob/master/tools/gmail_setup.sh

  ESP-WROOM-02なみの電池寿命を達成

旧モデルのESP-WROOM-02では、単3アルカリ乾電池3本(送信間隔30分)で、1年間の動作が可能であることが分かっていました。

ESP-WROOM-02・単3アルカリ乾電池3本で1年間
https://bokunimo.net/blog/esp/39/

今回は、単3アルカリ乾電池2本なので、8か月(12か月×2本÷3本)以上の動作が出来れば、ESP-WROOM-02なみと言えるでしょう。ただし、ESP-WROOM-02の実験に比べて、送信間隔を2倍の60分にしています。

そこで、これまでの実験の結果を試算式の係数へフィードバックし、送信間隔が30分のESP32-WROOM-32を単3アルカリ乾電池2本で動作させた場合の動作期間を試算してみたところ、約9か月(3本で13か月相当)となることが分かりました。
以上から、ESP-WROOM-02なみの長時間動作を達成したとみなしました。 (引き続き、検証を行ってゆく予定です。)

実験を行うときの注意点(実験を行うときは必ずご覧ください)

今回の回路には、電源の保護回路が入っていません。例えば、ブレッドボード上やモジュール内で電源がショートしてしまった場合、発熱や発火の恐れがあります。少なくとも、以下の点に注意してください。

  1. ポリカーボネート製のケースなどに入れること
    ※燃えやすいプラスチックやレンジ用の耐熱容器は危険なので使用しない、もしくは発火しても安全な場所に設置する
  2. 周囲に燃えやすいものが無く、安定した場所に設置すること
  3. 部品やコードが外れないように耐熱テープ(ポリイミド)などで固定すること
  4. ブレッドボードや電池ボックスを両面テープやネジでケースへ固定すること
    ※機器が落下したときなどに外れないように
  5. 動作(送信)しなくなったら、すぐに電池を外すこと
    ※電池が減って、送信できなくなると、回路に電流が流れ続け、発熱します
    ※電池には残量が残っているので、発熱量が大きい点に注意してください
  6. 突入電流によってコンデンサの上面が破裂する場合があることを想定しておくこと
    ※ケースに開口穴を設ける、許容電流の高いコンデンサを選定するなど
  7. 異常が発覚したときに、速やかに電池を外せる状態にしておくこと

機器が発火した場合を想定し、発火しても燃え広がらない対策を、必ず、行ってください。

なお、製品として販売するような場合は、保護回路が必要です。 少なくともリセッタブル・ヒューズを使用し、内部発熱や発火を防止してください。

by ボクにもわかる電子工作
https://bokunimo.net/

超シンプル回路!乾電池で295日間動作するESP32-WROOM-32」への5件の返信

こんにちは!
最近電子工作にハマってESP32を知りました。
同じく乾電池を電源として動作させたいなーと思い、こちらの記事にたどり着きました!
素人なので、明後日の方向な事言ってたらすいません・・・

確か以前、TPS61020の昇圧DCDCコンバーターを使った実験を行ってらっしゃったかと思います。
そこでふと他に無いかと検索していたら、ROHMさんが開発したBU33UV7NUXという乾電池に特化した電源ICがありました。
素人なので詳しい事はわかりませんが、これを使うともう少し長く持つのかな?
と疑問に思いました。
あとリセット回路も内蔵されているそうなので安全?そうでした。
どう・・・なんでしょうか?(笑)

ブログいつも楽しく見てます!

コメントありがとうございます。

また過去のTPS61020の記事についても、覚えていただいていたようで、嬉しく思います。
https://bokunimo.net/blog/esp/28/

BU33UV7NUですが、データシートを見た感じでは、MODE=H、乾電池2本直列で、使えそうです。寿命も期待できます。
ただ、ESP32の起動時の応答特性によっては、上手く起動できないかもしれないです。とくに電池が減ってきた時は、多くの電流を必要とします。
実機での検証が重要だと思います。

返信ありがとうございます!

> 起動時の応答特性
なるほど・・・
ハードウェアの世界にはいろいろと考慮すべき点が多いのですね!勉強になります!
私はWEBのエンジニアなので、ハードウェアはからっきしで、ESP32の前はRPi(RaspberryPi Zero)で実験をしてました。
が、RPiは消費電力が大きすぎて乾電池では厳しいので電源が確保できるケースでないと使えないなぁという印象でした。
ただ、Pythonが使えるってのが私的にはいいんですが(笑)

話がそれましたが、BU33UV7NUを買って実機でトライしてみようと思います!

コメントは受け付けていません。

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