マイコン工作 4


4.ESP-WROOM-32でWifi調査と電源の検討・計算精度



 たんぼの水管理や生育把握など、農業IOTにESP-WROOMの利用を目論んでいます(気温・湿度・水温・水量などの測定)。 たんぼにESP-WROOMを何箇所か設置しないとならないので、ESP-WROOMのWifiでどの位まで届くのかを調査しました。

 調査用にESP-WROOM-32でWifiのSSIDと受信強度を2行のLCDに見つかった順に2件表示するプログラムを作成し、 このESP-WROOM-32を持って家の周りを歩いて調べたら、他のWifiのSSIDが沢山表示され自宅のSSIDが表示されなくなってしまいました。
 こんな田舎でもWifiが多数飛び交っていたんですね。


 自宅のSSIDでアクセスさせ認識出来ているか否かを確認(自宅の無線ルータ経由で、インターネット時刻を取得)する プログラムを作って時刻が取得出来るかどうかで、到達距離を目測しました(このプログラムはネットワーク時計としても使用出来、PCの時計よりは正確です)。

 結果は、自宅の環境(無線ルータはNECのAtermWR9500Nで木造の2階に設置)では自宅から約50m。安定してデータ収集するには、30m〜50m程度と考えた方が良さそうです。
 気温・気圧・湿度センサだけなら、近くに1つ設置すれば済みますが、水温センサや水位(超音波距離)センサも設置する予定で、 一番遠いたんぼまでは約300m。 途中6〜10箇所に中継機が必要となり、電源などの管理を考えると現実的ではありません。 屋外に無線中継器を設置すれば、もう少し到達距離を伸ばせると思うので、 望遠鏡を設置している平屋の屋上(LANやパソコンも置いてあるので)にアクセスポイントを設置しようかと考えています。

 又、複数のESP-WROOMを屋外に設置するので電源も検証中です。 各種センサを搭載したESP-WROOM-02に単3ニッケル水素充電池(2000mAh)×3本の3.6V(実際には4V近くありました)を 3.3Vの定電圧レギュレータ(NJM2845)で供給すれば動作しますが、何故かdeepsleep後の再起動に失敗しました。
 ESP-WROOM-02はデータシートによると3.0〜3.6Vで動作しますが、充電直後のニッケル水素充電池は1.4Vあるので、3本で直接給電するとオーバーします。 3.3Vの定電圧レギュレータは入出力間電位差が0.18VあればOKのはずですが、deepsleepからの復帰時は起動時よりも消費電力が多いのかも知れません)。

 電源テストはフル充電した単3(2000mAh)×4本の4.8Vでテスト中しましたが、開始直後は5.4Vあったのが10日で4.5Vまで落ちたので、 バッテリを痛めないように、交換しました。5分毎に送信しているので、約2800回送信した事になります。 1時間に1回の送信にすれば4ケ月弱は持ちそうなので、再テストの予定です。

 ただ、5.4Vを3.3Vに変換するのは無駄に2Vを消費しているだけなので、単3×2本の2.8Vを昇圧型のDC-DCコンバータで3.3Vに上げたほうが 効率良さそうなのでテストしてみたんですが、SHT31の温度センサーが時々誤動作(DC-DCコンバータのノイズでしょうか?)。
 他のセンサーには異常は見られないので、誤動作(温度が-45℃、湿度が100%で取得される)時に再取得するようにしてテスト中です。

使用した秋月電子の昇圧型DCDCコンバータ StepUP・DIP 3.3Vタイプと3.3V出力コイル一体型昇圧DCDCコンバータ
どちらもSHT31が時々誤動作し、その時は必ず「温度が-45℃、湿度が100%」で取得される(センサーとは1cm程度しか離れていない)


 電池の電圧もADコンバータで測定してサーバーに転送しているので、これを監視して電圧が1本当たり1.1V以下になったら交換する予定です。
 消費電流は搭載しているセンサーによっても異なります。測定時のBME280は3.6μA、SHT-31は800μA、STTS751は50μA、 DHT-11は0.3mA、MPL115Aは5μA、DS18B20は1mA。
BME280、SHT-31、STTS751を搭載したESP-WROOM-02とDS18B20のみのESP-WROOM-02がほぼ同じ消費電流となります。


 ただ、ESP-WROOM-32は、単3×2本の昇圧型のDC-DCコンバータでは動作出来ませんでした(Wifiを使用しないプログラムならOK)。
出力電流不足かと思い、Amazonで購入した中華製の2A DC-DC Boostステップアップ転換モジュールでもテストしましたが、ESP-WROOM-32では起動出来ませんでした。
 このネットワーク時計をPCのUSBに接続して常時動作さると約120mA程度流れています。ESP-WROOM-32本体も結構暖かくなり、近くに温度センサを置いたら影響しそうです。
wifiを使用しないか WiFi.mode(WIFI_OFF) でwifiをoffにすれば50mA程度に下がるので、wifiだけで70mA以上使われるようです。
ESP-WROOM02のwifiとハード的にも異なるようで、wifiを使わなくなった時点でWiFi.mode(WIFI_OFF)に変更したほうがよさそうです。

ふた付きの単3×4本の電池ケースに細工してDC-DCコンバータを入れ3.3Vで出力しています。1本出ている線は電池電圧測定に使用しています。

 モバイルバッテリも検討しましたが、消費電力が少ないと供給を停止する機能が付いているものも多く要注意です。 消費電力が多いESP-WROOM-32でも、2つ持っている10000mAのモバイルバッテリーのうち連続使用できるのは1つだけでした(ANKER製)。 ただ、このバッテリーもdeepsleepモードが1分位なら大丈夫でしたが、長いと供給を停止してしまいました。

 太陽電池を使って電池を充電すれば、電池交換の回数も減るし、発電電圧で日照時間の測定にも使えそうです。 ただ、内臓のADコンバータは電池の電圧測定にを使っているので、外付けのADコンバータ(MCP3008など)で太陽電池の電圧も測定出来るようにする必要があります。

使用予定の2Wの太陽電池モジュール(600円)。パネルの裏に中華製の2A DC-DC Boostステップアップ転換モジュールを付け12Vの鉛蓄電池に充電出来る事は確認済み。


 ESP-WROOM-32は、Wifi以外にBluetoothも使え、デュアルコア Tensilica LX6、SRAM:520KBと性能も高く、使用出来るピン数もESP-WROOM-02より多い。 静電容量タッチインターフェースやアナログ・デジタルコンバータ、デジタルアナログコンバータも搭載した高機能Wifiモジュールです。 磁気センサや温度センサも内臓していますが、温度センサは精度も含め使い方がよく分かりません。

 又、ESP-WROOM-32は、計算精度も上がっていて、単精度(32bit)・倍精度(64bit)をほぼ正しく計算します。11.0÷7.0を少数以下64桁表示させると
倍精度=1.5714285714285713524418497399892657995223999023437500000000000000
単精度=1.5714285373687744140625000000000000000000000000000000000000000000
単精度と倍精度では少数点以下8桁目から違ってきます。linux(64bit)で50桁で計算(echo "scale=50; 11.0/7.0" | bc)すると
1.57142857142857142857142857142857142857142857142857
1.5714285714285713524418497399892657995223999023437500000000000000
少数点15以降微妙に違います。高精度の計算は難しいという事なんでしょうが、これなら天文関連の計算にも使えそうです(arduinoはduo以外は倍精度も単精度でしか計算してくれない)。

BASICも内臓しているので、昔のマイコン風にも使えます。
 又、pythonのサブセットのmicopythonも提供されています(ESP-WROOM02やstm32(NUCLEO-F401RE boardなど)でも)。pythonはBASIC同様、インタープリタ的にも実行出来ますが、 サブセット版という事もあり、演算精度は単精度(32bit)だけのようですが、私的にはaruduinoのC++よりはプログラムが組み易い。
 センサーのデータ取得などの目的にはmicopythonで十分だと思われます。NUCLEO-F401REでも動作するとの事なので何れ試そうと思います。

毎度お世話になっている秋月電子でESP-WROOM-02のWifiモジュールだけなら10個パックで4000円。ESP-WROOM-32のWifiモジュールでも10個パックで5500円。 1個当り400円や550円でこの機能には驚きです。



画像掲示板へ

マイコン工作へ