当前位置: 首页 > news >正文

【嵌入式实战-15】超详细!ESP32-C3 智能插座(WiFi + 继电器 + 本地控制 + APP 远程 )Arduino完整教程前言

一、项目核心功能

  1. WiFi 联网:ESP32-C3 连接家庭 2.4G WiFi,支持断电记忆重连
  2. 远程控制:手机浏览器 / 局域网 APP / 第三方 IoT 平台控制插座通断电
  3. 本地网页服务:ESP32-C3 自建网页,无需服务器,局域网直接控制
  4. 继电器驱动:安全控制 220V 市电(务必注意安全!)
  5. 状态反馈:实时显示插座开关状态
  6. 拓展性强:可添加定时、电量统计、语音控制等功能

二、硬件准备(清单 + 详解)

元器件名称数量作用备注
ESP32-C3-MINI-1 模块1核心 WiFi 控制单元必备,支持 Arduino 开发
5V 继电器模块1控制 220V 市电通断低电平触发 / 高电平触发可选
5V/2A 电源模块1给 ESP32-C3 + 继电器供电必须隔离电源,保证安全
插座外壳、铜片1 套成品外壳通用智能插座外壳
杜邦线、焊锡若干接线使用

安全警告

  1. 220V 市电具有高压危险,非专业人士请勿直接接线!
  2. 调试时先断开市电,仅用 5V 电源测试继电器,功能正常后再接市电!
  3. 必须使用隔离电源,严禁裸板通电测试!

三、硬件接线(核心!)

本教程使用ESP32-C3 + 低电平触发 5V 继电器(最常用)

接线表

ESP32-C3 引脚继电器模块引脚
3.3V/5VVCC
GNDGND
GPIO2IN(信号引脚)

说明:

  1. ESP32-C3 部分引脚输出电流小,推荐用5V 给继电器供电,信号引脚接 3.3V 兼容 GPIO
  2. 继电器公共端 COM 接火线输入,常开端 NO 接插座火线输出,零线直接直通

四、开发环境搭建(Arduino IDE)

1. 安装 Arduino IDE

官网下载:https://www.arduino.cc/en/software

2. 添加 ESP32-C3 开发板地址

文件 → 首选项 → 附加开发板管理器网址:

https://dl.espressif.com/dl/package_esp32_index.json

3. 安装 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(); // 处理客户端请求 }

六、代码烧录与测试

  1. 用 Type-C 数据线连接 ESP32-C3 到电脑
  2. 选择正确端口号
  3. 点击上传,等待编译 + 烧录完成
  4. 打开串口监视器,查看WiFi 连接成功的 IP 地址
  5. 手机 / 电脑连接同一 WiFi,浏览器输入 IP 地址,即可控制插座!

七、进阶功能拓展(加分项!)

1. 配网不写死代码(SmartConfig)

无需修改代码,手机 APP 给 ESP32 配网,适合成品使用。

2. 定时开关功能

添加定时器,实现定时开启、定时关闭、循环定时

3. 接入阿里云 / 百度云 / 米家

实现外网远程控制(不在家也能控制)。

4. 断电记忆功能

重启后保持上一次的开关状态,不自动复位。

5. 过载保护

添加电流检测模块,过载自动断电。


八、成品组装与优化

  1. 将模块放入插座外壳,做好绝缘处理
  2. 电源模块固定牢固,避免短路
  3. 继电器与市电接线用焊锡加固,套热缩管
  4. 外壳开孔,方便后续调试

九、常见问题解决

  1. WiFi 连接失败:仅支持 2.4G WiFi,5G WiFi 无法连接
  2. 继电器不动作:检查接线、电平触发方式、供电电压
  3. 网页打不开:确保设备在同一局域网,IP 输入正确
  4. 串口乱码:波特率设置为 115200

十、总结

本项目基于ESP32-C3实现了低成本智能插座,具备 WiFi 控制、网页远程控制、状态反馈等核心功能,代码简洁易懂,非常适合物联网入门学习。通过拓展,还能实现定时、远程、语音控制等高级功能,可玩性极强!

DIY 智能插座不仅能提升生活便利性,还能快速掌握WiFi 通信、Web 服务器、继电器驱动等核心物联网知识,新手也能轻松上手。

http://www.jsqmd.com/news/729382/

相关文章:

  • SVE2指令集解析:向量计算与性能优化
  • Geek Cookbook监控方案:SwarmProm与Grafana仪表板搭建
  • Dify医疗知识库构建全流程,从非结构化病历PDF解析、实体脱敏标注到可审计问答溯源链(附卫健委备案自查清单)
  • LangChain资源精选集:AI应用开发的导航地图与实战指南
  • Python 爬虫数据处理:半结构化网页数据智能抽取模板
  • 知识竞赛软件题库准备:从混乱表格到可执行题包
  • Qwen2.5为何难部署?显存与依赖版本避坑指南
  • Translumo:解锁屏幕文字实时翻译的突破性方案,让语言障碍瞬间消失
  • 【2026最新】保姆级VMware安装Ubuntu24虚拟机教程(附安装包)
  • 在 OpenClaw Agent 工作流中接入 Taotoken 多模型服务的步骤
  • Dify租户数据混杂?立即排查这5类隔离断点:SQL注入绕过、缓存Key污染、向量库tenant_id缺失、审计日志盲区、API网关路由失效
  • Python 爬虫分布式架构基础与多机协同采集方案
  • nanobanana-cli:AI模型一键部署工具,告别环境配置难题
  • C语言学习笔记——文件操作
  • 微软2026财年Q3财报:营收稳健但核心业务有隐忧,Azure刚及格Copilot付费用户增30%
  • osgEarth深度分析(5): 坐标系统与投影转换:全球三维可视化的数学基石
  • nli-MiniLM2-L6-H768开发者案例:知识图谱三元组验证的轻量推理方案
  • 局域网设备自动化发现:3种高效策略深度解析与arp-scan实战指南
  • 终极指南:FFXIV ACT动画跳过插件如何让你副本效率提升300%
  • Dubbo 接口测试原理及多种方法实践总结
  • 错过这期R农业建模教程,你将滞后整整一个生长季:3月播种前必须完成的病害风险热力图生成全流程
  • xbatis:强大 ORM 框架,多版本更新亮点多,多种查询写法超方便!
  • 多模态大语言模型的视觉整合机制与H-散度应用
  • 从视频到文本:如何用AI技术轻松提取硬字幕
  • 告别网盘限速困扰:LinkSwift直链下载助手完全指南
  • 020、PCIE内存读写事务:从一次诡异的DMA超时说起
  • Sunshine游戏串流:打造个人云游戏服务器的完整技术指南
  • STM32 RTC掉电后时间还在?手把手教你用CR1220电池实现断电记忆(附完整代码)
  • 第十一节:多智能体协同(Multi-Agent)——群体智慧探索
  • 如何3步让旧款MacBook Pro运行最新macOS?OpenCore Legacy Patcher终极指南