STM32とラズベリーパイ3で漏水検知システムを構築!
水道料金が水道管からの漏水で40万円もなったことがあった。水道局に掛け合って4万円程度に下げてもらったが、その時対策を聞くと、「水道メーターを毎日チェックするしかありません」とのこと。
電気とか、ガスとか、他のユーティリティなら検出器、遮断器などがあるのに、水は漏れても大した事故に繋がらないと言うのか?ユーザーはその代金を支払うことになるのに・・・。
漏水検知システムの概要
ということで、次のようなシステムを考えてみた。
1.構成は、水道メーターのローターに赤外線反射型センサーを取り付け、ローターが回転する度に反射するパルスをSTM32(マイコン)の割込みピンにて取り込む。
2.STM32では、割込み処理により、その回転数をカウントする。
3.また1秒毎のタイマー割込み処理で、カウント値が増えているかチェックし、増えている時->通水状態、同じ値の時->停止状態の判断をする。同時に、その状態の継続時間が設定時間を越えた場合アラームとしてイベントを発生する。
4.「通水」から「停止」または、その逆「停止」から「通水」への状態変化時、またはアラーム発生時、RS-232cにて接続したノートパソコン(Windows7)に送信する。
5.上記の状態変化時以外にも1秒単位の定時通信で、その時のステータス(状態)を送信する。
6.ノートパソコンは毎分(00秒の時)と、状態変化時点にサーバー(ラズベリーパイ3)へデータを送信する。
7.サーバーでは受信したデータをデータベース(SQLite3)に保存すると共に、WEBサーバーとしてクライアントからの要求に対しリアルタイム情報を提供する。
8.クライアント側としては、ブラウザを用い、サーバーへアクセスし、給水状況などの情報を確認する。
システムは自宅内LAN上に
現状システムは、自宅内LANに全て接続されている。(将来的にはインターネットで自宅サーバーへのアクセスを可能とする予定)
接続は、センサーからSTM32までは5mの有線。STM32からノートパソコンまでは、USBケーブル。ノートパソコンからLANケーブルにてLANに接続。
サーバーは同一エリアのハブからLANケーブルで接続されている。
ブラウザは、他のパソコンやiPADなどで起動し、サーバーに接続する。
画面例
画面は3画面用意した。画面上半分は共通で、現状の通水状態、その継続時間、アラーム発生復帰状態を表している。
ひとつは1日の通水状態を1時間単位の棒グラフにて表示。
二つ目は各時間帯での通水状況を秒単位で、かつその通水強度(ローターの回転数に比例した値)を色分けして表示。
そして最後に、通水状態が10分を越えた時、また停止時間が30分を越えた時とその復帰時に警報として表示する画面。
この時同時にE-メールで予め設定しておいたアドレスに通知する。
画面1:過去24時間の通水状況表示

上部は現在の通水状況を示している。この画面は現在通水状態で、1.665kp/s(秒当りのパルスカウント値)を示し、通水の継続時間が3分18秒であると示している。
下部の棒グラフは、過去24時間における各時間帯での通水時間を縦棒グラフで示している。
画面2:任意の時間における通水状況表示

グリーンは停止時を、黄色から赤のカラーコードは、ローターの回転を強度として色分けし通水状況を示している。
画面は朝9時の時間帯を示しており、食事とか洗い物など頻繁に水を使っている状況が分かる。
画面3:アラーム履歴表示

通水時間が設定値を越えた場合(つまり、連続で水道水が流れた場合)、警報として赤で表示している。
一方、停止時間が設定値を越えた場合、通知として黄色で表示している。(復帰しない場合、何かのセンサー異常が考えられる)
また、復帰時には、ともに緑色で表示している。 過去最大8件を表示。