M5Stamp PICOで雨降り警報器 ~LINEに通知~
静電容量式レインセンサーを使用して雨降り警報器を作成します。雨を検知したら @LINE にメッセージを通知します。
雨検知の原理
センサーに水滴がつくと、センサーの静電容量が(静電容量が大きく)変化します。センサー静電容量を計測すれば、雨(センサーに水滴がついた)を検知出来ます。
静電容量を計測する原理はATTiny85で製作した静電容量計と同じです。
抵抗(2MΩ)とセンサーを直列に接続
センサー両端の電圧を計測します。
雨降り警報器では値の変化が分かればよいので、静電容量を求める必要はありません。
掛けた電圧(4095)の62.33%(2553)になるまでの時間を計測すれば良いです。
雨降り警報器の回路図
原理的に、電圧が安定していないと誤動作するので電圧を安定させる目的でDC-DCコンバータを入れています。
アルカリ電池2本でも動きますが
電池はアルカリ電池なら3本
Ni-Hi電池(エネループ)なら4本付けた方が良いと思う。
電源出力が足りないと、Wi-Fi使用時に電圧不足でハングアップします。
OLEDは128x32ドットの SSD1307を使用
センサーの静電容量が小さい(多分100pF以下)なのと
寄生容量の関係で、個体差が大きいと思われるので
乾燥状態と水滴を付けた状態での、時定数tを観測して
雨と判断する閾値を決める必要があるので
観測時の表示用です。
※普通にUART(COMポート)に接続して、シリアルモニターで観測でも良い気がしてきました。
閾値が決まれば運用時には必要ないので、付け外し出来ようにしておきます。
電池は最初2本でやっていたのですが、後から1本追加しました。
ケースに開けた穴はホットボンドで塞いであります。
LINEへのメッセージ通知
雨を検知した時に、どうやって知らせるかが問題です。典型的な雨降り警報器ではアラームで知らせるようですが、折角Wi-Fiに接続できるのでネット経由でLINEに通知を送ってみます。
LINEに通知を送るために LINE Notify-APIを利用します。
APiを利用するのにトークンが必要なので https://notify-bot.line.me/ja/ にLOGINして、マイページからトークンを発行します。
LINE Notify-API にはHTTPS(443ポート)にアクセスします。
HTTPS接続時にはフィンガープリント(クライアント証明書)が必要ですが、コレを用意するのは面倒なので
WiFiClientSecure :: setInsecure( ) メソッドを使用して「証明書による検証を行わない」設定にします。
この設定を行わないとセキュリティー不備で接続に失敗します。
Notyfi-APIに送信するテキストは▼の形式です
POST /api/notify HTTP/1.1\r\n
Host: notify-api.line.me\r\n
Authorization: Bearer ******\r\n ****はLINEトークン
Content-Length: XXXX\r\n XXXXはトークンの文字数
Content-Type: application/x-www-form-urlencoded\r\n\r\n
message=メッセージ\r\n ArduinoIDEでは文字コードがUTF-8なので、そのまま日本語を記述してOK