繋がったESP32とBME280が出てきたので何かできないか探す

以前、ESP32のBluetoothを使って、温度、湿度を送信するプログラムを継ぎはぎ(ESP32に内蔵されているホールセンサー値をBluetoothで送信するプログラムにBME280の読み取りプログラムを継ぎはぎ)で作って、スマホのBLEアプリで見て、出来た出来たでそのまま仕舞ってあったESP32とBME280で、新たに追加部品無しで何かできないか探してみた。google スプレッドシートにESP32からデータ送信して書き込む方法があるらしいので調べてやってみた。このESP32→google スプレッドシートの事例はコピペで動いてくれるプログラムが無く、少ない知識で色々やってもなかなか動いてくれなかった。

https://www.haruirosoleil.com/entry/2020/02/02/101937

こちらのページで紹介されているプログラムが、GAS側に書き込むものも、ESP32側に書き込むものも動作してくれたので、

https://wak-tech.com/archives/1642

こちらのページのBME280のシリアル読み取りプログラムを継ぎはぎして、ESP32に書き込んだところ、動いた。温度、湿度、気圧が書き込まれてゆく。

f:id:cheapkilltime:20210111170957j:plain

次は電源に電池を利用しての駆動を検討する。delayの代わりに

esp_sleep_enable_timer_wakeup(1000000*60*10);//10分sleep
esp_deep_sleep_start();

を書き込んで、まずは、USB充電用のモバイルバッテリで試すと、なぜか、10秒間隔送信になってしまう。モバイルバッテリは消費電流が小さいと給電が切れる機能があるらしく利用をあきらめる。

次に秋月電商のUSB電池ボックス 単三×4本 スイッチ フタ付き(ダイオード1本で電圧ドロップしているだけ)というやつにニッケル水素電池をセットしてESP32に繋いでみたが、ESP32が動作しない。上記の電池ボックスをスイッチサイエンスのESP8266につないで、AmbientにBME280の測定値を送った場合、10分おきだと40日くらい持つのだが、この電池ボックスも駄目(使っているニッケル水素電池がぼろすぎなのかも)。

電池をUSB経由でなく直結する方法として、ESP32の3V3端子(下の写真のようにBME280の電源としてふさがっている)経由か、5V端子経由があるようだが、いつ入手したかわからないようなポンコツニッケル水素電池(4本直結でも充電直後で5.5V以上にはならない)が手元にごろごろあるので、ESP32の5V端子に繋ぐこととした。ジャンク箱にあった電池ボックスで単三が4本入るものはラジコンの受信機、サーボ用電源用のもの。なぜがブレットボード用のジャンパーピンがぴったり刺さった。

f:id:cheapkilltime:20210111183926j:plain

合計8回ぐらい試したが、2000mAhと書いてある電池がいってもせいぜい100時間前後しか持たない(電池が古いのでたぶん2000mAhは絶対に無い)。送信先が違うが、ESP8266が40日持つ(上記の秋月電池ボックスを使用)のに対し、4日強しか持たない。deep sleepしているの?という疑問がわくが、ESP32はモノによって、deep sleep中にも20mAも消費するものがあるらしい。

https://ja.heatherforcongress.com/14385-ESP32-Deep-Sleep-Tutorial-88

deep sleep中の電流値を測定すると、

f:id:cheapkilltime:20210112140158j:plain
11.2mAでESP32(中華品の安物)に原因がありそうだ。