【嵌入式实战-15】超详细!ESP32-C3 智能插座(WiFi + 继电器 + 本地控制 + APP 远程 )Arduino完整教程前言
一、项目核心功能
- WiFi 联网:ESP32-C3 连接家庭 2.4G WiFi,支持断电记忆重连
- 远程控制:手机浏览器 / 局域网 APP / 第三方 IoT 平台控制插座通断电
- 本地网页服务:ESP32-C3 自建网页,无需服务器,局域网直接控制
- 继电器驱动:安全控制 220V 市电(务必注意安全!)
- 状态反馈:实时显示插座开关状态
- 拓展性强:可添加定时、电量统计、语音控制等功能
二、硬件准备(清单 + 详解)
| 元器件名称 | 数量 | 作用 | 备注 |
|---|---|---|---|
| ESP32-C3-MINI-1 模块 | 1 | 核心 WiFi 控制单元 | 必备,支持 Arduino 开发 |
| 5V 继电器模块 | 1 | 控制 220V 市电通断 | 低电平触发 / 高电平触发可选 |
| 5V/2A 电源模块 | 1 | 给 ESP32-C3 + 继电器供电 | 必须隔离电源,保证安全 |
| 插座外壳、铜片 | 1 套 | 成品外壳 | 通用智能插座外壳 |
| 杜邦线、焊锡 | 若干 | 接线使用 |
安全警告
- 220V 市电具有高压危险,非专业人士请勿直接接线!
- 调试时先断开市电,仅用 5V 电源测试继电器,功能正常后再接市电!
- 必须使用隔离电源,严禁裸板通电测试!
三、硬件接线(核心!)
本教程使用ESP32-C3 + 低电平触发 5V 继电器(最常用)
接线表
| ESP32-C3 引脚 | 继电器模块引脚 |
|---|---|
| 3.3V/5V | VCC |
| GND | GND |
| GPIO2 | IN(信号引脚) |
说明:
- ESP32-C3 部分引脚输出电流小,推荐用5V 给继电器供电,信号引脚接 3.3V 兼容 GPIO
- 继电器公共端 COM 接火线输入,常开端 NO 接插座火线输出,零线直接直通
四、开发环境搭建(Arduino IDE)
1. 安装 Arduino IDE
官网下载:https://www.arduino.cc/en/software
2. 添加 ESP32-C3 开发板地址
文件 → 首选项 → 附加开发板管理器网址:
https://dl.espressif.com/dl/package_esp32_index.json3. 安装 ESP32 开发板
工具 → 开发板 → 开发板管理器 → 搜索ESP32→ 安装最新版
4. 选择开发板
工具 → 开发板 → ESP32 Arduino →ESP32C3 Dev Module
五、完整代码(可直接复制使用)
代码实现:WiFi 连接 + 本地网页控制 + 继电器开关 + 状态反馈
/* * ESP32-C3 智能插座 完整代码 * 功能:WiFi配网 + 网页远程控制继电器 + 状态显示 * 作者:CSDN博主 */ #include <WiFi.h> #include <WebServer.h> // ===================== 配置区 ===================== const char* ssid = "你的WiFi名称"; // 2.4G WiFi const char* password = "你的WiFi密码"; // WiFi密码 const int relayPin = 2; // 继电器信号引脚 // =================================================== WebServer server(80); // 建立WEB服务器,端口80 // 继电器状态 bool relayState = false; // 主页HTML代码(控制界面) String HTML = "<!DOCTYPE html><html><head><meta charset='utf-8'>" "<title>ESP32-C3 智能插座</title>" "<style>body{text-align:center;margin-top:50px;}" "button{width:200px;height:80px;font-size:30px;margin:20px;}" "</style></head>" "<body><h1>智能插座控制</h1>" "<p>当前状态:%STATE%</p>" "<a href='/ON'><button>打开插座</button></a>" "<a href='/OFF'><button>关闭插座</button></a>" "</body></html>"; // 打开插座 void handleOn() { relayState = true; digitalWrite(relayPin, LOW); // 低电平触发继电器 server.redirect("/"); // 返回主页 } // 关闭插座 void handleOff() { relayState = false; digitalWrite(relayPin, HIGH); server.redirect("/"); } // 主页 void handleRoot() { String state = relayState ? "已开启" : "已关闭"; String page = HTML; page.replace("%STATE%", state); server.send(200, "text/html", page); } void setup() { Serial.begin(115200); // 初始化引脚 pinMode(relayPin, OUTPUT); digitalWrite(relayPin, HIGH); // 初始状态关闭 // 连接WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi连接成功!"); Serial.print("控制地址:"); Serial.println(WiFi.localIP()); // 打印IP地址 // 注册路由 server.on("/", handleRoot); server.on("/ON", handleOn); server.on("/OFF", handleOff); // 启动服务器 server.begin(); Serial.println("WEB服务器已启动"); } void loop() { server.handleClient(); // 处理客户端请求 }六、代码烧录与测试
- 用 Type-C 数据线连接 ESP32-C3 到电脑
- 选择正确端口号
- 点击上传,等待编译 + 烧录完成
- 打开串口监视器,查看WiFi 连接成功的 IP 地址
- 手机 / 电脑连接同一 WiFi,浏览器输入 IP 地址,即可控制插座!
七、进阶功能拓展(加分项!)
1. 配网不写死代码(SmartConfig)
无需修改代码,手机 APP 给 ESP32 配网,适合成品使用。
2. 定时开关功能
添加定时器,实现定时开启、定时关闭、循环定时。
3. 接入阿里云 / 百度云 / 米家
实现外网远程控制(不在家也能控制)。
4. 断电记忆功能
重启后保持上一次的开关状态,不自动复位。
5. 过载保护
添加电流检测模块,过载自动断电。
八、成品组装与优化
- 将模块放入插座外壳,做好绝缘处理
- 电源模块固定牢固,避免短路
- 继电器与市电接线用焊锡加固,套热缩管
- 外壳开孔,方便后续调试
九、常见问题解决
- WiFi 连接失败:仅支持 2.4G WiFi,5G WiFi 无法连接
- 继电器不动作:检查接线、电平触发方式、供电电压
- 网页打不开:确保设备在同一局域网,IP 输入正确
- 串口乱码:波特率设置为 115200
十、总结
本项目基于ESP32-C3实现了低成本智能插座,具备 WiFi 控制、网页远程控制、状态反馈等核心功能,代码简洁易懂,非常适合物联网入门学习。通过拓展,还能实现定时、远程、语音控制等高级功能,可玩性极强!
DIY 智能插座不仅能提升生活便利性,还能快速掌握WiFi 通信、Web 服务器、继电器驱动等核心物联网知识,新手也能轻松上手。
