Arduino 製スマートプラグ - 120V 対応、RTC 内蔵で時刻制御可能なインテリジェントコンセント
概要
Arduino UNO と 1 チャンネルリレーモジュール、DS3231 高精度 RTC を組み合わせ、設定時刻に自動で ON/OFF する 120V 対応スマートプラグを自作します。照明等の低電力負荷向け。安全性を重視した配線・筐体設計を解説します。
⚠️ 重要な安全上の注意(必読)
- アース付き 3 芯コードを使用し、ホット線(黒)のみをリレーで遮断
ネUTRAL 線(白)とアース線(緑)は直結。コンセントの金ネジ(ホット側)にリレー NO 接点、銀ネジ(ニュートラル側)に白線、緑ネジ(アース)に緑線を接続。 - リレーモジュールを使用(ディスクリートリレー非推奨)
フライバックダイオード、駆動トランジスタ、ベース抵抗が実装済みのモジュール(Elegoo/Keyes SR1y 互換等)を使用。定格 10A 以内の負荷に限定、またはホット線にヒューズ追加。フォトカプラ内蔵タイプならさらに安全。 - 高圧部と低圧部の物理的分離
プラスチックケース内でリレーモジュールを高圧配線から離して固定。リレー基板のハンダ面をケース側に向け、振動・衝撃で低圧配線が高圧部に接触しないよう配慮。 - 120V のみ対応。200V/240V では絶縁距離・部品定格が不足
必要な部品
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| 1 チャンネル 5V リレーモジュール | 1 | フライバックダイオード内蔵タイプ |
| DS3231 RTC モジュール(I²C) | 1 | CR2032 バックアップ電池付き |
| ブレッドボード / ユニバーサル基板 | 1 | 最終的には基板化推奨 |
| ジャンパワイヤ | 1 式 | |
| USB ケーブル (A-B) | 1 | 書き込み・給電用 |
| 3P 電源コード(アース付き) | 1 | プラグ側・コンセント側両方 |
| コンセント本体(120V 15A 定格) | 1 | パネルマウント型推奨 |
| プラスチックプロジェクトケース | 1 | 難燃性・十分な内部容積 |
| LED 電球等のテスト負荷 | 1 | 動作確認用 |
配線図
プロジェクトページの Schematics セクション参照。要点:
- Arduino D4 → リレー制御入力(IN)
- Arduino A4 (SDA), A5 (SCL) → DS3231 SDA, SCL
- Arduino 5V, GND → リレー VCC, GND / DS3231 VCC, GND
- 電源コード黒線 → リレー COM、リレー NO → コンセント金ネジ
- 電源コード白線 → コンセント銀ネジ、緑線 → コンセント緑ネジ
スケッチ(コード)
RTC ライブラリ(Rinky-Dink Electronics 版)を使用。設定時刻は定数で定義(将来的には EEPROM やメニューで変更可能に拡張推奨)。
#include <DS3231.h>
int Relay = 4;
DS3231 rtc(SDA, SCL);
Time t;
const int OnHour = 7; // 07:15 ON
const int OnMin = 15;
const int OffHour = 7; // 07:20 OFF
const int OffMin = 20;
void setup() {
Serial.begin(115200);
rtc.begin();
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW); // 初期状態 OFF
// 初回のみ時刻設定(書き込み後コメントアウト)
// rtc.setTime(21, 10, 00);
// rtc.setDate(26, 6, 2018);
}
void loop() {
t = rtc.getTime();
Serial.print(t.hour); Serial.print(" hour(s), ");
Serial.print(t.min); Serial.print(" minute(s)");
Serial.println();
delay(1000);
if (t.hour == OnHour && t.min == OnMin) {
digitalWrite(Relay, HIGH);
Serial.println("LIGHT ON");
}
else if (t.hour == OffHour && t.min == OffMin) {
digitalWrite(Relay, LOW);
Serial.println("LIGHT OFF");
}
}
ライブラリ導入
DS3231 ライブラリ(Rinky-Dink Electronics) をダウンロードし、Arduino IDE で ZIP インストール。
筐体・組み立て
- プロジェクトページの CAD セクションにケース設計画像あり
- コンセントをパネルマウント、Arduino とリレーを内部固定
- 配線は絶縁チューブ・熱収縮チューブで保護
- 通気孔を設け、リレー発熱を放熱
- 表示用 LED(電源/リレー状態)をケース前面に配置すると便利
拡張アイデア
- 複数時刻スケジュール(平日/休日、複数 ON/OFF)
- 照度センサ連動(暗くなったら ON)
- Bluetooth/Wi-Fi 追加でスマホから遠隔操作・スケジュール変更
- 消費電力モニタリング(CT センサ追加)
- ESP8266/ESP32 への移行でスタンドアロン IoT デバイス化
動作確認
- USB 接続でスケッチ書き込み、シリアルモニタで時刻確認
- RTC 時刻がズレている場合はセットアップの設定行を一時的に有効化して書き込み
- 設定時刻(デフォルト 07:15/07:20)になるとリレーがカチッと動作、負荷が ON/OFF
- シリアルモニタに "LIGHT ON"/"LIGHT OFF" が表示されることを確認
製造プロセス
- TinyML言語検出器:Edge ImpulseとArduino Nano 33 BLE Senseで「はい」を多言語判別
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- Arduino Nanoで37LEDルーレットゲームを自作:ヨーロピアンスタイル完全再現
- ATtiny85ミニアーケード:スネークゲーム - 手のひらサイズOLEDゲーム機の製作
- ポータブル距離検出器:Arduino Nano自作キット(HC-SR04、18650電源、3Dプリントケース付き)
- Arduino Nanoで作る音声反応デスクライト:音楽に合わせて光るイルミネーション
- Arduino Nano と OpenCV で実現する自律顔追跡ロボットカー
- 銅メッキプロジェクト:Arduino UNOで作るスマート電気メッキシステム
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
- Arduinoシフトレジスタで美しい光のシーケンスを作成