10553浏览
查看: 10553|回复: 18

[项目] 【一个想法】微信门锁

[复制链接]
【一个想法】微信门锁【一个想法】微信门锁图1
基本想法
回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。
将二维码放到摄像头前,门锁打开,该二维码报废。
或者60s未使用该二维码,自动报废。
材料
硬件:树莓派+摄像头
SAE服务器
微信公众号
技术过程
  • 通过微信号发送请求
  • SAE服务器验证用户ID,返回随机生成的密匙二维码或者警告信息
  • 用户让摄像头扫描该二维码
  • 树莓派向SAE服务器验证二维码有效性
  • 若二维码有效,返回开门指令;无效返回警告消息。
  • 树莓派根据返回做相应动作,开门或“报警”

(遗憾的是树莓派还在学校,先实现1、2步吧)
--------------------------------------------------------------------------------------------------


qomoliao  初级技师
 楼主|

发表于 2015-4-14 12:49:13

过了好几个月,这个微信门锁终于可以亮一下了。虽然看起来还是有点bug,不过基本上实现了最初的想法。
成品演示
如图所示,门锁由Arduino做主控,通过Ethernet shield上网。
【一个想法】微信门锁图1【一个想法】微信门锁图2
在门外,拥有权限的使用者通过微信扫描门上的二维码,可以实现开门。
进入家里后,合上门,门上的感应器(其实就是个干簧管)被触发,自动关门。
在家里,不需要通过扫描二维码开门,而是直接按门上的唯一一个开门按钮,就可以开门。
另外,若开锁后,没有推开门,过2秒后,门会自动锁上。防止关门忘记上锁的情况发生。
对于没有权限的人(比如说在家里寄居几天的亲戚朋友),扫描门上的二维码会得到一个警告,同时得到一个二维码,门锁管理者,扫描这个二维码可以将这个客人添加到数据库中。
在这个客人要离开之前,用他自己的手机扫描门内侧的二维码,可以删除他的权限。
这里有个演示的视频:

视频里有点蹩脚的感觉,不过基本想法是实现了。
门锁的结构
大的来说,门锁有三个部分,他们的关系如下:
硬件 <⇐=>> SAE <⇐=>> 微信测试号
关于硬件:
Arduino做主控,通过Ethernet Shield与SAE通信,获得开锁命令,或者将门锁状态发送到SAE。(本来打算用机智云的模组或者ESP2866Wi-Fi模块的,最终发现现在使用的方式是最简单的。其他待以后有时间再做)
【一个想法】微信门锁图3
舵机作为开关门的机械部件
【一个想法】微信门锁图4
门上有个LED灯用于指示门的状态,开门-亮,关门-灭
【一个想法】微信门锁图5
干簧管和磁铁配合,用于感知门的状态 ,当门被合上时自动上锁
屋里门上有唯一的一个按钮,用于从内部开门
【一个想法】微信门锁图6
关于SAE:
这个demo采用SAE的云服务,免费好用
用tornado编写服务程序,用于接受微信测试号发来的事件,作出相应的反应
MySQL做数据库,储存门锁状态,门锁ID,管理者ID,开门二维码ticket等二维码ticket等数据。有数据库就有了为N个门锁和M个用户服务的可能。
这里放两个数据表给大家看看。

【一个想法】微信门锁图7

具体代码见github: https://github.com/qomo/welock
微信测试号:
测试号产生3类二维码:开锁二维码、添加用户二维码、删除用户二维码
【一个想法】微信门锁图8
  • 开锁二维码贴在门外侧,合法用户扫描可以开门,这是个长期有效的二维码
  • 非法用户扫描,会收到警告信息连同一个短期有效的添加用户二维码,让锁的管理者扫描这个二维码可以添加该用户的开锁权限
  • 另一个长期有效的二维码贴在门的内侧,当一个用户不再需要开锁权限,可以扫描该二维码,将自己的权限从SAE数据库中删除。
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-7 19:28:39

后来,又有了变化,还是希望简单一点。

