工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

スマート水漏れ検知・自動遮断バルブ制御システム(Arduino+MQTT対応)

部品と材料

部品数量備考
アルミニウム製エンクロージャ1コントローラ本体用
Arduino UNO1メイン制御ボード
Arduino Ethernet Shield 21ネットワーク通信用
電源ユニット(AC/DC 12V/5V 出力)1バルブ駆動用12V、Arduino用5V
ACハウジング1電源ユニット収納用
LEDキット(抵抗付き)1ステータス表示用(赤・黄・青)
リレー(デュアル5V×1、デュアル12V×1)各1バルブモータ駆動・リミットスイッチ読取用
モータ駆動式ボールバルブ1メイン水道管遮断用(12V DCモータ内蔵)
JSTコネクタセット1配線接続用
水漏れセンサ1検知エリアに複数並列接続可能

プロジェクト概要

友人が外出中に配管破損で地下室の家財を全損した経験から、水漏れ対策の重要性を痛感し、このシステムを開発しました。従来のRaspberry Piベースのシステム(Microsoft IoTコンテスト出品作)とは異なり、Arduinoのようなシンプルなデバイスに単機能を委譲するアーキテクチャを採用しています。各デバイスは自律的に動作し、ネットワーク経由で上位システム(ホームオートメーション等)と連携します。ネットワーク障害時もローカル制御は継続されます。

システムの主な機能

ハードウェア構成と設置例

メイン水道管へのバルブ設置

市水道の減圧弁(写真下部)の直後に、手動バイパスバルブと並列でモータ駆動バルブ(青色)を設置します。通常時は手動バルブを閉じ、モータバルブを開状態にします。停電時は手動バルブを開くことで給水を確保できます。

バルブ内部は12V DCモータで、極性反転により開閉します。リミットスイッチ(全開/全閉)で位置フィードバックを取得します。

コントローラユニット(フロントパネル)

左から:ACプラグ、リセットボタン、ステータスLED×3、センサ/モータ用コネクタ、Ethernetポート、USBポート。

LED表示定義

水漏れセンサ設置例

配管継手周り、給湯器下、洗濯機周辺など、漏水リスクが高い箇所に配置します。複数センサは並列接続され、いずれかが検知するとアラームとなります。

内部配線

エンクロージャ内部にArduino+Ethernet Shield、リレー基板、電源ユニット、端子台を収納。配線はJSTコネクタでモジュール化し、保守性を確保しています。

重要な安全上の注意(必読)

使用しているAC/DC電源は二重出力(12Vと正確に5V)です。 Arduinoの5Vピンに直接給電しているため、AC/DC接続後はArduinoのDCジャックやUSBケーブルを絶対に接続しないでください。 デバッグでUSBを使う場合は、電源線を切った専用ケーブル(データ線のみ)を用意してください。また、ACハウジング〜電源ユニット間は100V商用電源です。感電防止のため、通電中の作業・接触は厳禁です。

ソフトウェア(Arduinoスケッチ)

主なライブラリ:PubSubClient(MQTT)、Ethernet、Timer、avr/wdt.h(ウォッチドッグタイマ)

コードのポイント

// 主な定数・ピン割り当て抜粋
const int WaterDetectorPin = 2;      // 水漏れセンサ(検知でLOW)
const int ToggleButtonPin = 3;       // リセットボタン(押下でLOW)
const int ValveClosedPin = 5;        // 全閉リミット(到達でLOW)
const int ValveOpenedPin = 6;        // 全開リミット(到達でLOW)
const int ValveControl1 = 8;         // リレー1(バルブモータ極性制御)
const int ValveControl2 = 7;         // リレー2(バルブモータ極性制御)
const int SystemLedPin = A0;         // 青LED
const int FaultLedPin = A1;          // 黄LED
const int AlarmLedPin = A2;          // 赤LED
const int mainLoopDelay = 500;       // メインループ周期(ms)
const int mqttInterval = 20;         // MQTT送信間隔(ループ回数)
const int valveTimeOut = 15;         // バルブ開閉タイムアウト(秒)

完全なスケッチは元記事のコード欄を参照してください。setup()でネットワーク初期化→バルブ全開→MQTT購読開始、loop()でセンサ監視→異常時バルブ閉鎖→定期MQTT送信→LED更新を行います。

回路図

スマート水漏れ検知・自動遮断バルブ制御システム(Arduino+MQTT対応)

回路図には、Arduino、Ethernet Shield、リレー駆動回路、バルブモータ接続、リミットスイッチ読取回路、水漏れセンサ並列接続、LED表示回路、電源回路(AC/DC 12V/5V出力)が詳細に記載されています。

まとめ

このシステムは「シンプルなデバイスに単機能を委譲し、ネットワークで協調させる」というIoT設計思想の好例です。Arduino UNOという低コスト・高信頼性のプラットフォームで、水漏れ検知から自動遮断、上位システム連携までを実現しています。リミットスイッチの不安定性への対策(事前当て動作)、デバウンス処理、ウォッチドッグによる自動復帰など、実運用を見据えた堅牢な設計が随所に施されています。住宅の地下室、機械室、サーバールームなど、無人環境での水害対策に最適なソリューションです。

製造プロセス

  1. Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
  2. 自動プール給水・監視システム
  3. Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする
  4. Arduinoと1Sheeldで作る万能Androidリモコン──IR制御で家電を一括操作
  5. Arduino UNOで作るLCDアニメーション&ゲーム入門
  6. スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
  7. Arduino電源制御センター:N-FET/P-FET/リレー/RTC搭載キット
  8. Arduinoオーディオ周波数検出器 – 高感度サウンドモジュールで最大音量ピークの周波数を測定
  9. ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
  10. FirmataとXbox OneコントローラーでArduinoローバーをシームレス操作
  11. 研磨性石灰スラリーシステムではピンチバルブとペリスタルティックポンプがゴールドスタンダード