原创作者:豆豆青春不喂狗
一、背景
寒冷冬天的早晨,你躺在被窝里,门铃响了,你需要立刻起床穿衣服,然后去开门。现在,树莓派能帮你获得一个从容穿衣的时间。
二、摘要
1、简介:
使用树莓派、无线继电器、433发射模块完成对立林楼宇门的任意终端控制。
2、结构图:
三、环境
1、硬件:
树莓派Raspberry Pi Model B+型 或者 树莓派2代 12V无线继电器 433发射模块
2、软件:
433Utils python php
四、原理
1、开锁原理:
四线非可视楼宇门主机在每个住户都引出4根线,对应的门铃/对讲机上的功能为:
红色---地线 绿色---振铃线 白色---主机到分机的通话+开锁线 黑色---分机到主机的通话线
只要将开锁线与地线短路,就可以控制楼宇门开启。
电路图:
文中使用的楼宇门主机型号为JB2200,其他楼宇门主机也可以,请自行对应各个引线关系。
2、继电器原理:
继电器是一种电子控制器件,是用较小的电流去控制较大电流的一种“自动开关”。更详细的内容请强行脑补,此处不展开介绍。
下面简单介绍一下一路无线继电器的各引线作用:
输入端---VCC、GND两根线,用于接入合适的电源,区分正负极 常开端---NO 继电器处于关闭状态时,NO与CON断路,反之联通 常闭端---CO 继电器处于管理状态时,CO与CON联通,反之断路 公共端---CON
关于继电器工作模式的选择,点动,互锁都可以,编程时区分即可,文中使用的时互锁模式。
五、开工
明白了上面的原理,那我们可以开工了。
1、连线:
1)树莓派与433发射模块连接
433->VCC---Raspberry Pi->任意5V电压 433->GND---Raspberry Pi->任意地线 433->DATA--Raspberry Pi->任意GPIO口,需要与433Utils send.cpp中GPIO定义对应,默认int PIN = 0;(WiringPi Pin定义)
如下图所示:
2)无线继电器与楼宇门主机入户线连接:
继电器->VCC---楼宇门主机->受话线 继电器->GND---楼宇门主机->地线 继电器->NO----楼宇门主机->通话+开锁线 继电器->CON---空
2、软件:
1)433Utils安装:
请强行脑补,传送门https://github.com/ninjablocks/433Utils
编译前请确保send.cpp中,引脚定义int PIN = 0;与连线一致
2)控制客户端与服务端
php服务器
提供读取开关状态和设置开关状态两个接口
读取开关状态
http://your_server_ip/RaspBerry_Relay.php?action=GET
设置开关状态
http://your_server_ip/RaspBerry_Relay.php?action=SET&relay=off/on
python端
运行在树莓派上读取服务器开光状态发送响应的无线指令
代码为自行编写,传送门:http://pan.baidu.com/s/1hqIxRDi
3、最后的调试:
无线继电器学习功能,不同继电器不一样,本文中的无线继电器操作方法为:
只开不关 按住触摸线不放,蜂鸣器第二次响两下松开,树莓派终端输入sudo ./send 11111 4 1,模块蜂鸣器再次响一下,学习成功。 只关不开 按住触摸线不放,蜂鸣器第三次响三下松开,树莓派终端输入sudo ./send 11111 4 0,模块蜂鸣器再次响一下,学习成功。 其他类型无线继电器学习功能请强行脑补,学知识上X宝,包教包会,报销往返路费,本期学不会下期免费再学
现在,你已经可以在任意终端上通过访问设置开关状态的URL来控制你家的楼宇门了!
*原创作者:豆豆青春不喂狗,本文属FreeBuf原创奖励计划文章,未经作者本人及FreeBuf许可,切勿私自转载
!评论内容需包含中文