Windows 10 IoT Core + Raspberry Pi + Arduino 实现家庭插座自动化控制
组件与物料清单
| 组件 | 数量 |
|---|---|
| Raspberry Pi 2 Model B | 1 |
| XBee 模块 | 2 |
| Arduino UNO | 1 |
| FTDI 转接线 | 2 |
| 4 路继电器扩展板 | 1 |
| SparkFun XBee Shield | 1 |
所需工具与软件
- XCTU(XBee 配置工具)
- Visual Studio 2015+
- Arduino IDE
- Microsoft Azure
- Windows 10 IoT Core
项目简介
引言
本项目演示如何使用运行 Windows 10 IoT Core 的 Raspberry Pi、XBee 无线模块和 Arduino,实现家庭插座的本地与云端双模式控制。所有代码已开源至 GitHub。
为什么要自动化插座?
控制插座而非单个设备,可让任意家电接入自动化体系。项目以风扇和灯为例演示。
XBee 无线通信模块配置
采用两个 XBee 模块:一个作为 Coordinator(协调器)连接 Raspberry Pi,另一个作为 Router(路由器)连接插座端 Arduino。Coordinator 根据用户指令发送无线信号给 Router 控制继电器。
AT 模式配置 XBee
- 下载安装 XCTU。
- 使用 FTDI 适配器更新 XBee 固件。
- 参考视频教程完成 AT 模式配置,确保两模块可互通。
接收端(插座侧)搭建
所需硬件: XBee Router、Arduino UNO、XBee Shield、4 路继电器扩展板。
Arduino 代码
接收 Coordinator 发送的串口指令:
- "ON1" → 闭合继电器 1
- "ON2" → 闭合继电器 2
- "OFF1" → 断开继电器 1
- "OFF2" → 断开继电器 2
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.readString();
Serial.println(state);
}
if (state == "ON1\r\n") digitalWrite(RELAY1, HIGH);
else if (state == "ON2\r\n") digitalWrite(RELAY2, HIGH);
else if (state == "OFF1\r\n") digitalWrite(RELAY1, LOW);
else if (state == "OFF2\r\n") digitalWrite(RELAY2, LOW);
else {
digitalWrite(RELAY1, LOW);
digitalWrite(RELAY2, LOW);
}
}
高压插座接线(⚠ 高压危险,操作需极度小心)
继电器本质是电控开关,可接通/切断 110–240V 市电。建议使用延长线插座改装:保留一根火线完整,另一根火线剪断,分别接入继电器的 COM(公共端)和 NO(常开端)。



将继电器扩展板堆叠在 Arduino 上,XBee Shield 再堆叠在继电器板上,插入配置为 Router 的 XBee。使用外部电池供电 Arduino,接收端完成。
服务端(Raspberry Pi 侧)搭建
需 Raspberry Pi 2 运行 Windows 10 IoT Core,Coordinator XBee 通过 FTDI 适配器 + 6 针 USB 线连接 Pi 的 USB 口。
在 Pi 上搭建 UWP Web 服务器,监听用户请求,通过串口向 Coordinator XBee 发送指令。XBee 将指令以无线电波发送给 Router 端。

参考视频教程搭建 Web 服务器。FTDI 驱动移植参考:GitHub。
接入 Azure 云服务
实现全球远程控制:
- 在 Azure 创建网站托管 Web 应用。
- 创建 Azure SQL Database 处理用户认证授权。
- 创建 Azure 表存储存储控制指令,Pi 端轮询处理。
演示
两种控制方式:
- 局域网内直接访问 Pi 的 Web 服务器地址。
- 通过部署在 Azure 的 ASP.NET 5 Web 应用远程控制。
总结与应用场景
- 结合光敏/人体红外传感器,实现节能自动开关灯。
- 老年人可用遥控器/射频卡控制插座。
- 定时任务自动开关,节约电能。
- 入侵检测联动全屋照明报警。
- 度假一键断电全屋。
- 按需控制空调/暖气,避免无人时长时间运行。
代码:继电器控制 (C/C++)
#define RELAY1 7
#define RELAY2 5
String state = "OFF";
void setup() {
Serial.begin(9600);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.readString();
Serial.println(state);
}
if (state == "ON1\r\n") digitalWrite(RELAY1, HIGH);
else if (state == "ON2\r\n") digitalWrite(RELAY2, HIGH);
else if (state == "OFF1\r\n") digitalWrite(RELAY1, LOW);
else if (state == "OFF2\r\n") digitalWrite(RELAY2, LOW);
else {
digitalWrite(RELAY1, LOW);
digitalWrite(RELAY2, LOW);
}
}
原理图

制造工艺
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- Windows IoT + 树莓派打造人脸识别智能门锁
- Windows 10 IoT Core 上基于 SHT15 的精准温湿度监测
- 树莓派 3 Model B+ 安装 Windows 10 IoT Core 完整步骤指南
- 在树莓派 2 上用 Windows 10 IoT Core 构建语音控制机器人
- 在树莓派 3 上扩展 GoPiGo v2 的 Windows 10 IoT Core 应用
- 基于 Arduino 与 MAX30100 的实时物联网心率监测系统
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- 通过 Arduino IoT Cloud 用 Alexa 控制电视:分步指南
- Azure IoT智能游泳池监控系统:温度感知与远程控制
- 从 PLCnext 云数据创建 Power BI 仪表板
- 驾驭物联网:加速数字化转型的即时数据战略