Bluetooth接続で実現するスマートホームオートメーション
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | 制御用マイコン |
| リレーモジュール (汎用、4ch以上推奨) | 1 | 家電制御用 |
| Bluetoothモジュール (HC-05/06等、BLE可) | 1 | スマホとの通信用 |
| 電球/照明器具 (テスト用) | 1 | 負荷例 |
必要な工具
- はんだごて
使用ソフトウェア
- Arduino IDE
- スマホアプリ: "Bluetooth Controller" (Google Play等で入手)
プロジェクト概要
ArduinoとBluetoothモジュールを用いて、スマートフォンから家電機器を無線制御するシンプルなホームオートメーションシステムです。リレーモジュールを介してAC100V機器のON/OFFを制御できます。
回路設計
Bluetoothモジュール (HC-05/06等) は4ピン: VCC, TX, RX, GND。
- VCC → Arduino 5V (モジュール内蔵3.3Vレギュレーター経由で動作)
- GND → Arduino GND
- TX (Bluetooth) → RX (Arduino D0) ※クロス接続
- RX (Bluetooth) → TX (Arduino D1) ※クロス接続
Bluetoothモジュールは3.3V動作ですが、Arduino UNOのTX出力は5Vです。
Arduino TX (D1) → Bluetooth RX 間に 分圧抵抗 (10kΩ + 20kΩ) を挿入し、3.3Vレベルに降圧してください。
逆にBluetooth TX → Arduino RX は3.3V出力がArduinoのVIH (約3V) を満たすため直接接続可能です。
リレーモジュール接続
- VCC → 5V, GND → GND
- IN1→D2, IN2→D3, IN3→D4, IN4→D5 (アクティブLOWの場合多い)
- リレーCOM→AC電源側, NO→負荷側 (電球等)
動作フロー
- 電源投入 → BluetoothモジュールのLEDが点滅 (ペアリング待ち)
- スマホで「Bluetooth Controller」アプリ起動、モジュールとペアリング (初回のみPIN: 1234或いは0000)
- ペアリング成功でLEDが点灯 (常時点灯)
- アプリでボタンを設定: 各負荷用のキーと送信文字列を割り当て (例: 「Light ON」→ "light on")
- ボタン押下で文字列送信 → Arduino受信 → 対応リレー制御
アプリダウンロード: Google Driveリンク (またはPlay Storeで"Bluetooth Controller"検索)
Arduinoスケッチ
SoftwareSerialを使用し、ハードウェアシリアル (D0/D1) をデバッグ用に確保する構成も可能ですが、ここではハードウェアシリアルをBluetooth通信に使用しています (書き込み時はBluetoothモジュールを外すか、SoftwareSerial版を推奨)。
#include <SoftwareSerial.h>
// SoftwareSerial推奨: D10=RX, D11=TX 等でBluetooth接続し、ハードウェアSerialはデバッグ用に確保
SoftwareSerial BT(10, 11); // RX, TX
String command;
void setup() {
BT.begin(9600);
Serial.begin(9600); // デバッグ用
pinMode(2, OUTPUT); // リレー1 (照明等)
pinMode(3, OUTPUT); // リレー2 (スタンド等)
pinMode(4, OUTPUT); // リレー3 (扇風機等)
pinMode(5, OUTPUT); // リレー4 (ロック/開錠等)
// 初期状態: 全OFF
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
void loop() {
// Bluetoothから文字列受信
while (BT.available()) {
delay(10); // 安定待ち
char c = BT.read();
command += c;
}
if (command.length() > 0) {
Serial.println(command); // デバッグ出力
if (command == "light on") digitalWrite(2, HIGH);
else if (command == "light off") digitalWrite(2, LOW);
else if (command == "lamp on") digitalWrite(3, HIGH);
else if (command == "lamp off") digitalWrite(3, LOW);
else if (command == "fan on") digitalWrite(4, HIGH);
else if (command == "fan off") digitalWrite(4, LOW);
else if (command == "open") digitalWrite(5, HIGH); // 解錠
else if (command == "lock") digitalWrite(5, LOW); // 施錠
else if (command == "all on") {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
else if (command == "off") { // 全OFF
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
command = ""; // バッファクリア
}
}
回路図
改良・拡張のアイデア
- 状態フィードバック: 現在のリレー状態をBluetooth経由でアプリに送信し、UIに反映
- タイマー/スケジュール機能: RTC (DS3231) 追加で時刻ベース制御
- センサー連携: 温湿度センサー (DHT22)、人感センサー (PIR)、照度センサーで自動制御
- 音声制御: Google Assistant / Alexa 連携 (IFTTT、MQTTブローカー経由)
- Wi-Fi化: ESP8266/ESP32への移行でLAN/インターネット経由制御、OTA更新対応
- 安全機能: 過電流検知、温度監視、フェイルセーフ (通信途絶時のデフォルト動作)
- ケース化: 専用エンクロージャに収め、壁面取り付け可能に
注意事項
- 高電圧危険: AC100V配線は感電・火災リスクがあります。電気工事士資格者による施工、またはプラグタップ型リレー製品の使用を強く推奨します。
- Bluetooth距離: Class 2で見通し10m程度。壁越えは厳しいです。全宅制御ならWi-Fi/メッシュネットワーク推奨。
- ペアリング: アプリによってUIが異なります。汎用の「Bluetooth Terminal」アプリでも文字列送信テスト可能です。
- SoftwareSerial使用時: 9600bps以上では信頼性が下がる場合があります。ハードウェアシリアル使用時はスケッチ書き込み前にBluetoothモジュールを外してください。
製造プロセス
- Raspberry Piで構築するホームオートメーションシステム:リモート制御対応
- Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
- Pixie: Arduino Pro Miniで作るNeoPixel腕時計 - アナログとデジタル融合のDIY光る時計
- ホームオートメーション制御のための堅牢な物理インターフェース
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduino Nanoと128x64 OLEDで実行するセルラーオートマトン「ライフゲーム」
- 自律型ホームアシスタントロボット「O'nine」の構築 – ROS、Alexa、ロボットアーム完全ガイド
- Alexa対応Arduinoホームコントローラー:音声でスマートホーム自動化
- Arduino + Windows IoT + Azure クラウドによる高度な転倒検知システム
- Arduino Mega と IoT センサによる高機能ホームモニタリングシステム
- スマートホームテクノロジーが日常生活をどう変えるか