/post/8266-switch/relay.webp

做一个简单的网络继电器

买量产好的继电器,简单接线后当个显示器背光灯 演示视频 H.265 注意

⚠ 注意:此教程涉及电路,请注意人身安全

不过本教程里用的都是 DC 5V,应该也没什么大危险

介绍

这个开关由 esp 8266-01s 与 DC 5V 继电器组合而成,为量产产品,不需要自己手动焊元件,找一些线简单接一下就行

可从题图看到,这个继电器支持的控制电流为 DC 5V,继电电流有 DC 28/30V 10A 和 AC 125/250V 10A 各四个限制也许是?,但这种东西用来控制点小电器就行了,请不要作死去测它的极限…

继电器是什么?工作原理呢?继电器工作原理详解 - MCU 中文技术社区

其实也不用太详细了解继电器的工作原理,只用知道它可以用一个小电压来控制大型电器的开关就行

这个量产好的开关不用你自己担心要怎么把模块和继电器连接起来,你只需要接好供电和需要控制的线路就行,很方便

需要的材料

用量产模块

  • esp8266 继电器

分别是组合起来和分开的图(线懒得拆,直接拍照了虽然后面还是拆了

继电器装上与分开的图

带 esp8266-01s 的继电器淘宝均价在 ¥12 左右

  • CH340C 烧录下载器

CH340C 烧录下载器

这个烧录器的价格在 ¥6~10 左右,单独的话买不太值这个价

如果你自己有办法给模块刷进固件的话,可以不花这个钱

  • 线材若干

有多余的坏头数据线也可以把它剪了拿来用

自己拼继电器

如果你手头有单独的模块,也可以自己接,但我自己接的好像不怎么好用

  • esp 8266 模块 esp8266 模块

这个的供电 Micro USB 接口插拔太多次导致松动,掉下来了

  • 可由 DC 5V 电流控制的继电器 DC5V 继电器

虽然这里有展示,但后面不会讲这个,因为拼起来用了不太稳定,放到路由器旁边都有时会没响应

用于刷写固件的设备

本教程将把这个模块接入到 Apple 的 HomeKit 来控制,因此你的手上最好有台 iOS 10 以上支持 家庭 应用的 Apple 设备

至于为什么不接入更通用的 Home Assistant 呢?

因为还不会搞,而且家里没有能跑 Home Assistant 的开发板或手机,后面如果学会了也会补上的

为给 esp8266 刷入固件,你需要拥有一台电脑或支持 OTG 功能的手机,我这里推荐拿手机刷,因为似乎不需要装驱动

烧录软件与 HAA 固件

ESP8266 Loader: Play Store | Hubert’s Box

HAA 固件: Home Accessory Architect | Hubert’s Box

HAA 固件我推荐选择只需使用一个文件的 fullhaaboot.bin 二进制固件,因为 ESP8266 Loader 只能一次性刷入一个二进制固件

配置固件

首先得把模块和烧录器连接起来,参考下面的图片,担心接错也可以核对一下针脚再连接

模块接上烧录器与分开的图片

刷入固件

确定连接正常后,打开 ESP8266 Loader,点击主页右侧的文件名,然后选择刚才下载的 fullhaaboot.bin 二进制固件,点击右侧的上传按钮写入模块,稍加等待它写入固件,完成后手机上会有提示

至于 PC 嘛,刷写工具用 NodeMCU FlasherNodeMCU PyFlasher 都行,毕竟难点在于装驱动

还是得说说 PC 装驱动的问题,虽然模块用的芯片都是 esp8266,但驱动可能会分好多种,问店家客服或者自己找吧…

配置 WiFi 与脚本

刷写固件完成后,请将模块重启一遍,然后打开手机或其他可使用 WLAN 功能的设备,查看可用的 WiFi 列表,不出意外可以找到一个名为 HAA-ABCDEF 格式的开放 WiFi 网络,连接它,然后打开浏览器,访问 192.168.4.1:4567 页面

没有问题的话,你的浏览器会加载出一个橘黄色的网页,如下图所示 橘黄色的 HAA 配置网页

图片来源: Setup Mode - RavenSystem/esp-homekit-devices 进行过透明像素调整以适合比例

此时可以看到标题下面有个 MEPLHAA Script 输入框,不用着急,先点击下方的 Search WiFi,找到你家里用的网络,选中并输入密码,再回到上方填写 json 脚本

注意模块仅支持 2.4GHz 频率的 WiFi 网络,但如果你的路由器有 2.4/5GHz 双频 WiFi 功能的话,模块接 2.4GHz,手机连接 5GHz 的网络也是可以控制开关的

至于 MEPLHAA Script 框里要填什么东西,这里我就直接搬 自制 HomeKit 智能开关 这篇文章的脚本过来了

json
{
"c": { "l": 1, "b": [{ "g": 2, "t": 5 }] },
"a": [{
"t": 1,
"s": 1,
"0": { "r": [{ "g": 0, "v": 1 }] },
"1": { "r": [{ "g": 0, "v": 0 }] },
"b": [{ "g": 2 }]
}]
}

就是一个极其简单的开关,如果说有哪里要修改的话,就是第五行的 "s": 1,这代表模块通电后开关状态默认为开,改为 0 后默认为关,有能力的请查看 Home - RavenSystem/esp-homekit-devices 自行配置

等待 OTA 升级

按照你的想法配置好 json 后,点击 Save 按钮,接下来就是要等待它自己完成安装了,你需要给它找一个凉快 WiFi 信号好的地方,以及一个稳定的供电,至于模块插在烧录器还是继电器上都没问题,供电稳定既可

⚠️ 注意:HAA 安装过程需要连接到 GitHub 进行 OTA 升级,请确保你的家庭网络足够通畅,也可以按照 Using a custom server for OTA updates 教程来自行配置 OTA 服务器

我按照教程在 t5d 上建了一个自定义 OTA 文件夹,文件托管在 Vercel 的 HK 区域服务器上,理论可用,但我还没有测试过

已测试,可用:t5d.trle5.xyz/haa_updates,需要修改端口号为 443 并勾选 HTTPS 复选框

接下来就是等待 OTA 完成,理想情况下大致十分钟左右就可以配置完成并开始等待配对,不确定它安装成功没有的话,可以进入 ESP8266 Loader,点击右上角的 Serial Monitor 按钮菜单旁边那个查看它的 log 以排查是哪里出了问题

连接 HomeKit

似乎是全文最轻松的部分?

确保你的模块已 OTA 成功,接下来拿出你的 iPhone,打开 家庭 应用,点击右上角的 + 号,选择 添加或扫描配件,再点击 我没有或无法扫描代码,就能看到名为 HAA-ABCDEF 格式的开关,点击它并连接

HAA 固件的 HomeKit 设置代码统一为:0218-2017

连接过程会提示 未认证配件,不用理会继续点击 仍然添加 既可,没有什么影响

接下来会要求你配置这个开关在哪个房间,显示为 风扇开关,请根据实际用途调整,后面也可以随时修改

普通测试一下开关能否点击且可响应,之后就可以断电并开始接线了

接线

这里我的使用例是把整个模块用在一条 USB-A 延长线上,用来控制一些例如灯条的小电器

供电电路

接下来把模块接到继电器上,将 5V 的供电线接到模块右边橘黄色框里的两个供电接线端子,从正面来看,左边是 GND(-),右边是 VCC(+),不放心的话请自己看看继电器的 PCB 有没有标识正负极,确定没有问题后再接上供电

分别为接了线的继电器正反面,标记了供电与继电的接线端子

此处黑色线为供电,白色线为输出,还有一条粗的绿色线用于连接正极电流到常开端口

⚠️ 注意:橘黄色框里的为模块供电接口,请勿接入高于 5V 的直流电,更不要接入交流电,可能会损坏模块甚至产生危险

红框内的三个接口按左侧图片从左到右的排序分别是 常开端 | 公共端 | 常闭端,具体闭合情况请参考下面

是否有供电 常开与公共闭合 常闭与公共闭合

接上供电后,继电器会快速吸放一次,然后就可以看到继电器上的 LED 灯亮了,此时开关默认为打开状态,进入 家庭 应用查看,等待模块连上 WiFi 后就可以用手机控制继电器了 🎉

继电电路

接下来是继电电路的连接方式,至于怎么接线,看看普通电器是怎么供电的就行了,无论是交流电 AC 还是直流电 DC,都需要连接正负极,少哪边都不行,那我们只需要控制正负极其中一条线的通或否既可

这里我是将它作为一条可开关的 USB 延长线,也就是继电电压与供电电压一致,线分为输入部分和输出部分,我只需要使用它来控制输出部分的线就可以当成开关来使用了

先接电源线,再输出线,最后用一条线把供电正极与继电常开端连接起来

首先把供电按照正负极接入 GND(-)VCC(+),暂时先不要拧上接线端子

再把输出的 负极 与供电的 负极 接在一起,正极 则接到左侧的 公共端 里,此时 公共端GND(-) 就可以拧紧了

最后找一条短线把 常开端 与供电 正极 接起来既可拧紧所有接线端子,至于 常闭端 暂时还用不到

接好线后,连接好输出端的负载设备,再连接供电插头,自己测试一下吧 🥳

物理开关

昨天看了 个位数自制homekit设备,低成本打造苹果智能家居! - 哔哩哔哩 视频,发现这个原来还是留有一个物理开关 IO 接口的啊,本来我以为只能靠软件操控…那就加上个说明吧

MEPLHAA Script 里填写的脚本不需要修改,还是像上面那样,这里我们只需要看一下是哪两个 IO 就行:

两张图,分别在模块的正反面标示出了 esp8266-01s 的 IO2 和 GND(负极) 触点

也就是 IO2GND(-),短接一下就切换开关状态,或许也可以通过修改脚本来让它变成那种常规的按下即开,松手即关的开关,但我还是不会改它的脚本…


近期正在尝试在 Ubuntu Touch 上跑 Home Assistant,过程顺利的话会补上接入 Home Assistant 的教程,不自己编译内核大致是跑不起 docker,只能跑 Python 版的 core

坏消息,Ubuntu Touch 自带终端的 apt 有空间问题,而 Libertine 也不是那么方便,寒假也快结束了,这部分还是算了…