ホームオートメーション制御のための堅牢な物理インターフェース
必要な部品と材料
| 部品 | 数量 |
|---|---|
| TowerPro SG90 サーボ | 3 |
| 小型ヒンジ | 2 |
| タクトスイッチ (モーメンタリ) | 2 |
| Arduino Yun (または Uno + Ethernetシールド) | 1 |
| 100A 電流トランス (YHDC SCT-013-000) | 1 |
| 抵抗・コンデンサ各種 | 7 |
プロジェクト概要
多くのホームオートメーションはスマホアプリなどの「バーチャルインターフェース」に依存しています。外出先では便利ですが、家の中ではわざわざアプリを開いて状態を確認するのは手間で、直感的ではありません。
そこで**「物理インターフェース」**を作りました。実物の家を模した小さな模型ハウスをコーヒーテーブルやデスクに置き、ガレージドアが開いていれば模型のドアも開き、電力消費が多ければメーターの針が振れ、照明がつけっぱなしならLEDが光る。一目で家の状態が把握できます。
システム構成
- 模型ハウス - サーボ駆動ドア×2、電力メーター用サーボ×1、照明表示LED×1、操作ボタン×2 をArduinoで制御
- MQTTブローカー (Mosquitto) + OpenHAB - Raspberry Pi上で稼働。センサーデータ収集、スマホアプリ用UI、ルールエンジンを提供
- センサーノード - 実家の各所に設置し、ドア/窓開閉、電力消費、照明状態をMQTTへ公開
- アクチュエーター - 模型のボタン操作で実家の照明ON/OFF、ガレージドア開閉を実行
模型ハウスのArduinoはMQTTトピックを購読し、サーボ/LEDを駆動。ボタン押下時は対応トピックへコマンド送信。OpenHABは必須ではないが、スマホ連携と高度なルールのために併用。
Part 1: 模型ハウス製作
Step 1: 構造製作
段ボール箱をベースに、屋根・ドア・窓を工作。ヒンジと両面テープでドアを取り付け、サーボアームで開閉。ガレージドアはサーボで押し上げ、重力で閉鎖。玄関ドアは糸で引く方式。電力メーターはサーボアームに矢印、背景に目盛りシール。赤色LEDで照明状態表示。ボタン2個 (照明/ガレージ) を側面に取り付け。
Step 2: 配線とコード
ピン割り当て:
- D7: MQTT接続ステータスLED
- D4: 照明状態LED
- D3: サーボ1 (玄関ドア)
- D5: サーボ2 (ガレージドア)
- D6: サーボ3 (電力メーター)
- D8: ボタン1 (照明ON/OFF)
- D9: ボタン2 (ガレージ開閉)
コントローラー選択: Arduino Uno + Ethernetシールド (約$20) または Arduino Yun (約$65, Wi-Fi内蔵)。YunはBridgeライブラリでLinux側と通信し、Wi-Fi接続が容易。両方のスケッチを提供 (ボタン機能はYun版のみ)。
スケッチ: smarthome_ethernet.ino, smarthome_yun.ino
Part 2: 入力 (センサー)
Step 3: センサー - 電力監視
OpenEnergyMonitorライブラリ (EmonLib) を使用。100A電流トランス (SCT-013-000) を分電盤の一相にクランプ。負荷抵抗33Ω (手元になかったため68Ω×2並列)、分圧抵抗10kΩ、整流用コンデンサ10μF (22μF×2直列で代用)。Arduino Yunで実効電流(Irms)を計算し、10秒ごとにMQTTへ公開 (トピック 2852: ワット, 2853: アンペア)。
実測値は市販クランプメーター比で常に+1Aのオフセットあり。コードで補正。
OpenHAB連携
// Items
Number itm_smarthome_energy_amps "Energy (amps) [%.1f]" {mqtt="<[mymosquitto:2853:state:default]"}
Number itm_smarthome_energy_watts "Energy (Watts) [%.1f]" {mqtt="<[mymosquitto:2852:state:default]"}
// Sitemap
Text label="Energy" icon="firstfloor" {
Frame label="Energy Usage" {
Text item=itm_smarthome_energy_amps
Text item=itm_smarthome_energy_watts
Chart item=itm_smarthome_energy_watts period=h refresh=5000
}
}
// Persistence (rrd4j.persist)
Strategies { everyMinute : "0 * * * * ?" }
Items {
itm_smarthome_energy_watts : strategy = everyUpdate
// 他アイテム...
}
Step 4: センサー - DIY無線センサーノード
過去プロジェクトの $5無線トランシーバー (nRF24L01+等) + MQTTゲートウェイを流用。ガレージドア状態と照度センサー (照明つけっぱなし検知) に使用。見た目が悪いのでガレージ内設置に留め、室内ドア/窓用には市販の見栄え良いセンサー (次ステップ) を採用。
Step 5: センサー - Wink Hub & Tripper接触センサー
Wink Hubをルート化し、PHPエクスプロイト経由でローカルAPI (aprontest) にアクセス。これによりクラウド経由せずローカルLAN内でセンサー状態取得・照明制御が可能に。Raspberry Pi上でPHPスクリプトを定期実行し、Wink Tripper (リードスイッチ) 2個の状態をOpenHAB REST API経由で更新 → OpenHABがMQTTトピック公開 → 模型ハウスが購読してドア開閉反映。
必要なOpenHAB設定ファイル (items, sitemap, rules) とPHPスクリプト (polling.php) を提供。
Part 3: 出力 (アクチュエーター)
Step 6: 出力 - 照明制御
Wink Hub対応球 (Cree Connected, GE Wink等) を制御。模型のボタン1押下 → MQTTトピック送信 → OpenHABルール → Wink Hub経由で球ON/OFF。照度センサーで実球の状態も模型LEDに反映。
Step 7: 出力 - ガレージドアオープナー
別途Arduino + Ethernetシールド + リードリレー + 予備リモコンで自作。ArduinoがMQTTトピック購読し、開閉コマンド受信でリードリレーを瞬間励磁 → 予備リモコンのボタンをショート → ガレージドア作動。超音波センサーでドア位置検知し、状態をMQTTへフィードバック (模型と同期)。音声アナウンス機能もルールで追加可能。
Step 8: その他の考察・拡張性
- コントローラーは Arduino, Raspberry Pi, SparkCore 等何でも可。MQTTへデータを流せればよい。
- DIYセンサーは ESP8266 単体でも構築可能。
- Z-Wave USBスティックをOpenHABに挿せば Z-WaveセンサーもMQTTブリッジ可能。
- Wink Hubをルート化したくない場合は公式API経由でポーリングし、MQTT/OpenHABへ橋渡しも可能。
- 「最小共通分母のハードウェア (Arduinoと段ボール)」で始め、必要に応じて拡張するアプローチを推奨。
提供コード
- smarthome_yun.ino - 模型ハウス制御 (Yun版、ボタン対応)
- smarthome_ethernet.ino - 模型ハウス制御 (Uno+Ethernet版)
- energy_monitor_yun.ino - 電力監視ノード (Yun版)
スケッチ内のMQTTブローカーIP、トピック名は環境に合わせて書き換え必要。
回路図
製造プロセス
- 妊娠検査薬:仕組み、設計、そして未来
- Raspberry Piで構築するホームオートメーションシステム:リモート制御対応
- 1Sheeldで作るスマートホーム自動化&セキュリティシステム
- プレス自動化完全ガイド:技術・安全性・効率向上のポイント
- Labman Automation:産業横断的なオーダーメイドロボットソリューションのパイオニア
- 産業オートメーション4.0:生産効率に革命をもたらす
- スマートホームテクノロジーが日常生活をどう変えるか
- IoTとホームオートメーション:明日のスマートライフを形作る
- C#インターフェイスをマスターする:定義、実装、実践的なユースケース
- C#のインターフェース:堅牢なオブジェクト指向設計のための契約定義
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス