V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lloydsheng
V2EX  ›  智能家电

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

  •  1
     
  •   lloydsheng · 2020-06-15 11:36:30 +08:00 · 5849 次点击
    这是一个创建于 1404 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    一般老小区的门禁都非常简单,我们小区门禁连接到每个家庭是一根五芯的电缆。当拿起听筒(其实不拿也可以),点击开锁按钮的时候有 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 。

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

    第 1 条附言  ·  2020-06-15 12:41:46 +08:00
    看了大家的评论,感觉可以用的模块很多,但是供电的电源是个问题,话机的空间就那么大,大家有什么好的建议吗。我这个好解决是因为我装修的时候门禁的先走弱电箱弯了一道。
    37 条回复    2020-06-17 13:41:01 +08:00
    l0wkey
        1
    l0wkey  
       2020-06-15 11:43:24 +08:00   ❤️ 1
    树莓派成本太高,NodeMCU ( ESP8266 )了解一下?
    或者这种集成继电器的 8266 模块~



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

    就是体积可能略大放不进去那个话机
    Smash
        6
    Smash  
       2020-06-15 11:49:43 +08:00
    @l0wkey nodeMCU 不错,支持 Arduino,还有封装好的 http client 用。
    l0wkey
        7
    l0wkey  
       2020-06-15 11:56:26 +08:00
    @Smash #6 嗯。不过上 HTTP 在这里并不是一个好选项,得同一个 WiFi 或把端口映射出来(风险略高)。所以比较合适的方式是连接云物联网平台上 MQTT 这类长连接作为控制通道,设备侧订阅,然后手机侧用 MQTT 或者 HTTP 方式发送。
    一方面可以传输控制指令,另一方面还可以复用 MQTT 通道来监测设备运行状态。
    lmmortal
        8
    lmmortal  
       2020-06-15 12:07:53 +08:00 via iPhone
    思路挺不错的 我都想做个自动通断的开关了,每隔一分钟自动开楼下的门,这样就不用输密码不用带钥匙了,站在门口等一分钟就自动开
    hooon
        9
    hooon  
       2020-06-15 12:15:13 +08:00
    @lmmortal 你这个,还能有门禁的作用吗?
    zlkent
        10
    zlkent  
       2020-06-15 12:17:58 +08:00
    我也想过用 NodeMCU 通过话机来控制门禁,不过断了念想的原因是供电问题,用电池又不方便,话机附近又没有留插座。
    lloydsheng
        11
    lloydsheng  
    OP
       2020-06-15 12:19:19 +08:00
    @zlkent 搞一个小的充电宝放进去?
    lloydsheng
        12
    lloydsheng  
    OP
       2020-06-15 12:20:27 +08:00
    @lmmortal 要是这样这门禁不就直接废掉了吗,无论是谁等一分就能开门😂
    lmmortal
        13
    lmmortal  
       2020-06-15 12:24:38 +08:00 via iPhone   ❤️ 2
    @hooon
    @lloydsheng
    就是要废掉门禁,楼下门禁没啥意义,反正就算是小偷坏人在楼下等一会也会有人开门上楼的,而且也不会有人管上楼的人是去哪个房间,不会管是不是坏人,根本防不住任何人,所以最后就是只是给住户增加麻烦
    imdong
        14
    imdong  
       2020-06-15 12:26:20 +08:00 via iPhone
    esp01 甚至可以塞进电话里面去😏
    lvyuedong
        15
    lvyuedong  
       2020-06-15 12:29:27 +08:00
    @Smash 加密的有方法写入的,一般都是 m1 或者 ic 模拟 m1,但是不管怎样,最后都是继电器电磁铁,想想办法一切皆有可能。
    lloydsheng
        16
    lloydsheng  
    OP
       2020-06-15 12:37:35 +08:00
    @imdong 可以用的模块很多,供电的电源是个问题,我这个好解决是因为我装修的时候门禁的先走弱电箱弯了一道。
    cjpjxjx
        17
    cjpjxjx  
       2020-06-15 12:42:01 +08:00 via iPhone
    两根线连通就能开门?那其实只要一个智能插座+继电器就行了,原理和电脑的开机按钮一样
    https://www.cencs.com/53.html
    l0wkey
        18
    l0wkey  
       2020-06-15 13:05:00 +08:00
    @zlkent #10 使用话机同样的供电方式?比如 poe 供电?
    weyou
        19
    weyou  
       2020-06-15 13:19:54 +08:00 via Android
    很有想法,就是因为楼下门禁需要钥匙才打消了安装智能锁的念头。一个问题,这样的话开门之前是不是还是要揿一下自家门牌号按钮?
    lloydsheng
        20
    lloydsheng  
    OP
       2020-06-15 14:19:20 +08:00
    @weyou 我们小区这款设备非常简单,什么额外操作都不需要,只需要在手机上点一下快捷指令。
    zhouquanbest
        21
    zhouquanbest  
       2020-06-15 14:26:55 +08:00
    不如用小米那种 wifi 开关来做连接 成本比较低
    zlkent
        22
    zlkent  
       2020-06-15 14:37:17 +08:00
    @lloydsheng #11 电池不方便,还得经常拿出来充电
    @l0wkey #18 就是不清楚话机的供电是否能满足,没去测过。
    mrcn
        23
    mrcn  
       2020-06-15 14:53:03 +08:00
    @lmmortal 陌生人在楼下呆久了开不开门本身就会引起警觉,不论怎么说都比裸着的强
    你私自废了门禁别人丢了东西,如果没抓到贼肯定就会怪你
    icegaze
        24
    icegaze  
       2020-06-15 15:05:36 +08:00 via Android
    我在楼道门禁机控制器里加了个蓝牙遥控开关,20 元,体积很小,看不出来。有手机 app,选择点动功能,点一下,直接吸合再释放继电器,,,继电器并联在接出门按钮接头上。
    icegaze
        25
    icegaze  
       2020-06-15 15:09:50 +08:00 via Android
    蓝牙比较靠谱,1 功耗小直接加在门禁机控制器里没问题,不会影响原来的电路板 2 距离短,在门口才能连接 3app 带指令密码,一般手机即使连接上也不能操作它。
    wangxiaoaer
        26
    wangxiaoaer  
       2020-06-15 15:15:47 +08:00 via Android
    @lmmortal 别这么极端,起码小偷半夜无人进不来。
    NotFoundEgg
        27
    NotFoundEgg  
       2020-06-15 15:22:17 +08:00
    弄个诺基亚 打开电话白名单 把震动马达的线拆下来接到门铃上(逃
    mlhorizon
        28
    mlhorizon  
       2020-06-15 15:31:47 +08:00
    为楼主点个赞!
    从知道用什么方案,到做出想要的效果来,期间是需要投入很多精力的,不过成功后收获的乐趣也要多很多。
    很多人都停在了知道 xxx 可以做 yyy 上,从来没动手实现过,把能获得最强烈的成就感的步骤给丢弃了,太可惜了。
    lmmortal
        29
    lmmortal  
       2020-06-15 16:13:43 +08:00 via iPhone   ❤️ 1
    @wangxiaoaer
    @mrcn
    小偷并不需要在楼下等吧,这又不是纯 ic 门锁,老式的十字门锁,网上开锁教程都很多,小偷如果不会开锁那还是小偷吗
    lmmortal
        30
    lmmortal  
       2020-06-15 16:16:41 +08:00 via iPhone
    并且小偷如果不会开锁,楼下的门就算别人帮他开了,他怎么入室盗窃呢。
    systemcall
        31
    systemcall  
       2020-06-15 16:30:04 +08:00 via Android
    @zlkent 可以不考虑充电,一次电池也可以供电,反正 esp8266 也需要 3.3V 的电压,电池组做到 6V 或者 9V 就行了,esp8266 有内建的 ADC,拿电阻分压就可以满足了,电池电压过低定期发个警告。
    systemcall
        32
    systemcall  
       2020-06-15 16:32:02 +08:00 via Android
    如果没记错的话,电话线是 12V 的交流电,接通的时候是 24V
    先量一下电压,确定有没有供电。一般来说,电话线是有供电的
    可以考虑拿二极管堆个全桥整流出来,再通过 ldo 给 esp8266 供电
    weyou
        33
    weyou  
       2020-06-15 17:41:33 +08:00 via Android
    @lloydsheng 我这里是楼下必须要按下按钮,家里门禁电话必须接起来才可以按开门按钮。否则直接按开门按钮没有用。估计要复杂一点了,但楼主提供了很好的思路,有空试试。
    B1ankCat
        34
    B1ankCat  
       2020-06-15 17:46:47 +08:00
    想法很好,但是用树莓派是不是大材小用了
    ajaxfunction
        35
    ajaxfunction  
       2020-06-15 17:55:34 +08:00
    @lmmortal 楼宇门门禁是电磁锁,没有钥匙插口吧,
    再说小偷也是随机作案,这个楼进不去就去下一个楼了,难道非盯着这个不放嘛
    而且门禁还有其他作用,防止贴小广告 这些
    ihciah
        36
    ihciah  
       2020-06-15 18:25:42 +08:00
    (这个多年前我们宿舍楼有人搞过,还接入了学生账号认证
    zlkent
        37
    zlkent  
       2020-06-17 13:41:01 +08:00
    @systemcall #31 多谢,有机会试试看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2205 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:36 · PVG 08:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.