IoT Express × TTGO Camera 玄関カメラで0.8fpsパラパラ漫画表示

M5Stackで0.4fpsの動画表示が出来たので、IoT Expressで試したところ2倍の0.8fps動画表示が出来ました。
紙芝居からパラパラ漫画へと進歩しました 。
表示部には、フルカラー有機ELディスプレイSSD1331を使用しました。

(参考)下図は前回の記事です。

概要

TTGO T-Cameraの映像をフォトフレーム端末へ転送する玄関カメラシステムです。
カメラ側は中国で2000円程度で売られています。
フォトフレーム端末側は、前回、M5Stackを使用しましたが、今回、ESP32マイコンボードとしてCQ出版社およびaitendoが販売しているIoT Expressに変更してみました。
詳細は、前回やそれ以前の記事をご覧ください。

前回からの変更点

フォトフレーム側のマイコンボードをCQ出版社のIoT Expressに変更し、ディスプレイに有機ELディスプレイSSD1331を接続しました。

プログラムは同じM5Stackとレポジトリのフォルダ「iot-photo_oled」へ収録しました。

フォトフレーム(GitHub):
https://github.com/bokunimowakaru/iot-photo/tree/master/iot-photo_oled

動作確認結果

QQVGAで再生してみたところ、2倍の0.8fpsで動作することが分かりました。

 HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 4000
Connection: close
loading….http END
4000 Bytes, 257ms, Done
Loading image '', 4000 bytes
HTTP time :290 ms
JPEG time :939 ms
Total time:1229 ms (0.814 f/s)

HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 3546
Connection: close
loading….http END
3546 Bytes, 256ms, Done
Loading image '', 3546 bytes
HTTP time :288 ms
JPEG time :939 ms
Total time:1227 ms (0.815 f/s)

HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 3200
Connection: close
loading….http END
3200 Bytes, 255ms, Done
Loading image '', 3200 bytes
HTTP time :288 ms
JPEG time :935 ms
Total time:1223 ms (0.818 f/s)

考察

QQVGAで0.8fpsを達成しましたが、QVGAでも0.7fpsでした。
HTTP処理部については、TCP接続部や応答遅延などが影響しており、JPEG処理部についてはデコード部ではなく、描画部が影響しているようです。

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

M5Stack×TTGO Camera 玄関カメラ用デモの高速化

M5Stackと、 中国で 約2000円で売られているTTGO T-Cameraを使って製作した、玄関カメラシステム用の画像転送速度を(少しだけ)高速化しました。

(参考)下図は前回の記事です。

前回の課題と今回の対策の概要

前回、Wi-Fi玄関カメラの製作方法について、紹介しましたが、撮影後、画像が転送されるまでの時間が長い(約5秒)という課題がありました。そこで、HTTP処理部を見直し、画像転送速度の高速化を図り、約0.4fpsの動画再生(といっても、ほとんど紙芝居)に対応しました。

動かし方

GitHubのソフトを更新しましたので、前回と同じようにダウンロードして下さい。人感センサ反応中(ずっと反応し続けている状態)に動画再生モードになります。

今回の対策内容

主にHTTP処理部の対策を行いました。以下に4月30日のコミットからの変更点を記します。

  • HTTP処理部の高速化
    • 受信バッファにRAMを使用(#define CAMERA_BUF_ENで切替可能)
    • 画像データの受信完了にHTTPヘッダ内のContent-Lengthを使用
  • 人感センサ反応中に繰り返し画像取得を実行(検知信号の受信で動画を開始、検知完了信号で動画を停止)
  • ピンポン音の追加(人感センサ検知時に「ピンポン」音)

動作確認結果

QVGA(320 x 240)の画像で、約0.4fpsの動画再生が行えるようになりました。再生中のログのようすを以下に示します。「Loading image ”」は取得データをRAMから取得したときに表示されます。

 HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 12000
Connection: close
loading…………http END
12000 Bytes, 271ms, Done
Loading image '', 12000 bytes
HTTP time :483 ms
JPEG time :1976 ms
Total time:2459 ms (0.407 f/s)

HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 12766
Connection: close
loading………….http END
12766 Bytes, 271ms, Done
Loading image '', 12766 bytes

HTTP time :482 ms
JPEG time :1979 ms
Total time:2461 ms (0.406 f/s)
HTTP://192.168.0.2/cam.jpg
Recieving…HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 11010
Connection: close
loading………..http END
11010 Bytes, 270ms, Done
Loading image '', 11010 bytes

HTTP time :476 ms
JPEG time :1970 ms
Total time:2446 ms (0.409 f/s)

より滑らかな動画に(プログラム変更なし)

HTTP処理に要する時間が0.5秒程度、JPEG処理(表示を含む)が2秒程度かかっています。

撮影解像度をQQVGA(var = framesize, val = 0)に落とすことで 、HTTP処理時間とJPEG処理時間の両方を短縮くすることができます。確認したところ、現状のプログラムのままで、0.8fpsの滑らかな表示にすることが出来ました。しかし、広角レンズを使用した場合、人物の顔などが分かりにくくなってしまうので、かえって実用的ではなくなります。

さらなる高速化を目指したい方へ

HTTP処理部については、都度、TCP接続を切断しています。接続したままにする、またはUDPを使用することで、より高速化が図れるでしょう。

JPEG処理部では、デコード処理と描画処理を行っています。それぞれの時間を計測したことはありませんが、Adafruitのライブラリを使って1ドットずつ描画コマンドをコールしている点が課題だと思います。直接、LCDへコマンドを送るようにすれば、高速化することが出来るでしょう。

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

IFTTTとの連携が出来なくなるWio Node

今日、IFTTTよりWio Nodeとの連携サービスが廃止になるとの連絡がありました。

Wio Nodeとの連携サービス(5/8まで)
https://ifttt.com/seeed_wio

下記のような連携も出来なくなります。

2019年5月8日にIFTTTとの連携サービスを終了する。
Wio Link Serverは、これまでどおり存続する。
IFTTT側の新しいCEOによるビジネスモデルの変革が原因で、互換性が保てない方向に進みつつある。

他のサービスへ変更するために、サービス期間を1週間、延長したとのことですが、簡単な連携サービスが無くなることは、とても残念です。

TTGO T-Camera+M5StackでWi-Fiカメラ

中国で販売されている2000円のWi-Fiカメラで撮影した写真をM5Stackへ送信するWi-Fi玄関カメラの実験を行ってみました。

(参考)Wi-FiカメラTTGO T-Cameraの製品紹介記事はこちら:


このカメラには人感センサがついています。そこで、人感センサが人体などの動きを検知したときに、写真を撮影し、M5Stackへ送信して表示するソフトを作成しました。
また、普段はM5Stack内のMicro SDカード内の写真をフォトフレームのように表示するようにしました。

カメラ側について

カメラ側は、 TTGO T-Camera の出荷時に書き込まれていたサンプルを改造して作成しました。人感センサが反応したときに、UDPブロードキャストを送信し、M5Stackへ通知します。

Wi-Fiカメラ TTGO T-Camera側:
https://github.com/bokunimowakaru/iot-camera

  • 人感センサが反応したときにUDPでM5Stackへ通知します。
  • リセットボタン(RST)でM5StackへT-Cameraのアドレスを通知します。
  • インストール方法は、上記のGitHubのREADME.mdをご覧ください。

フォトフレーム側について

M5Stack側は、Adafruitの液晶ドライバなどを使用して作成したフォトフレームです。
Wi-Fiアクセスポイント・モードとして動かしており、デフォルトでWi-Fiカメラも同じSSIDに設定してあります。

Wi-Fiフォトフレーム M5Stack側:
https://github.com/bokunimowakaru/iot-photo

  • TTGO T-Cameraのリセット操作でアドレス登録後、T-Cameraが写真を撮影するたびに写真を表示します。
  • Micro SDカードまたはSPIFFS内の写真を表示します。 SPIFFSは遅いので、Micro SDカードの使用をお奨めします。
  • インストール方法は、上記のGitHubのREADME.mdをご覧ください。

動かし方

両方の機器の電源を入れ、M5Stackが起動してから、Wi-Fiカメラのリセットボタン(RST)を押すと、ペアリングが完了し、動作させることが出来ます。

スマホからM5Stack(http://192.168.0.1/)へアクセスすると、SPIFFSの初期化や、SPIFFSやSDカード内の写真の表示が行えます。

今日から令和になりました。
この休み中に、もう少し、機能を追加してゆこうと思います。

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

TTGO T-Cameraの温度・湿度・気圧センサが廃止になりました。

以前に紹介したTTGO T-Cameraですが、現在、販売されている新バージョンでは、温度・湿度・気圧センサBME280が廃止となりました。

温度・湿度・気圧センサBME280が廃止となった TTGO T-Camera
写真=TTGO-Camera販売者Xin Yuan (LilyGO)販売サイトより

前回の記事:
https://bokunimo.net/blog/esp/12/

私のところに入ってきた情報によると、2月23日に注文したものは既に廃止となっていたそうです。
また、現在、商品を販売しているページにも赤文字で「Note: TTGO T-Camera has been updated to a version without BME280」と書かれていました。(私が情報を発信した2月22日以降に修正されたようです。)

同社の販売状況を見ると、2月22日~23日に多くの購入があったことが分かり、私の情報をもとに購入された方が不快な思いをされているかと思い、情報を展開させていただきました。

『超特急Web接続!ESPマイコン・プログラム全集』書籍連動キット

CQ出版社から「新人教育用IoT実習キット」という形で、ESP-WROOM-02(ESP8266)やエナジーハーベスト対応のEnOcean送受信モジュールが含まれた部品セットが発売になります。
発売中の書籍に連動したキットです。
手っ取り早く一通りのパーツを手に入れたい方や、勉強会、セミナーなどで活用したい方は、ぜひ検討していただければと思います。

『超特急Web接続!ESPマイコン・プログラム全集』書籍連動キット

新人教育用IoT実習キット
価格19,980円(税込)
2019年3月10日発売予定
※書籍やラズベリーパイと周辺機器は付属しません
※書籍に掲載した多くの実験が可能ですが、対応していないものもあります)
Wi-Fiカメラの実験のようす:キットに含まれるパーツで製作可能なWi-Fiカメラ(書籍P.89)。乾電池による間欠動作も可能。
HTTPサーバを実装することで、防犯カメラ(書籍P.129)として動作させてみたときのようす。この場合は、ACアダプタ(別売)で動作させることを想定
キット専用の説明書も作成しました。CQ出版社のホームページからダウンロードすることが出来ます。
本セットに含まれるパーツのリスト
超特急Web接続!ESPマイコン・プログラム全集
サポートページ(筆者)

2000円のTTGO T-Camera:Wi-Fi+広角レンズ付カメラ+OLED+人感+温度+湿度+気圧センサ

以下の機能がつまったTTGO T-Camera が、$17.6(2019/2/22日時点で1,948円)。
広角レンズと2MピクセルJPEG出力機能つきカメラで自作の防犯カメラに活用できそうです。
本ブログでは動作確認方法について説明します。
  • ESP32マイコン搭載 Wi-FiモジュールESP32-WROVER-B(〒マーク付)
  • 広角レンズ付きカメラ(JPEG出力あり・OV2640)
  • モノクロ有機ELディスプレイ(OLED・SSD1306)
  • 人感センサ(AS312)
  • 温度・湿度・気圧センサ(Bosch BME 280)
    現在、販売されている新バージョンでは、温度・湿度・気圧センサBME280が廃止となりました。
    (Note: TTGO T-Camera has been updated to a version without BME280)
    2019/3/10 追記
広角レンズ付きカメラ、モノクロ有機ELディスプレイ(OLED)、人感センサ、温度・湿度・気圧センサ、ESP32マイコンESP32-WROVER-B(〒マーク付)を搭載した製品 TTGO-Cameraがなんと2000円(2019/2/22現在)

さっそく、動作確認 ①センサ情報

USB端子から電源を供給すると、予めインストールされているソフトウェアが起動し、有機ELディスプレイ(OLED)にセンサ値などが表示されます。
電源を入れるだけで、センサ情報が表示される(OLED画面2)

交互に表示される画面で動作確認 ②人の動きを検知する人感センサ

約6秒ごとに2つの画面が交互に切り替わります。先に紹介した前述のセンサ値の画面は「OLED画面2」です。
下図の「OLED画面1」の上部には「AS312 Trigger」と表示されています。この表示は人感センサが人体などの動きを検知したときに表示されます。動作確認時は、(どちらかといえば)自分の身体をじっとした状態で、この表示が消えることを確認することになります。
人感センサが人体などの動きを検知すると「AS321 Triger」と表示される。赤マーク部にはIEEEアドレスの末尾2バイトが表示される(OLED画面1)

スマホで動作確認 ③カンタンWi-Fi接続

こんどは、Wi-Fi機能の動作確認を行います。
上図のOLED画面1はWi-FiのSSIDとIPアドレスの表示画面です。
本機のSSIDが画面中央に「TTGO-CAMERA-XX:XX」のように表示されるので、スマホのWi-Fi設定で、検索し、接続してください。
接続後、OLED画面下部に表示されているIPアドレス「2.2.2.1」へアクセスします。スマホのブラウザのURL入力欄に「http://2.2.2.1/」のように入力してください。接続が出来れば、Wi-Fi動作確認の完了です。
Wi-Fiモジュールには、日本の電波に関する技術基準適合証明の認証マーク(技適マーク)が表示されています(下図の金属シールドの部品)。
本機の裏面に実装されているESP32-WROVER-Bには、国内向けの技術基準適合証明(技適)マークが印字されている

メイン機能の動作確認 ④広角カメラで写真、動画をスマホで確認

Wi-Fi接続が確認できたら、下図のような画面が表示されます。「Get Still」で写真撮影、「Stream」で動画が表示されます。
写真=TTGO-Camera販売者Xin Yuan (LilyGO)より

もちろん、DIYで活用できるソフトウェア開発環境 Arduino IDE 対応

デモ用のプログラムはGitHubで公開されています。
簡単に改造して、自分だけのカメラ活用が可能です。
TTGO-Camera用デモソフトのソースコード:
簡単に全機能が動作確認できるのは、安心です。
春節明けにも関わらず、注文から到着まで1週間ほどで届きました。
動作確認を終えたら、Ali ExpressのConfirmと5つ星の付与も、お忘れなく。
(なお、ボクと出店者とは無関係です)
ご注意:
プリインストールされているデモ用ソフトのWi-Fiにはセキュリティがかけられていません。
電源を入れっぱなしにしていると、外部からの侵入者が内蔵カメラの映像を閲覧することが出来、自分自身や他人のプライバシー、秘密情報などを漏洩してしまう恐れがあります。
by ボクにもわかる電子工作

超特急Web接続!ESPマイコン・プログラム全集[CD-ROM付き]

Wi-FiモジュールESP-WROOM-02をブレッドボード基板に実装し、様々なIoT機器を製作するための書籍「超特急Web接続!ESPマイコン・プログラム全集」が、CQ出版社から発売になりました。
一つ一つのIoT機器は、比較的、簡単に製作できるものです。
特長はサンプルの多さです。また、基本的な動作確認から、作成した複数の機器を連携するまでの一連の方法についても説明しています。
先日まで、Amazonでの在庫が無く、注文後納期がかかってしまっていましたが、現在は、すぐにお買い求めいただけるようになっています。
興味がありましたら、目次だけでも見ていただければと思います。

ラズベリーパイ&IchigoJam対応
LED/スイッチからカメラ/LCDまで
なんでも3分Wi-Fi接続
超特急Web接続!
ESPマイコン・プログラム全集
[CD-ROM付き]
出版社: CQ出版 (2019/1/22)
ISBN-10: 4789847047
ISBN-13: 978-4789847049
発売日: 2019/1/22
下記の情報も参考にしていただければと思います。
サポートページ:

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

Espressif製Wi-FiモジュールESP32-WROOM-32を使い、シンプルな超簡易的周辺回路で動作する「IoTセンサの実験」を行ったところ、295日間(9.7か月)の動作が確認できました。
超シンプルな回路で、単3アルカリ乾電池2本で、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つの動作状態をもっており、そのどちらかをとっていたため考えられます。

超シンプル回路の背景

この実験を行った背景を説明します。
(興味の無い方は、次節の「実験方法」へ進んでください)
ESP32-WROOM-32モジュールのディープスリープ時の待機電力は、旧モデルESP-WROOM-02の60μAに対して20μAと低い点、プロセッサの高速化により処理時間を短く出来る点などから、旧モデルと同等以上の動作期間が実現できると言われています。
しかし、実使用状態では、起動時の突入電流の大きさから、旧モデルの半分以下の期間しか動作しないことが多くありました。突入電流が生じている状態で適切に起動させるには、500mA以上の供給能力がある電源レギュレータと、大容量の低ESRコンデンサが必要ですが、こういった部品の多くは、待機電流が大きく、また電圧降下により電池の終止電圧を高めてしまいます。(失敗例=https://t.co/8LAyYYyoEv
待機電流は、製作段階で確認することができます。しかし、電池の消耗とともに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へ入力しました。
製作したプログラムは下記からダウンロード出来ます。
製作したプログラム:
プログラム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=」にメールアドレスを入力してください。
電池切れを検出し、メールを送信するスクリプト:
GMailで送信するためのインストール・設定用スクリプト:

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

旧モデルのESP-WROOM-02では、単3アルカリ乾電池3本(送信間隔30分)で、1年間の動作が可能であることが分かっていました。
ESP-WROOM-02・単3アルカリ乾電池3本で1年間
https://t.co/GHN0yf5jIC
今回は、単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/

8か月以上の長期間動作を確認! 超省エネIoTセンサESP32-WROOM-32

ESP32シリーズを使用して、8か月のIoTセンサ動作が確認できましたので、報告いたします。
電源には、単3アルカリ乾電池4本と、村田製LXDC55を搭載した秋月電子通商製のAE-LXDC55-3.3Vを使用し、60分に1度、IoT用クラウドサービスAmbientへ送信しました。
ESP32-WROOM-32モジュールの起動時の突入電流と、Wi-Fi動作時の消費電流が大きいので、手軽な電源回路を実現するのに苦労しました。
写真右側の黒色の基板には、もともとDCDCコンバータや、リチウムイオン電池を搭載可能な電池ボックス(基板裏面)が搭載されていました。しかし、これらの消費電力が大きかったので、電源パターンを切断し、左側の赤色の基板に実装された村田製DCDCコンバータを使用しました。
ESP32-WROOM-32を単3アルカリ乾電池4本で動作させる実験の様子
村田製DCDCコンバータを使用したときの本システム全体の消費電力は約2mW、単3アルカリ乾電池で247日(約8か月・送信間隔=60分)、動作しました。
IoT用クラウドサービスAmbientを使ったので、動作の様子を確認しながら実証検証を行うことができました。
また意外と手間やコストのかかる取得データの保管もAmbient(無料で利用可能)なら手軽です。

動作期間8か月の電池電圧の推移

下図は、8か月間の電池電圧の推移です。
ESP32-WROOM-32+村田製作所製LXDC55の組み合わせで、2017年12月29日から2018年9月2日までの247日(8.1か月)の動作が行えた
グラフをみると、7月に4.7Vから4.5Vへ落ち込む様子が見られます。下図は、その拡大図です。2日間かけて、電圧が激しく変動していたことが分かります。
これは、村田LXDC55のDCDCコンバータが4.75V以上の入力で動作し、それを下回ると、LDOの動作に切り替わった様子だと思います。
また、LDOの変換効率がDCDCよりも悪く、約0.2Vの電圧降下をまねいたということも分かります。
4.75V以下でDCDCコンバータがLDOに切り替わった。また、変換効率の低下によって0.2Vの電圧降下も生じた。

試算通りの動作を達成させるための工夫

ESP32-WROOM-32の電池の持ち時間を、試算通りに達成させることは難しいです。前回は、試算120日の構成にも関わらず、70日しか持ちませんでした。それ以前の実験では、半分以下しか達成できないこともありました。
試算120日にも関わらず、70日しか動作しなかった例:
今回: 試算248日 実証実績247日 (達成率 100%)
前回: 試算118日 実証実績70日 (達成率 59%)
今回、試算通りの動作を確認するために、以下の2点について、考慮しました。
  1. 降圧型DCDCコンバータを使用(消費電力150μA)
  2. 1000μFの低ESRコンデンサ×2個(計2000μF)を追加
降圧型にしたのは、電池電圧が下がったときの消費電流増大に伴う起動不具合を防止するためです。
ESP32-WROOM-32の起動時は、1Aもの突入電流が数十μ秒発生し、その後、電流200mAが10ms、さらに約1秒後に電流200mAが100ms、流れます。とくに、最後の200mA×100msの電流量の負担により、電池の終止電圧を高めてしまう(電池寿命を短くしてしまう)ということが分かりました。そこで、電池を4本直列にして、電圧を引き上げておき、降圧型で使用することで、終止電圧の高まりを抑えました。
大容量のコンデンサも、突入電流によるESP32マイコンへの供給電圧の低下を下げるためです。
なお、1000μFのコンデンサは、リーク電流が発生する場合があります。リーク電流は個体差があるので、少し、多めに買って、リーク電流の少ないコンデンサを使用すると良いでしょう。
本製作例での平均動作電力は約2mWです。もし仮に、1mAのリーク電流が発生したとすると、電池寿命は2か月程度まで落ち込むことになります。
CQ出版のIoT Express基板を使って製作してみても良いでしょう。
IoT Express基板へ村田製LXDC55を実装した例:

課題

課題も残っています。旧モデルESP-WROOM-02を使った場合、単3アルカリ電池3本で1年間の動作実績があり、電池の数が少ないにも関わらず、4か月も本機が負けていました。
この課題については、全く異なる方法で対策し、すでに良好な結果を得ています。
ESP32-WROOM-32・単3アルカリ乾電池2本で9.7か月
ESP-WROOM-02・単3アルカリ乾電池3本で1年間
https://t.co/GHN0yf5jIC
by ボクにもわかる電子工作