Arduino Mega と IoT センサによる高機能ホームモニタリングシステム
概要
Arduino Mega 2560 と Ethernet シールドを核に、浸水検知、停電検知、温湿度、水位(超音波)、汎用接点入力 5 系統を統合監視するホームモニタリングシステムです。ローカル表示用 4×20 LCD と 8 系統の LED アナウンシエータ、Web インターフェース(LAN 内のみ)、Pushingbox 経由のメール通知機能を備えます。
システム構成
| 機能 | センサ/デバイス | 接続 |
|---|---|---|
| 浸水検知 | ドライ接点 | ピン 28 |
| 停電検知 | ドライ接点 | ピン 30 |
| 温湿度 | DHT22 | ピン 5 |
| 水位(集水坑) | HC-SR04 超音波 | Trig: 8, Echo: 6 |
| RTC | DS3231 | I²C (SDA: 20, SCL: 21) |
| 汎用入力 1〜5 | ドライ接点 | ピン 32, 34, 36, 38, 40 |
| リセットボタン | タクトスイッチ | ピン 42 |
| 通知 ON/OFF | タクトスイッチ | ピン 44 |
| ステータス LED | 8 系統(琥珀/緑/消灯) | ピン 18〜49 |
| メッセージ LED | 単色 LED | ピン 17 |
| LCD | 4×20 I²C | SDA: 20, SCL: 21 |
主な機能
- リアルタイム監視: 全センサ値を 3 秒間隔で取得・表示
- アラーム判定: 水位 10 インチ未満、各接点入力のクローズを検知
- LED アナウンシエータ: 琥珀=アクティブ、緑=過去にアラームあり(リセットで消灯)、消灯=正常
- Web ダッシュボード: LAN 内からアクセス可能。jqPlot で時系列グラフ、ゲージで現在値表示
- メール通知: Pushingbox API 経由。アラーム発生時 5 分間隔で送信(通知 ON 時のみ)
- セキュリティ配慮: ポートフォワーディング不要の LAN 完結構成
ハードウェア実装
- Eagle CAD でインターフェース基板とアナウンシエータ基板を設計、OSH Park で製造
- インターフェース基板: 7 接点入力、DHT22、RTC、超音波センサを Arduino に集約
- アナウンシエータ基板: 8 系統の二色 LED とリセット/通知スイッチを実装
ソフトウェアアーキテクチャ
Arduino 側(C++)
- メインループで各センサ読み取り、アラーム判定、LED 制御、Web サーバ応答、通知送信を順次実行
- Ethernet ライブラリで JSONP 形式の REST エンドポイント(ポート 1000)を提供
- SD カードから
index.htmを配信 - Pushingbox へ HTTP GET で通知送信(DevID 方式)
Web ダッシュボード(JavaScript)
- jQuery + jqPlot で時系列チャート(水位、温度)
- Gauge.js でアナログメータ風ゲージ表示
- 3 秒ごとに AJAX/JSONP でデータ取得、チャートとゲージを更新
- センサステータスをテキストエリアにリアルタイム反映
配線制約(重要)
Ethernet シールド使用時、ピン 4, 7, 10, 11, 12, 13, 50, 51, 52, 53 は使用不可。本プロジェクトではこれらを避けてピンアサインしています。
今後の拡張余地
- Wi-Fi シールドへの移行(ピン 17 変更必要)
- SD カードへのデータロギング機能追加
- MQTT ブローカー連携によるクラウド統合
- スマートフォンアプリからの操作対応
製造プロセス
- 血圧計:設計、製造、将来動向
- 家庭用の低コストワイヤレスセンサーネットワークを構築
- Raspberry Piダッシュボードで家庭の温度を監視する
- Raspberry Piで構築するホームオートメーションシステム:リモート制御対応
- 自宅で作るDIY宿題自動筆記マシン:AxiDraw風ペンプロッターの自作ガイド
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- 給湯器パイロットライト監視システム - サーモカップル電圧をArduinoとRaspberry Piで監視し異常通知
- 自律型ホームアシスタントロボット「O'nine」の構築 – ROS、Alexa、ロボットアーム完全ガイド
- Alexa対応Arduinoホームコントローラー:音声でスマートホーム自動化
- Arduino NanoとMAX30102で心拍数モニターを自作:16x2 LCD表示対応