智能插座:基于 Arduino 与 RTC 的 120V 定时开关插座
安全警示 ⚠️
本项目涉及 120V 市电,操作前请务必阅读并遵守以下安全规范:
- 使用三芯接地线,仅切断火线 (黑):火线接继电器常开 (NO) 触点,零线 (白) 直通插座银色螺丝,地线 (绿) 直通插座绿色螺丝。
- 必须使用成品继电器模块:含光耦隔离、飞轮二极管、驱动三极管。额定 10A,建议串联保险丝或选用更高额定模块。
- 强弱电物理隔离:继电器模块焊面朝向塑料外壳,高压走线远离低压控制线,防震动导致短路。
- 外壳必须阻燃、绝缘,所有高压接点不可触及。
硬件清单
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控 |
| DS3231M 高精度 RTC 模块 (I²C, ±5ppm) | 1 | 带纽扣电池备份 |
| 单路 5V 继电器模块 (含光耦) | 1 | Elegoo/Keyes SR1y 兼容 |
| 三芯插头线 (美规 NEMA 5-15P) | 1 | 输入端 |
| 单孔插座面板 (NEMA 5-15R) | 1 | 输出端 |
| 面包板/万用板 + 杜邦线 | 1 套 | 原型搭建 |
| USB 数据线 | 1 | 供电/下载 |
| 3D 打印外壳 (STL 见附件) | 1 | 容纳所有电子元件 |
接线指南
低压控制侧
- RTC: SDA → A4, SCL → A5, VCC → 5V, GND → GND
- 继电器模块: IN → D4, VCC → 5V, GND → GND
高压负载侧 (严格按下图)
墙插火线(黑) ──→ 继电器 COM 继电器 NO ──→ 插座铜螺丝(火线侧) 墙插零线(白) ─────────→ 插座银螺丝(零线侧) 墙插地线(绿) ─────────→ 插座绿螺丝(地线)
原理图实物照片见附件,接线务必核对无误再通电。
固件代码
基于 DS3231 库 (官网下载):
#include
int Relay = 4;
DS3231 rtc(SDA, SCL);
Time t;
const int OnHour = 7; // 07:15 开启
const int OnMin = 15;
const int OffHour = 7; // 07:20 关闭
const int OffMin = 20;
void setup() {
Serial.begin(115200);
rtc.begin();
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW); // 默认断开
// 首次运行取消下两行注释设定时间
// rtc.setTime(21, 10, 0);
// rtc.setDate(26, 6, 2018);
}
void loop() {
t = rtc.getTime();
Serial.print(t.hour); Serial.print(" hour(s), ");
Serial.print(t.min); Serial.println(" minute(s)");
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 (±5ppm ≈ ±0.43 秒/天)
- 掉电不丢时,CR2032 电池续航数年
- 串口实时打印时间与继电器状态,便于调试
- 代码极简,易于扩展为多时段、周编程、光控/温控联动
外壳设计
3D 打印外壳 (STL) 采用分体式:底盒固定插座与继电器,盖板固定 Arduino 与 RTC,中间隔离槽实现强弱电布线分离。打印参数:PLA, 0.2mm 层高, 20% 填充。
进阶扩展建议
- 接入 ESP8266/ESP32 实现 WiFi 远程控制、Home Assistant 集成
- 增加电流互感器 (ACS712) 监测负载功率、检测设备异常
- 加入 OLED 显示屏本地显示时间/状态/功率
- 使用双路/四路继电器模块控制多组插座
- 编写 Web 配置界面,替代硬编码定时参数
项目文件
- Arduino 草图 (.ino)
- Fritzing 原理图 (.fzz) 与接线实拍
- 3D 打印外壳 STL
制造工艺
- 基于 Edge Impulse 的 TinyML 语言检测器:Arduino Nano 33 BLE Sense 实战
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- ATtiny85 迷你街机:贪吃蛇 — 打造掌上 OLED 游戏机
- 便携测距仪 DIY 套件:Arduino Nano + HC-SR04 + 18650 电池 + 3D 打印外壳
- 声控氛围灯:Arduino Nano + 麦克风模块 + WS2812B 灯珠
- Arduino Nano + OpenCV 人脸追踪自主机器人小车
- 铜电镀智能系统:基于 Arduino UNO 的可控电解装置
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- 使用 Arduino 移位寄存器创建绚丽灯光序列
- Arduino 智能安防系统:超声波测距 + 舵机扫描 + 声光报警