ESP32 で雨の降り始めを LINE 通知

雨の降り始めを検出するセンサーを ESP32 で作ってみました.

はじめに

以前 『ESP32 の ULP を活用したワイヤレス雨量計』を作りましたが,ししおどしの仕組みで計測する仕組みなので,ある程度雨が本降りになるまで雨を検出できません.

そこで,ESP32 のタッチセンサー機能を活用して雨滴そのものを検出するセンサーを作ることにしました.

原理

ESP32 には静電容量式のタッチセンサー IF が搭載されています.本来は次のようにして使います.

ESP32 の動作としては,一定期間に特定の電圧になるまで充放電を繰り返させ,そのサイクル数をカウントして出力します.静電容量が増えると充放電にかかる時間が長くなり,一定期間に充放電できる回数が減ります.そのため,カウント数をモニタすることで静電容量の変化が読み取れます.

タッチセンサー IF の先に雨滴で静電容量が変化する雨滴センサーを接続すれば,雨の検出を行うことができます.

必要な部品

AliExpress で入手するもの

Single PCB board raindrop module

心臓部となる雨滴を検出するセンサーです.安っぽいので,ちゃんと長期間機能するか心配だったのですが,問題なさそうです.
10枚もいらないと思いますが,送料込みで400円ほどなので,お値打ちです.


Amazon で入手するもの

コニシ 強力補修テープ ボンド ストームガード クリヤー

雨滴センサーを保護するシートです.使わなくてもセンシングはできますが,ある程度耐久性を確保したい場合,なんらかのカバーをセンサーの上に配置した方が良いです.


信越 一般工業用RTVゴム 100g 透明 KE45-100TM

シリコーンゴムです.センサーは長期間屋外に設置することになるので,これを使って隙間を埋めておきます.


回路

回路は簡単.ESP32 の GPIO14 は TOUCH_PAD_NUM6 に対応しているので,この先に雨滴センサーを接続します.雨滴センサーの残った方の端子は GND に接続します.

私の場合,『太陽電池と電気二重層コンデンサによる ESP32 駆動』で作ったものに組み込んだので,全体の見た目は次のような形になりました.

ソフト

ESP32 のソフト全体は github に esp32_raindrop という名前で上げてあります.

タッチセンサー関連の処理は下記の部分になります.

touchpad_init() で初期化を行い, touchpad_sense() でセンシングを行っています.設定としては,10ms の期間で 0.5V と 2.7V の間を充放電させるようにしています.割とノイズが入るので,安定した結果を得るために5回計測を行って中央値を採用しています.

出力例

センサーの出力は下記のような感じになります.晴れているときは 400 近くあるのですが,雨が降ってくると 350 未満になります.

立ち下がっている部分を拡大すると次のようになります.●印が実際にセンサーが出力したポイントで,1分間隔になっています.これを見ると雨が降り始めてから5分もたたないうちに出力値が大きく変わっていることがわかります.

なお,静電容量は雨だけでなく温度や埃でも多少変動しますが,これまで半年以上様子を見た感じでは雨ほどの大きな変化はなく,あまりに気にしなくて良さそうです.

過去7ヶ月分のデータは次のような感じでした.

LINE による通知

雨の降り始めを検出できたので,次はスマホに通知してみます.

センシングしたデータは InfluxDB に突っ込んでいるので,REST API でデータを取り出し,雨の降り始めていれば LINE Notify で通知することにします.また,せっかくなので通知の際に気象庁の雨雲レーダの情報も添付しようと思います.

コード全体は次のようになります.

InfluxDB の場合,データが無い期間は None が帰ってくるので,そこだけ気をつけてやれば難しくはないと思います.

このスクリプトを CRON で定期的に動かしておけば,雨が降り始めた際に,次のような通知が来ます.

応用編

雨滴センサーの出力は,雨滴センサーの上に水滴があるかどうかで変わるので,雨が降り止んでもまだ乾ききらない間はずっと小さい値を出力してくれます.

そこで,以前作成した『Raspberry Pi による「本格」水やりシステム (ソフト編)』の制御にこの特性を活用することで,無駄な水やりを省くようにしています.

まとめ

ESP32 のタッチセンサー IF を活用すると簡単に雨の降り始めを検出することができます.ESP32 の低消費電力を活用して太陽電池駆動にすれば,メンテナンスフリーで運用できるのでお勧めです.