智能家居 篇一:快捷指令打开小区楼下门禁
由于作者是程序员,对编程方便比较了解,对硬件方便不太了解,可能有更好对方案,写这篇教程只是给大家一些灵感,大家在可以在评论区一起讨论。
现在带钱包就是为了放小区楼下门禁的钥匙,家里的门锁早就换成指纹锁了,能不能彻底摆脱钥匙的束缚呢。今天拿出好久没开机的树莓派,加上之前买的一堆元器件开始折腾。
硬件部分
一般老小区的门禁都非常简单,我们小区门禁连接到每个家庭是一根五芯的电缆。当拿起听筒(其实不拿也可以),点击开锁按钮的时候有 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。
还可以把这个快捷指令放到负一屏更加方便操作。
shytian
校验提示文案
z11nux
校验提示文案
吉吉恺
校验提示文案
appleman44
校验提示文案
倾尽全力
校验提示文案
springzhe
校验提示文案
值友6785616095
校验提示文案
perroy
校验提示文案
便宜不常有
校验提示文案
栤嚸
校验提示文案
反钢铁侠装甲
校验提示文案
焱炎火
校验提示文案
木原傀
校验提示文案
值友7767369988
校验提示文案
姓余的小伙子
校验提示文案
出差王
校验提示文案
拉斯基
校验提示文案
Shizuku_Zy
会更合适吧
校验提示文案
Shizuku_Zy
会更合适吧
校验提示文案
拉斯基
校验提示文案
出差王
校验提示文案
姓余的小伙子
校验提示文案
值友7767369988
校验提示文案
木原傀
校验提示文案
shytian
校验提示文案
吉吉恺
校验提示文案
焱炎火
校验提示文案
反钢铁侠装甲
校验提示文案
倾尽全力
校验提示文案
栤嚸
校验提示文案
便宜不常有
校验提示文案
z11nux
校验提示文案
perroy
校验提示文案
值友6785616095
校验提示文案
appleman44
校验提示文案
springzhe
校验提示文案