打造Homekit 车库卷帘门控制器
一次出差回家没带钥匙被锁在大门外蹲了几小时,蹲着的时候想到要是手机直接遥控车库进入该多好。本来考虑在某宝上直接买一个,结果大部分都是传统的遥控器控制或者是价格动辄3位数的控制器套件,并没有直接针对车库的产品。而且不得不说homekit的配件实在是太贵了。于是萌生了DIY一个控制器方案的想法。
最终效果如下视频展示:
画质不好请大家见谅。刚开始在选择方案时获得信息太少,现在对比张大妈上大佬的设计,再回看自己的设计有些过于简单粗暴。 整个方案物料模块的成本约在60块左右(不算前期投入的钱),改装成本比较小,插到原有遥控器控制盒边上的上下停插口就好。实现的内容也仅仅是车库遥控器按一下的事情 。不过好歹以后出门不用带钥匙了,贵在实用 。这个项目所有代码和软硬设计都放到了Github上了。
这篇打造文章也是我第一次在张大妈上发稿,可能有很多疏忽之处,也请各位客官老爷见谅 。
操作
0.前提条件
设备前提要求:局域网有一个NAS,确保你对NAS有绝对的访问权限。这个会拿来充当homebridge服务器。当然如果有树莓派、废旧老电脑服务器等等之类的都可以,只要能跑nodejs就好了。
1.方案设计
整个设计从顶端到设备的软件整体链路 Siri<---->Homekit<---->Homebridge<---->控制器
整个网络的拓补图如下
对于终端的车库卷帘门执行硬件设计如下
2.操作
整个制作要分为几个部分,大纲如下
(服务器)安装nodejs,大致了解nodejs语法
(服务器)了解homebridge及安装homebridge
(服务器)编写homebridge插件
(硬件)器件选型
(硬件)绘制电路(或者硬肛搭线)
(硬件) 编程
2.1 安装 Nodejs
关于Nodejs安装可以直接看Nodejs安装教程。
2.2 了解Homebridge及安装homebridge
如果还不知道homebridge是啥,可以看一下官方Github页面对homebridge的说明。基本上homebridge是一个轻量化的Nodejs服务器,它能模拟IOS Homekit API,他通过插件来支持第三方设备。
https://github.com/nfarina/homebridge
homebridge项目中没有提供多少关于编写插件的文档。这是作者自己说的
We don’t have a lot of documentation right now for creating plugins, but there are many existing plugins you can study.
要不是这个项目,我估计也不会碰js代码 。homebridge基本就是插件+框架的结构。如果多了一个设备,可以通过编写对应的插件。我们可以在npm中看到各式各样的插件,包括开关空调车库等。了解了这些后我们就可以进行插件的编写。我们的目标是增加车库的控制器,当然需要仔细啃一下这部分代码。整个车库的开关都是由一个叫GarageDoorOpener实现的,这个类是在HAP中实现,提供给各个插件相关接口。有大量的作者编写了类似的车库控制器插件在npm上。大家可以作为参考。
https://www.npmjs.com/search?q=homebridge-garage&page=1&ranking=optimal
当然本项目中做法简单粗暴,在了解基本语法后,编写了一个很简单的插件。它的作用只有一个,将收到的homekit对车库操作通过TCP协议转发给车库门控制器。
2.4 器件选型
这里罗列了用到的所有模块,整个器件选型过程基本就是淘宝 ,积木模块搭起来就可以实现作品。
ESP8266串口WIFI无线模块WIF收发无线模块 价格 9.4
Arduino Nano V3 ATMega328P 价格 9.2
4路带继电器光耦模块 价格 6.59
220V转5V电源模块 价格 10.5
电源3脚插座 价格 5
电源3脚插母 价格 4.5
触摸按钮 价格 2.6
旋转编码器 价格 5
5V转3.3V DCDC电源模块 价格 4
6pin排线 价格 0.6
中景园0.96寸OLED显示屏 价格 14.5
其实我在前几天才发现,用Arduino不是最好的方案,现在很多厂家推出了集成8266的模块诸如NodeMcu,做起来应该更加方便,但自己选的型,含泪也要做完 。
2.5 绘制电路板
为了让这些模块好好呆着,且看起来美观点,花了一点儿时间画了一块小板子,软件使用Altium Designer 14 AD14是一款常用的制版软件。 如果想点一下制版技能点,不妨去学习一下相关教程,大佬请无视。
电路的软硬件及BOM信息都已经放到了
https://github.com/xifengzui/homebridge-garage2Arduino/tree/master/PCB%20Layout
打样时间约为3天,之后需要做一些焊接工作。需要电烙铁及焊锡丝装备。烙铁推荐日本白光烙铁,热插拔不是梦。丝印都已经画清楚所有的位置,肯定不会插错。
如果你想要可以直接给我消息我这里打样板子还有的多,到付。
你可以自行选择制作加工,现在打样厂商非常多,了解一下就可以知道,制作5块左右的裸露电路板价格大约在50块左右。
2.6 硬件编程
如果你还不知道arduino可以参考下
https://zh.wikipedia.org/wiki/Arduino
整个硬件编程主要实现三个部分。如果你对这块不感兴趣,可以直接跳过,拿到代码使用Arduino 1.8+ IDE直接烧写就好了。
打开工程
选择正确的型号
选择正确的端口,烧写。
如果你第一次使用Arduino,那则仍然需要一个正确的入门姿势。入门教程:
https://www.arduino.cn/thread-3451-1-1.html
整个设计分为
软件层次设计
菜单设计
协议设计
2.6.1 软件层次设计
整个软件设计层次为
其中因为按钮和屏幕与菜单关系密切,所以它们直接与菜单在合在一起。剩下的wifi e2prom及继电器只与逻辑有关。
这里用到的代码github地址为
https://github.com/xifengzui/homebridge-garage2Arduino/tree/master/Arduino%20Code/GC_main
做了比较详细的注释说明。
2.6.2 菜单设计
在菜单设计时,分别为车库的上下时间设置和wifi参数设置。wifi参数包括SSID 密码 服务器IP等参数。具体可以查看视频
菜单的生成逻辑在代码中有详细说明。
2.6.3 协议设计
协议设计的非常简单,设备请求服务器状态-->服务器响应状态(开-关-停)--->设备执行状态
如果与服务器断开连接,设备会尝试重连。走的TCP协议。
3.总结
整个DIY过程大致如上所述。做到一半的时候一个小伙伴买了一个 3d打印机,搞得我心痒痒,也败了一个3D打印机。
打印时候失败了几次,不过总体效果可以接受。delta打印机速度比xyz会快一些。不过尺寸偏差会难调一些。模型文件已经放到Github上,使用sketchup设计。
https://github.com/xifengzui/homebridge-garage2Arduino/tree/master/3D%20Model
翁山翁
校验提示文案
屋啊蛙
校验提示文案
casatift
校验提示文案
红风
校验提示文案
zdy1
校验提示文案
土豆泥来一份
校验提示文案
张大妈解毒员
校验提示文案
非洲白人
可是。。。
可是。。
可是。
我就是看不懂啊
校验提示文案
zhhangppeng
校验提示文案
逆转
校验提示文案
zxw3081
校验提示文案
献世live
校验提示文案
ayamaya
校验提示文案
cz阿甘
校验提示文案
胡大牛
校验提示文案
zhhangppeng
校验提示文案
缺牙老狼
校验提示文案
angelback1
校验提示文案
KingOX
校验提示文案
xuwei1993
校验提示文案
neoooooo
校验提示文案
值友1182046582
校验提示文案
买的好啊
校验提示文案
慕容05
校验提示文案
土豆泥来一份
校验提示文案
土豆泥来一份
校验提示文案
众泰总设计师
校验提示文案
大姥
校验提示文案
巴库蒙甘
校验提示文案
游戏人间888
校验提示文案
暗夜独行
校验提示文案
无聊滴伤心
校验提示文案
逆转
校验提示文案
WebHead
校验提示文案
隔壁王富贵
校验提示文案
JTYing
校验提示文案
Garhong
看了一下,个人觉得方案有点绕了,有点大材小用感觉。
另外一点就是 homekit 好用但是太霸道,一旦用了一辈子都给绑架了,不爽啊。
校验提示文案
xuwei1993
校验提示文案
非洲白人
可是。。。
可是。。
可是。
我就是看不懂啊
校验提示文案
圣殇tz
校验提示文案