最简单的方式是使用,带参数带微信二维码,直接扫描就可以把门打开。

但是,这需要一个服务号,而我个人的微信号只是订阅号。

现在的情况是,将raspberry 换成arduino

微信发送开锁指令,然后收到一个四位数验证码,再门锁的键盘上输入这个验证码,完成开锁。

SAE上的代码基本上完成,等淘宝的arduino到手,就可以写arduino代码了。
回复

使用道具 举报

大连林海  初级技神

发表于 2015-2-7 19:42:43

网络出现问题了  岂不是要所在门外了:lol
回复

使用道具 举报

hnyzcj  版主

发表于 2015-2-7 21:13:25

期待作品
回复

使用道具 举报

Youyou  初级技匠

发表于 2015-2-8 22:48:53

backdoor一定要设置好,紧急情况下说不定能排上用场。
回复

使用道具 举报

Ricky  NPC

发表于 2015-2-8 23:13:20

公共场所可以用这种方式。自己家里会有点不安全。
回复

使用道具 举报

touchfree  高级技师

发表于 2015-2-9 10:34:24

很有趣的想法啊,make it real
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-12 22:12:16

创客空间可以做,加微信会员即有开锁权限
回复

使用道具 举报

hnyzcj  版主

发表于 2015-2-14 15:46:19

回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。
将二维码放到摄像头前,门锁打开,该二维码报废。
或者60s未使用该二维码,自动报废。

这个让我想到了超市门口的临时存包处。
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-15 13:06:06

hnyzcj 发表于 2015-2-14 15:46
回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。
将二维码放到摄像头前,门 ...

做个微信存包货柜也不错
回复

使用道具 举报

hnyzcj  版主

发表于 2015-2-15 14:37:40

qomoliao 发表于 2015-2-15 13:06
做个微信存包货柜也不错

好的
回复

使用道具 举报

老刘  初级技师

发表于 2015-2-15 20:14:46

流程可以更简单一些,特定的号码向微信发送“开门”指令,门就开了。
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-20 13:09:04

老刘 发表于 2015-2-15 20:14
流程可以更简单一些,特定的号码向微信发送“开门”指令,门就开了。

现在的流程是这样的,用微信扫描门上的二维码,然后门就开了
微信公众号已经开发好了,在找一个能够上网的Arduino,或者等年后回上海用树莓片做硬件部分
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-20 13:11:37

之前因为个人的微信号没有生成二维码的权限导致流程显得有点繁琐
后来看机智云的ppt,发现微信公众平台有个微信测试号的东西
可以使用微信公众平台的所有功能
所以把开锁的过程做成直接扫描二维码开锁
回复

使用道具 举报

老刘  初级技师

发表于 2015-2-20 14:03:23

qomoliao 发表于 2015-2-20 13:09
现在的流程是这样的,用微信扫描门上的二维码,然后门就开了
微信公众号已经开发好了,在找一个能够上网 ...

其实不用这样,公众号每一个粉丝都有一个唯一的openid,可以用来鉴权,鉴权后,再根据你的指令去执行动作,比扫描二维码要快很多的。
回复

使用道具 举报

qomoliao  初级技师
 楼主|

发表于 2015-2-21 20:07:13

老刘 发表于 2015-2-20 14:03
其实不用这样,公众号每一个粉丝都有一个唯一的openid,可以用来鉴权,鉴权后,再根据你的指令去执行动作 ...

是对openid设置权限的。二维码是门锁的唯一识别。
回复

使用道具 举报

老刘  初级技师

发表于 2015-2-22 22:30:24

qomoliao 发表于 2015-2-21 20:07
是对openid设置权限的。二维码是门锁的唯一识别。

对的,我的意思是,直接发送文字 “开门”门就开了,不用扫描二维码,如果有多扇门需要控制,那么发送“开1门”“开2门”等等。。
回复

使用道具 举报

visionsl  初级技匠

发表于 2015-7-2 00:01:56

晚上没灯怎么扫?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail