失敗続きのESP32を使った長時間動作実験 TI製DCDC TPS61020編

Espressiff 製 Wi-FiモジュールESP-WROOM-32(以下ESP32)を使い、アルカリ乾電池による長時間動作の実験を行っています。
今回は、TI製の昇圧DCDCコンバータ TPS61020を使って実験してみました。

昇圧DCDCコンバータ TI製TPS61020

TPS61020はわずか25μA(Typ)で動作可能な昇圧型DCDCコンバータです。入力電圧0.9V~6Vに対して定電圧(3.3V)で最大800mA(最小電圧時200mA)の出力を行うことができます。降圧時はレギュレータとして動作します。
30分ごとに温湿度を送信するESP32搭載Wi-Fiセンサを用い、単4電池2本で何か月の動作が可能かを実験してみました。
想定した条件で試算すると、単4電池2本で4か月(単3電池2本だと10か月間)の動作が可能です。
しかし、実際には70日(2.3か月)しか持ちませんでした。

ESP-WROOM-32に単4アルカリ乾電池2本を接続

単4アルカリ乾電池2本で4か月の動作を見込んで製作したWi-Fi温湿度センサ(センシリオン製SHT31使用)だが、実験の結果、2.3か月しか持たなかった。DCDC出力には1000μF+330μFのコンデンサを実装した。
ハードウェアの構成は以下の通りです。
Wi-Fiモジュール:Espresiff製 ESP-WROOM-32
昇圧DCDC電源:TI製 TPS61020
温湿度センサ:センシリオンSHT-31
電源用コンデンサ:330μF+1000μF
アルカリ乾電池:モノタロウ製 単4乾電池 2本
使用した昇圧DCDC電源TPS61020のモジュールはストロベリー・リナックス製です。
モバイルパワーXBee変換モジュール 「MB-X」
https://strawberry-linux.com/catalog/items?code=12041
測定データは、IoTセンサのグラフ表示が可能なクラウドサービスAmbientへ送信しました。
Ambient (チャネル141)

測定結果の詳細:レギュレータからDCDC動作へ変わるようす

測定完了後にダウンロードした電池電圧の測定結果を以下に示します。縦軸は電池電圧、横軸は1目盛1週間の経過時間です。
最初の1週間から10日ほどは、レギュレータとして動作し、その後、数日から1週間ほどで、DCDC動作へ切り替わる様子が分かります。
電池電圧の変化の様子(縦軸=電圧V)
2018年6~8月(図・上段)と、2018年4~6月(図・下段)に実験を行った。横軸の目盛は7日毎で、最初の1.5週間ほどは電源ICがレギュレータとして作用し、その後、DCDCへ徐々に切り替わり、2週間目からDCDC動作となったことが分かる。電池末期の終止電圧は1.3~1.4Vだった。
レギュレータ動作時は、電池の内部抵抗による電圧の下がり具合が大きいことから、電源ICの効率が悪いことが覗えます。しかし、その後、電圧が上昇していることから、徐々にDCDC動作が主体となりました。
電池寿命の末期となる終止電圧は1.3~1.4Vでした。ESP32の起動時の突入電流の影響で、電源IC仕様の0.9V動作までは引き出せませんでした。終止付近でのグラフの変化が急襲なので、もし、0.9Vまで動いたとしても、あまり変わらないと思います。

単3電池2本で目標 6~8 か月間

試算値と実験結果とでは、たいてい齟齬が発生します。とくにESP32では、その齟齬が大きく、これまでも苦戦しています。その原因は、起動時の突入電流です。突入電流によるエネルギーは電池容量に比べて十分に小さいものの、大電流が流れることによる電池への負担や電源回路への影響が出ているものと考えています。
今回は単4アルカリ乾電池を使用しましたが、容量が2倍となるの単3アルカリ乾電池へ変更した場合、以下のとおり、6か月以上の動作時間が期待できます。また、単4に比べると、電池の内部抵抗も半分になるので、試算の齟齬は少なくなると予想しています。
単4アルカリ乾電池2本 試算値 4か月  → 実測2.3か月(今回の実験結果)
単3アルカリ乾電池2本 試算値 10か月 → 推測5.8か月(これからの実験予定)
経験上、電池寿命の末期が冬季になると、推測値を下回ることが多くありますが、春に差し掛かれば伸びる傾向があります。このため、ちょうど今から開始すれば、8~9か月間くらいの動作が出来る可能性もあります。
以上から、最小目標6か月、最長8か月を目指し、単3アルカリ乾電池での実証に着手しようと思います。
また、すでに2年に渡り、様々な形態で実験を行っており、条件は異なりますが、単3アルカリ乾電池2本で2017年12月から8か月以上の動作しつづけているサンプルもあります。こちらについても、終了した時点で、報告したいと思います。
ボクにもわかるESP-WROOM-32
by ボクにもわかる電子工作
https://bokunimo.net/

IchigoJam S+温湿度センサSi7021で暑さ指数WBGTを計算して、熱中症予防

IchigoJam SのSはセンサのSと言われています(※)。IchigoJam Sのセンサ端子CN5へ温湿度センサSi7021を接続し、温湿度測定値から室内用の暑さ指数WBGTを計算します。
※諸説あるうちの有力でない例です
IchigoJam Sへ温湿度センサSi7021を接続し、暑さ指数WBGTを表示したときの様子。31℃以上になると、危険。撮影用のライトの影響でWBGT=32.4℃とかなり危険な状態となっている。撮影前や現在はWBGT=31.2~31.6℃だったので、十分に水分を取りながら執筆中。
センサの接続方法は、下記のブログ記事を参考にしてください。
温湿度センサ Si7021:

暑さ指数WBGTとは

湿球黒球温度WBGTは、国際規格化されている暑さ指数の一つです。WBGTの単位は℃なので、直感的に分かりやすい指標です。しかし、その測定には湿球黒球温度計という専用の計測器が必要です。また、より簡易な方法で測定する方法として、温度と湿度から推定する方法があります。
日本生気象学会が作成した「日常生活における熱中症予防指針(参考文献2)」に、温度と湿度から暑さ指数WBGTをもとめる換算表と、WBGT値における危険度がまとめられています。以下は、WBGT換算表をエクセルへ転記したものです。
画像データだったWBGT表の数値を「手作業」でエクセルへ入力した。

しかし、公開されている表には20℃以下のデータが無かったので、国立環境研究所の小野 雅司らによる6都市の気象データから求めたWBGT推定式(参考文献3)から0℃におけるデータを使用し、0℃~40℃まで対応できるようにしてみました(日射量や風量は0とした)。近似式も小野氏のWBGT推定式に倣いました。

今回、作成した近似式:(屋内用)
WBGT = 0.725*Ta + 0.0368*RH + 0.00364*Ta*RH – 3.246
参考文献3の推定式:(小野氏らの研究成果・屋外)
WBGT = 0.735*Ta + 0.0374*RH + 0.00292*Ta*RH – 4.064
Ta=室温(℃)、RH=相対湿度(%)
補足(より詳しく知りたい方への情報)
参考文献2のWBGT表は室内環境をもとに作成されており、一方、参考文献3の推定式は屋外環境の気象データをもとに作成されています。このため、これらのWBGT値は下図のように一致しません。そこで、21℃以上については参考文献2のWBGT表を、0℃のときは参考文献3の推定式を使用し、平均二乗誤差を最小にするパラメータを算出しました。
湿度60%における室温とWBGTの関係(湿度が一定値60%のとき)
室温と湿度からWBGTの推定値を算出できるようになった
適切な方法かどうかは分かりませんが、少なくとも熱中症予防指針には沿っているはずです。
実際に熱中症予防対策として使われる場合は、十分に検証の上、ご利用ください。

IchigoJam用 BASICプログラム

下記のプログラムを実行すると、温度、湿度、WBGTが表示されます。IchigoJam BASICの変数は16ビットの整数型なので、計算時に変数の範囲を超えない範囲で精度が確保できるよう配慮しました。

1 ?"Humidity Sensor SILICON LABS Si7021
2 'if ver()<12348 stop

100 'MAIN
110 let[0],#3ae6,#f3,#f5
120 if i2cw(#40,#800,2) stop
130 if i2cw(#40,#802,1) stop
140 wait 2
150 if i2cr(#40,#806,2) stop
160 A=([3]>>8+[3]<<8)/37-474
170 if i2cw(#40,#804,1) stop
180 wait 2
190 if i2cr(#40,#806,2) stop
200 B=([3]>>9+[3]<<7)/26-65
210 ?"Tempr=";A/10;".";A%10;" ";
220 ?"Humid=";B/10;".";B%10;" ";
230 if A<0 A=A-5 else A=A+5
240 A=A/10:B=B+5:B=B/10
300 'WBGT
310 W=(A*725)/100
320 if W<0 W=A*73
330 W=W+(B*37)/100
340 W=W+(A*B*4)/100-32
350 ?"WBGT =";W/10;".";W%10
360 wait 300:goto 100

Bashで計算する

Raspberry PiなどLinuxベースのOSで計算するにはbcコマンドが便利です。変数TMPLへ温度を、HUMへ湿度を代入して以下のコマンドを実行します。

echo "0.725 * ${TMPL} + 0.0368 * ${HUMI} + 0.00364 * ${TMPL} * ${HUMI} – 3.246"|bc

参考文献

本ブログは、IchigoJamの開発者である福野泰介さんのブログ(参考文献1)を見て、書いてみました。福野さんは、半導体環境センサのパイオニアであるセンシリオン製の温湿度センサSHT31を使用して、不快指数を求めています。また、WBGTについては日本生気象学会のサイト(参考文献2)並びに、同学会誌の情報(参考文献3)を参考にしました。
(参考文献1)
SHT31を使った不快指数(福野泰介の一日一創):
(参考文献2)
「日常生活における熱中症予防指針」Ver.3 確定版
日本生気象学会ウェブサイト
http://seikishou.jp/pdf/news/shishin.pdf
(参考文献3)
日本生気象学会雑誌 50(4):147-157, 2014
通常観測気象要素を用いたWBGTの推定
国立環境研究所・環境健康研究センター 小野 雅司, 気象業務支援センター 登内 道彦
https://www.jstage.jst.go.jp/…/seikisho/50/4/50_147/_pdf
by ボクにもわかるIchiogoJam用マイコンボード

超簡単1行リターンIchigoJam IoT.inコマンドで文字列・カタカナ受信

IchigoJam用マイコンボード(IchigoSodaなど)+sakura.ioモジュールで簡単に文字列を受信する方法について説明します。
IoTコマンドを使用するので、IchigoJam BASICのファームウェアは IchigoJam BASIC Ver 1.2.4 IoT版のベータ版(1.2β59)が必要です。
現時点の受信方法として参考なればと思います。
IchigoJam BASIC Ver 1.2.4 IoT・β版を書き込んだマイコンボードへssakura.ioモジュールなどを搭載した。マイコンボードはCQ出版社のIF ICH-KIT。
sakura.ioモジュールへ、メッセージを送信するには、下記の「WebSocket 確認ツール Message IoT – sakura.io」が便利です。IchigoJamの開発者の福野氏が作成したMessage IoT の機能の一部を省略し、ツールとして利用できるようにしました。
WebSocket 確認ツール Message IoT – sakura.io
IchigoJamでメッセージを受信するには、IoT.in関数を使用します。関数なので「A=IoT.in()」のように変数へ代入するか、?やifなどの命令に続けて使用する必要があります。
以下に、受信コマンドとプログラムの一例を示します。
1行リターンで受信したい場合:
WebSocket 確認ツールの「Message」の部分へテキスト文字(8文字以内)を入力し、[送信]をクリックしてから、以下の1行リターン用のコマンドを入力すると、IchigoJamで受信することが出来ます。
IF IOT.IN() POKE #82C,0:? STR$(#824)
プログラムで受信したい場合:
以下のプログラムを実行し、WebSocket 確認ツールで「Message」にテキスト文字を入力する、もしくは、「Value」に整数を入力してから、[送信]をクリックすると、IchigoJamで受信することが出来ます。
10 I=IoT.in()
20 wait 60
30 if peek(#820)!=1 goto 10
40 ?"Ch=";peek(#822)
50 poke #82C,0
60 if peek(#823)=98 ? str$(#824) else ? I
70 goto 10
ところで、#820や、#822、#823、#824の数字は、何でしょう。
こういった数字を使わずに、受信できるようになると使いやすそうです。
正式版で対応して欲しい1行コマンド(※今は使えません)
? STR$(IOT.IN())
メモ: IchigoJam BASIC Ver 1.2.4 IoT版のsakura.io用メモリマップ
配列変数[0]~[6] #800~#80D IoT.out 送信用バッファ
配列変数[0]~[1] #800~#803 IoT.in 送信用バッファ
配列変数[16]~[26] #820~#835 IoT.in 受信データ
IchigoJam BASICのβ版は下記からダウンロードできます。
IchigoJam BASICのβ版:
ichigojam-1.2b59.zip

IchigoJam×sakura.ioモジュールの情報を下記のウェブページで公開しています。
ボクにもわかるIchigoJam用マイコンボード IchigoSoda / sakura.io の接続
by ボクにもわかるIchigoJam用マイコンボード