1時間毎の定期観測型の電池式スマートセンサーを作る
僕が最初にワンチップマイコンでネットワーク機器を自作しようとしたキッカケはパソコンから屋内照明のON/OFFを行いたいというものでした。時を経ると有線LAN式から無線WiFiになり1個1000円以下で作れる様になったのと更にESP8266だとスイッチ以外イロイロ出来そうだと判りました。そんな流れの中で僕の趣味も古民家修繕や家庭菜園などが加わると環境センサーでのデータ取りなども興味が出てきました。そして、畑・古民家という性格上 「AC電源が届かない場所にセンサーを設置したい」 という要求を満たす検討を今回スタートしました。こんなの作りました ESP-12F使用の温度湿度計 周辺回路電源OFFのFETを追加する事で未使用時の電力消費を抑えました これで2年以上動くのだから何も文句ありませーん! AHT10を他のセンサに変えればイロイロ転用可能なトコがオススメです Lolin32Lite使用の土壌湿度計 ESP32なので電池電圧測定とSleep時に周辺回路電源OFF等の機能を 追加する結構面倒クサイ仕様になりました。※ESP32C3 SuperMiniから改善しました! Lolin32LiteはUSB経由の充電回路を使うとソーラーとリチウムイオン充電池の システムが作れるので実は結構有望な機体であります ESP32C3 SuperMini使用のスイッチ DeepSleepの仕様が従来ESP32と違っており、使えそうな気がしています。 まぁDeepSleepから復帰する為の回路の消費電力がキモになりそうです。 自作ESP-NOW MESH通信などを使ってこんなソースで動かしています 「機器毎の設定メンドクサイ」とかイロイロ考慮に入れていくと最終的な電文は 「MACADDRESS・電池電圧・機器種類・センサ値」で済んじゃった感じです。 ※ESP32のソースも似たようなもんです//========================================================================#define UNIT_TYPE "AHT10"#include <ESP8266MESH.h>#include <GPIO_CLASS.h>ESPGPIO GPIO_FET ( 15,OUTPUT); // OUTPUT//========================================================================#define USE_AHT10 // Temp/Humidity#include "TEMPSENSOR.h"//========================================================================void setup(){ GPIO_FET.setHi(); ESPMESH_INITIAL( ESPNOWMESH_TYPE_CLIENT ); TEMP_initial(); if( isnan(TEMP_read())==true ) return;char message[128]; sprintf( message, "DATA=SLEEP%05d%s%s_%s_*,%s,%s", ESP.getVcc(), WiFi.macAddress().c_str(), WiFi.macAddress().c_str(), UNIT_TYPE, TEMP_string(AHT10_temp.temperature).c_str(), HUMI_string(AHT10_humidity.relative_humidity).c_str() ); espnow_mesh_sendlogic_string_request( 0x8100, message );}//========================================================================void loop() { if( ESPMESH_SEND_WAIT()==true ) return; int deepsleep = ((AHT10_temp.temperature==NAN)?5 : 1000); // エラーは5秒後復帰 : 通常は1000秒毎 ESP.deepSleep(deepsleep * 1000000 ); delay(1000);}//======================================================================== 2023年の現状はESP8266で18650電池1本で1時間に3回測定報告として設計では期待電池寿命2年以上の仕組みで動作検証を行っています。5台以上で動作確認していますが、電池交換時期の警告機能は必須と感じています。※市販品はスマートフォンに随時接続報告などできる様ですが僕の作ったセンサはGoogleSpreadSheetに 書き出されるだけなので劣化版ですけどね。※ロガー側不具合等の再起動に報告があるとデータ欠損が発生するので時間あたり3回の報告制にしています。※ESP32はlolin32liteで行ってましたがdeepsleep時の消費電力が多いらしく挫折して、別の機体を探し中。2024年3月 ESP32C3 SuperMiniが低消費電力運用で良さそうです。 久しぶりに新しい型番を購入確認しました。ESP32C3 Super Miniの確認では 追加部品無しでDeepSleep時100uA以下と期待出来る結果が得られました。 仕様が従来のESP32と違うものがあるので、移行にはソコソコ手間がかかります。 2023年6月26日 SwitchBotのユニットに対抗出来ないか検討する事にしました 以前からSwitchBotのスイッチが羨ましいよなーと思っていましたが、自作機器で24時間 ずっとWiFi/Bluetooth通信する術を思い浮かばなかったのでイイナーと思うだけでした。 今回SwitchBotの温湿度センサーの仕組みを紹介した記事を見て閃いたので検討開始です。 とりあえず検討事項の覚書としては =>ESP8266のブートローダー起動時間の短縮化を検討 =>DeepSleep機器は復帰時n操作中継器に現状報告と指示確認の通信を行う =>DeepSleep機器のスリープ・復帰間隔を短い間隔にして電池寿命の確認 =>ESP-NOWネットワークにDeepSleep機器の操作中継機を用意する =>DeepSleepモードと設定モードが楽に切り替わる様な機構を考える2023年 ESP Lolin32Liteで複数機運用出来る様に回路を綺麗にしました GoogleSpreadSheetのデータ書き込みが安定して書ける自信ができた ので周辺機器を豪華にすべく土壌湿度計も複数台での検討が出来る様に 配線をシンプルに直して、3Dプリンタでケースを用意しました。 あとESP-NOWの通信距離は中継ハブで改善できるか検討開始しました。 18650が1本ですが1年経過しても動作しています。リチウムイオンバッテリ 4個 3.7V 1000mAhリチウムバッテリ リチウム 充電式充電池保護ボードと絶縁テープ付き ESP 32開発ボードと互換性あり Micro JST 1.25 リチウム電池価格:3,668円(税込、送料別) (2023/3/23時点) リチウムイオンのポリマー電池を使うと結構小さいモノになりそうです。2022年 調子に乗ってESP-12Fに手を出しました GoogleSpreadSheet更新機が複数センサからの報告に対応した事もあり、 複数センサを格安で運用すべくパッケージングを考えています。 当初ESP-01Sで検討していましたが、DeepSleep復帰の配線が面倒で断念。 ESP-12Fが自由度が高いという結論になり使用を再チャレンジしました。 「18650電池を直結しても動く」との情報からガッツリ手を抜きました♪ 温度湿度測定器としてSHT10を使ったユニットを作りました。 接続センサーの消費電流・待機電流カット等など将来を見据えて、 必要な時だけFETでON・OFFする仕組みで考えました。 評:一応良い感じじゃないか?と思っています。 機能切換えSWとリセットSWがチョットウザいけど思った以上に シンプルに作れた感じです。 2022年10月5日 ESP8266版も検討してみました 土壌湿度計はESP32でコスト高なのでESP8266版も検討します。 あとエネループについて調べてみました。面白い記事がありました 開発者に聞く、ニッケル水素電池「eneloop」がやっぱりスゴい理由 電池3本運用という事もありイマイチ使いにくいとの結論デス。 確認点 いろいろ検証したところESP8266は18650直結で動作可能な事が判りました。 また電源電圧測定も18650電源電圧測定可能という事もありショッキング。 ADCが不要ならESP32って不要じゃね? などと思いました。 GoogleSpreadSheet更新機を複数データロガーの報告に対応させました。 確認点 折角のGoogleSpreadSheet更新機なので複数センサからの報告を 更新する様に修正しました。2022年 ESP-NOWをひっさげて帰ってきました。 前回の反省点も踏まえ今回ESP-NOWという通信方法を会得したので再検討です。 前回よりの改善点 ・通常待機時はDeepSleepを使用 ・土中湿度計は測定時のみ動作。MOSFETリレーでOFF待機 ・GoogleSpreadSheetは専用の更新機にESP-NOWで報告する様にした ・USB電源と電池の電圧測定を行って駆動電源を判別します。 今回判った問題点 ・ESP-NOWの通信距離を遠ざけると通信が通りにくい 評 電池駆動で長期間センサー値を報告システムとして作ったが一応良さそうな 感触が得られた。屋内で5mを超える通信は途絶気味の問題はあるものの 工夫次第かな?と思う。2021年1月 土中湿度計を作ってみました 2020年末より知り合いの耕作放棄状態な土地を使わせて貰って家庭菜園を 検討する事にしたのですが土中湿度とかの話が出てきたので作ってみました。 リチウム電池用の端子とAD入力もあるのでLolin32Liteに繋いでみました。 18650リチウムイオン電池2本(中古)では1週間程度の駆動期間でした。