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

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 。

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

6106 次点击
所在节点    智能家电
37 条回复
l0wkey
2020-06-15 11:43:24 +08:00
树莓派成本太高,NodeMCU ( ESP8266 )了解一下?
或者这种集成继电器的 8266 模块~



多多大法好...
Smash
2020-06-15 11:43:30 +08:00
可惜我们家小区门禁是加密门卡,miui12 模拟上了也用不起。
lloydsheng
2020-06-15 11:44:48 +08:00
@l0wkey 方案很多啊,大家可以多多讨论,我是刚好有哥闲置 2 代树莓派,放了好几年没用 😂
l0wkey
2020-06-15 11:47:29 +08:00
补充:平时玩的不多没有串口线烧录夹之类的话,NodeMCU (带 u 转串口的 8266 ) + 单独继电器更方便
l0wkey
2020-06-15 11:49:17 +08:00
@lloydsheng #3 嗯是的~ 不过树莓派的话理论上可以上 nodemcu 做到 lowcode 开发
顺便还能集成点其他功能 https://v2ex.com/t/642563#reply8

就是体积可能略大放不进去那个话机
Smash
2020-06-15 11:49:43 +08:00
@l0wkey nodeMCU 不错,支持 Arduino,还有封装好的 http client 用。
l0wkey
2020-06-15 11:56:26 +08:00
@Smash #6 嗯。不过上 HTTP 在这里并不是一个好选项,得同一个 WiFi 或把端口映射出来(风险略高)。所以比较合适的方式是连接云物联网平台上 MQTT 这类长连接作为控制通道,设备侧订阅,然后手机侧用 MQTT 或者 HTTP 方式发送。
一方面可以传输控制指令,另一方面还可以复用 MQTT 通道来监测设备运行状态。
lmmortal
2020-06-15 12:07:53 +08:00
思路挺不错的 我都想做个自动通断的开关了,每隔一分钟自动开楼下的门,这样就不用输密码不用带钥匙了,站在门口等一分钟就自动开
hooon
2020-06-15 12:15:13 +08:00
@lmmortal 你这个,还能有门禁的作用吗?
zlkent
2020-06-15 12:17:58 +08:00
我也想过用 NodeMCU 通过话机来控制门禁,不过断了念想的原因是供电问题,用电池又不方便,话机附近又没有留插座。
lloydsheng
2020-06-15 12:19:19 +08:00
@zlkent 搞一个小的充电宝放进去?
lloydsheng
2020-06-15 12:20:27 +08:00
@lmmortal 要是这样这门禁不就直接废掉了吗,无论是谁等一分就能开门😂
lmmortal
2020-06-15 12:24:38 +08:00
@hooon
@lloydsheng
就是要废掉门禁,楼下门禁没啥意义,反正就算是小偷坏人在楼下等一会也会有人开门上楼的,而且也不会有人管上楼的人是去哪个房间,不会管是不是坏人,根本防不住任何人,所以最后就是只是给住户增加麻烦
imdong
2020-06-15 12:26:20 +08:00
esp01 甚至可以塞进电话里面去😏
lvyuedong
2020-06-15 12:29:27 +08:00
@Smash 加密的有方法写入的,一般都是 m1 或者 ic 模拟 m1,但是不管怎样,最后都是继电器电磁铁,想想办法一切皆有可能。
lloydsheng
2020-06-15 12:37:35 +08:00
@imdong 可以用的模块很多,供电的电源是个问题,我这个好解决是因为我装修的时候门禁的先走弱电箱弯了一道。
cjpjxjx
2020-06-15 12:42:01 +08:00
两根线连通就能开门?那其实只要一个智能插座+继电器就行了,原理和电脑的开机按钮一样
https://www.cencs.com/53.html
l0wkey
2020-06-15 13:05:00 +08:00
@zlkent #10 使用话机同样的供电方式?比如 poe 供电?
weyou
2020-06-15 13:19:54 +08:00
很有想法,就是因为楼下门禁需要钥匙才打消了安装智能锁的念头。一个问题,这样的话开门之前是不是还是要揿一下自家门牌号按钮?
lloydsheng
2020-06-15 14:19:20 +08:00
@weyou 我们小区这款设备非常简单,什么额外操作都不需要,只需要在手机上点一下快捷指令。

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

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

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

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

© 2021 V2EX