快捷指令打开老小区楼下门禁

2020-06-15 11:36:30 +08:00
 lloydsheng

由于作者是程序员,对编程方便比较了解,对硬件方便不太了解,可能有更好对方案,写这篇教程只是给大家一些灵感,大家在可以在评论区一起讨论。

现在带钱包就是为了放小区楼下门禁的钥匙,家里的门锁早就换成指纹锁了,能不能彻底摆脱钥匙的束缚呢。今天拿出好久没开机的树莓派,加上之前买的一堆元器件开始折腾。

一般老小区的门禁都非常简单,我们小区门禁连接到每个家庭是一根五芯的电缆。当拿起听筒(其实不拿也可以),点击开锁按钮的时候有 2 根线瞬间被联通,从而形成通路导致门锁被打开。

到底是需要哪连根线被联通呢?由于找不到说明书,只能自己测试。我把听筒放在耳边,找一根电线挨个测试,最终找的这 2 根线。

接下来的工作就是如何通过手机来控制这 2 根线的联通,我选择的是树莓派 + 继电器,继电器的作用本质是用一个回路(一般是小电流)去控制另外一个回路,树莓派就是让继电器形成这个小电流的回路。

我用是这款 1 路继电器,淘宝上很容易找到。

找 3 根杜邦线把树莓派这头接上,分别是红线 5V,灰线 0 V,蓝线 GPIO. 3 。

杜邦线另一头接到继电器的针脚上,接线正常到话红灯会亮。

把上面找出来的 2 根开锁线间断,剥掉一段塑料包皮然后缠绕在一起,2 根线分别接在公共端和常开端。

到这里硬件就连接好了,下面登录树莓派测试一下。树莓派系统自带 gpio 命令,测试非常方便,我发现这个继电器只要将 mode 设置为 out 常开端就能联通,联通后绿灯会亮。

确定硬件连接正常后,就是考虑如何用 API 来控制继电器的闭合。这里我选择的是 Python 的 RPi.GPIO 库,好像是树莓派自带的,我写的代码如下。

import RPi.GPIO as GPIO
import time
import sys

def open():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(22, GPIO.OUT)
  GPIO.output(22, GPIO.HIGH)
  time.sleep(1)
  GPIO.cleanup()

我们还需要搞一个在线的 HTTP 服务,以便我们在手机或电脑上调用这段代码。可以用 Python 的 Flask 搭一个简单的 HTTP 服务。

from flask import Flask
from flask import jsonify
import door
import sys
app = Flask(__name__)


@app.route('/open')
def hello_world():
    door.open()
    return jsonify(error=False)


if __name__ == '__main__':
    app.run(host='0.0.0.0')

最后通过快捷指令请求这个 HTTP 的 API 就能打开小区门禁了,安卓端可以选择其他类似 APP 。

还可以把这个快捷指令放到负一屏更加方便操作。

6111 次点击
所在节点    智能家电
37 条回复
zhouquanbest
2020-06-15 14:26:55 +08:00
不如用小米那种 wifi 开关来做连接 成本比较低
zlkent
2020-06-15 14:37:17 +08:00
@lloydsheng #11 电池不方便,还得经常拿出来充电
@l0wkey #18 就是不清楚话机的供电是否能满足,没去测过。
mrcn
2020-06-15 14:53:03 +08:00
@lmmortal 陌生人在楼下呆久了开不开门本身就会引起警觉,不论怎么说都比裸着的强
你私自废了门禁别人丢了东西,如果没抓到贼肯定就会怪你
icegaze
2020-06-15 15:05:36 +08:00
我在楼道门禁机控制器里加了个蓝牙遥控开关,20 元,体积很小,看不出来。有手机 app,选择点动功能,点一下,直接吸合再释放继电器,,,继电器并联在接出门按钮接头上。
icegaze
2020-06-15 15:09:50 +08:00
蓝牙比较靠谱,1 功耗小直接加在门禁机控制器里没问题,不会影响原来的电路板 2 距离短,在门口才能连接 3app 带指令密码,一般手机即使连接上也不能操作它。
wangxiaoaer
2020-06-15 15:15:47 +08:00
@lmmortal 别这么极端,起码小偷半夜无人进不来。
NotFoundEgg
2020-06-15 15:22:17 +08:00
弄个诺基亚 打开电话白名单 把震动马达的线拆下来接到门铃上(逃
mlhorizon
2020-06-15 15:31:47 +08:00
为楼主点个赞!
从知道用什么方案,到做出想要的效果来,期间是需要投入很多精力的,不过成功后收获的乐趣也要多很多。
很多人都停在了知道 xxx 可以做 yyy 上,从来没动手实现过,把能获得最强烈的成就感的步骤给丢弃了,太可惜了。
lmmortal
2020-06-15 16:13:43 +08:00
@wangxiaoaer
@mrcn
小偷并不需要在楼下等吧,这又不是纯 ic 门锁,老式的十字门锁,网上开锁教程都很多,小偷如果不会开锁那还是小偷吗
lmmortal
2020-06-15 16:16:41 +08:00
并且小偷如果不会开锁,楼下的门就算别人帮他开了,他怎么入室盗窃呢。
systemcall
2020-06-15 16:30:04 +08:00
@zlkent 可以不考虑充电,一次电池也可以供电,反正 esp8266 也需要 3.3V 的电压,电池组做到 6V 或者 9V 就行了,esp8266 有内建的 ADC,拿电阻分压就可以满足了,电池电压过低定期发个警告。
systemcall
2020-06-15 16:32:02 +08:00
如果没记错的话,电话线是 12V 的交流电,接通的时候是 24V
先量一下电压,确定有没有供电。一般来说,电话线是有供电的
可以考虑拿二极管堆个全桥整流出来,再通过 ldo 给 esp8266 供电
weyou
2020-06-15 17:41:33 +08:00
@lloydsheng 我这里是楼下必须要按下按钮,家里门禁电话必须接起来才可以按开门按钮。否则直接按开门按钮没有用。估计要复杂一点了,但楼主提供了很好的思路,有空试试。
B1ankCat
2020-06-15 17:46:47 +08:00
想法很好,但是用树莓派是不是大材小用了
ajaxfunction
2020-06-15 17:55:34 +08:00
@lmmortal 楼宇门门禁是电磁锁,没有钥匙插口吧,
再说小偷也是随机作案,这个楼进不去就去下一个楼了,难道非盯着这个不放嘛
而且门禁还有其他作用,防止贴小广告 这些
ihciah
2020-06-15 18:25:42 +08:00
(这个多年前我们宿舍楼有人搞过,还接入了学生账号认证
zlkent
2020-06-17 13:41:01 +08:00
@systemcall #31 多谢,有机会试试看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681636

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX