楼宇对讲机

 背景

前几天,老婆手上的楼宇开门牌的挂钩坏了,没办法挂到钥匙上,出门总会忘记带,很不方便。

正好我前几个月在网上查找过如何通过树莓派控制楼宇门的资料,有人已经实现了,并且不是很复杂。

 原理

通过树莓派控制无线发射器,无线继电器接收到信号后,控制室内电话免提键的开关闭合,达到开启楼宇门的目的。

Title: 树莓派开启楼宇门流程图
Lukin->楼宇门: 按下房间号 601
楼宇门->601室内门铃: 通知振铃
Lukin->手机APP: 点击开门
手机APP->树莓派: 调用 HTTP API
树莓派->无线发射器: 控制无线发射器
无线发射器-->无线继电器: 发送433M信号
无线继电器->601室内门铃: 闭合免提按键开关
601室内门铃->楼宇门: 开启楼宇门
Lukin->楼宇门: 走进楼宇门

 环境

硬件:

  1. 树莓派:https://detail.tmall.com/item.htm?id=17337394004

  2. 433M发射模块:https://detail.tmall.com/item.htm?id=44320855953

  3. 1路5V的433M无线继电器模块:https://item.taobao.com/item.htm?id=526084894325

软件:

  1. 433Utils: https://github.com/ninjablocks/433Utils.git
  2. PHP

 原理

开锁原理 直接在免提按键上接出两根线,使用继电器闭合就可以达到开锁的目的,不用分析什么电路图了,简单!

继电器原理 继电器是一种电子控制器件,是用较小的电流去控制较大电流的一种“自动开关”。更详细的内容请强行脑补,此处不展开介绍。 关于继电器工作模式的选择,使用点动模式最好,这样门铃开关会自动复位。

 开工

 连线

1. 树莓派与433发射模块连接

433->VCC---Raspberry Pi->任意5V电压,这个我是连接到2号针脚
433->GND---Raspberry Pi->任意地线,这个连接到6号针脚
433->DATA--Raspberry Pi->任意GPIO口(我连接到11号针脚,BCM=17),需要与433Utils send.cpp中GPIO定义对应,默认int PIN = 0;(WiringPi Pin定义)

针脚图如下:

+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
|   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |  OUT | 0 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|  28 |  17 | GPIO.17 |   IN | 0 | 51 || 52 | 0 | IN   | GPIO.18 | 18  | 29  |
|  30 |  19 | GPIO.19 |   IN | 0 | 53 || 54 | 0 | IN   | GPIO.20 | 20  | 31  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+

2. 无线继电器与室内门铃连接

这个我没找到4根线,我直接连接到了免提开关上,外接了一个电池盒给无线继电器供电,这是非常不完美的,还需要继续研究一下。

 软件

1. 433Utils安装

# 下载源码
git clone --recursive git://github.com/ninjablocks/433Utils.git
# 进入代码目录
cd 433Utils/RPi_utils
# 编译代码
make

2. 调试

无线继电器学习功能,不同继电器不一样,本文中的无线继电器操作方法为:

切换为点动模式: 断电状态下,按住学习键按之后通电,学习指示灯闪3下,松开按键,此时设置为点动输出。

学习方法: 通电后,按下学习按键,学习指示灯会闪1下,证明学习通道触发成功,然后sudo ./send 11111 4 1,学习指示灯闪2下,证明学习成功。

现在,你已经可以在通过任何语言开发接口,最终只要触发sudo ./send 11111 4 1这个命令,就可以开门了。

参考文章:http://www.freebuf.com/geek/86906.html