以下是详细方案:
一、硬件准备
核心组件
ESP模块:推荐ESP8266(如NodeMCU开发板)或ESP32,支持Wi-Fi连接和GPIO控制。
继电器模块:选择5V单路光耦隔离继电器(如HHC68B-4Z型号,触点负载10A/250V AC,适合家庭插座)。确保模块带有光耦隔离和续流二极管,避免电磁干扰。
电源模块:
ESP供电:5V/2A USB电源或降压模块(如AMS1117-3.3V)。
继电器供电:独立5V电源(旧手机充电器或降压模块),确保与ESP共地。
其他材料
杜邦线、面包板(调试用)、螺丝刀、电工胶带。
电流传感器(可选,用于过载保护,如ACS712模块)。
二、电路连接
继电器模块与ESP连接
ESP GPIO → 继电器模块 IN 引脚(如GPIO12,根据代码配置调整)。
ESP GND → 继电器模块 GND。
继电器VCC → 独立5V电源。
插座强电连接
火线(L):从插座进线端断开,连接到继电器 COM 端;继电器 NO 端连接到插座出线端。
零线(N):直接连接插座进线和出线端,无需经过继电器。
地线(PE):保持原连接不变。
注意:操作强电前务必断开总电源,建议由专业电工协助完成。
可选电流传感器连接
将电流传感器串联在火线上,输出引脚连接ESP ADC口(如A0),用于实时监测电流。
三、软件配置(以Arduino IDE为例)
环境搭建
安装Arduino IDE,添加ESP8266开发板支持:
进入 文件 > 首选项,在“附加开发板管理器网址”输入 http://arduino.esp8266.com/stable/package_esp8266com_index.json。
进入 工具 > 开发板 > 开发板管理器,搜索并安装“esp8266 by ESP8266 Community”。
代码编写使用第三方平台(如点灯科技Blinker)简化开发:
#include <ESP8266WiFi.h> #include <Blinker.h> char auth[] = "YourDeviceAuthKey"; // 点灯科技设备密钥 char ssid[] = "YourWiFiSSID"; // Wi-Fi名称 char pswd[] = "YourWiFiPassword"; // Wi-Fi密码 BlinkerButton Button1("btn-power"); // 定义按钮组件 int relayPin = D6; // 继电器控制引脚(GPIO12) bool relayState = LOW; // 继电器初始状态(低电平触发) void button1_callback(const String &state) { if (state == "on") { digitalWrite(relayPin, HIGH); // 打开继电器 Button1.color("#00FF00"); // APP按钮显示绿色 Button1.text("已开启"); } else { digitalWrite(relayPin, LOW); // 关闭继电器 Button1.color("#FF0000"); // APP按钮显示红色 Button1.text("已关闭"); } relayState = !relayState; Blinker.vibrate(); // APP震动反馈 Blinker.print("\"power\":\"" + String(relayState) + "\""); // 同步状态到APP } void setup() { Serial.begin(115200); pinMode(relayPin, OUTPUT); digitalWrite(relayPin, LOW); Blinker.begin(auth, ssid, pswd); // 初始化Blinker Button1.attach(button1_callback); // 绑定按钮回调函数 } void loop() { Blinker.run(); // 可选:过载保护逻辑 /* float current = analogRead(A0) * 0.185; // 假设使用ACS712-5A传感器 if (current > 10.0) { // 超过10A阈值 digitalWrite(relayPin, LOW); Blinker.notify("过载保护触发!"); } */ }
OTA升级(可选)配置HTTP服务器存储固件,修改代码实现远程升级:
#include <ESP8266HTTPClient.h> #include <Update.h> void otaUpdate() { HTTPClient http; http.begin("http://your-server/ota.bin"); // 固件下载地址 int httpCode = http.GET(); if (httpCode == 200) { Update.begin(UPDATE_SIZE_UNKNOWN); http.writeToStream(&Update); if (Update.end()) { Serial.println("OTA成功,重启中..."); ESP.restart(); } else { Update.abort(); } } http.end(); }
四、手机APP配置
点灯科技Blinker
下载APP,注册账号后添加设备,选择“Wi-Fi设备”,输入Wi-Fi密码和设备密钥(Auth Key)。
在APP中添加按钮组件,设置键名为 btn-power,关联继电器控制逻辑。
其他平台(如MQTT)
自建MQTT服务器(如Mosquitto),使用PubSubClient库实现通信。
手机端安装MQTT客户端(如MQTT Dash),订阅控制主题(如/socket/control),发送on或off指令。
五、安全与优化
电气隔离
使用光耦隔离继电器模块,确保ESP弱电与插座强电物理隔离。
继电器线圈并联续流二极管(如1N4001),抑制反向电动势。
过载保护
串联电流传感器(如ACS712),实时监测电流,超过阈值自动断开继电器。
安装保险丝(如10A),防止短路损坏设备。
固件维护
通过OTA升级功能远程更新固件,避免重复烧录。
定期检查继电器触点,防止氧化导致接触不良。
六、调试与测试
功能验证
通电后,观察ESP指示灯是否正常闪烁,手机APP能否连接设备。
发送指令测试继电器吸合/释放动作,检查插座是否正常通断电。
异常处理
继电器不动作:检查GPIO引脚定义、继电器触发逻辑(高/低电平)及电源是否正常。
APP连接失败:确认Wi-Fi信号强度、设备密钥是否正确,尝试重新配网。
通过以上步骤,即可将普通插座改造成手机远程控制插座。若对电路不熟悉,建议先在面包板上完成原型测试,再接入实际插座。操作强电时务必谨慎,确保安全。
网友回复
js如何在浏览器中将一段音频生成带频谱和自定义图片的有声视频?
ai大模型微调为啥说被Agentic 上下文工程(ACE)技术替代了?
如何把ESP+继电器将自家的插座改造成手机远程开关控制?
安卓手机如何虚拟运行windows10及linux操作系统?
python如何利用ai自动在千牛监听和回复用户消息促成用户下单购买?
ai如何自动监听和回复咸鱼的消息?
如何解决three的三维场景CSS3DObject中iframe穿透一切问题呢?
有没有哪个ai人工智能动态生成鲜活带表情肢体动作逼真数字人与人类交流视频聊天?
threejs如何将iframe与video作为立方体模型一面的材质可点击交互?
UEFI与Legacy启动有啥不同?