让你家的楼宇门变聪明:基于树莓派实现任意终端控制楼宇门

2015-11-27 748329人围观 ,发现 52 个不明物体 极客

原创作者:豆豆青春不喂狗

一、背景

寒冷冬天的早晨,你躺在被窝里,门铃响了,你需要立刻起床穿衣服,然后去开门。现在,树莓派能帮你获得一个从容穿衣的时间。

二、摘要

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许可,切勿私自转载

这些评论亮了

  • ibmcn 回复
    大师兄,去开门之前还是先去把胡子刮了吧
    )12( 亮了
  • 0xroot (6级) 奔跑的蚂蚁 回复
    大师兄 二师兄说的对啊 :twisted:
    )11( 亮了
  • 隔壁老张 回复
    好厉害的样子啊,我好崇拜你呀,我要给你生孩纸 :razz:
    )11( 亮了
  • 豆包的主人 回复
    在忘带钥匙的日子里,这个是最温暖的
    )11( 亮了
  • test 回复
    王总你好,苟富贵勿相忘
    )9( 亮了
发表评论

已有 52 条评论

取消
Loading...
css.php