【一个想法】微信门锁
2015-02-072万
AI 快速预览详细
微信门锁是一个基于树莓派和摄像头的智能门锁项目。用户通过微信公众号发送请求,SAE服务器验证用户ID并生成随机密匙二维码。用户将二维码放在摄像头前,树莓派验证二维码有效性后控制门锁开启或报警。该项目提高了家居的安全性和便捷性,适合智能家居爱好者和初学者。
【一个想法】微信门锁![]() 基本想法 回到家门口,点击微信公众号的开门按钮,然后收到服务器发回的随机开锁二维码。 材料将二维码放到摄像头前,门锁打开,该二维码报废。 或者60s未使用该二维码,自动报废。 硬件:树莓派+摄像头 技术过程SAE服务器 微信公众号
(遗憾的是树莓派还在学校,先实现1、2步吧) -------------------------------------------------------------------------------------------------- |





在门外,拥有权限的使用者通过微信扫描门上的二维码,可以实现开门。
进入家里后,合上门,门上的感应器(其实就是个干簧管)被触发,自动关门。
在家里,不需要通过扫描二维码开门,而是直接按门上的唯一一个开门按钮,就可以开门。
另外,若开锁后,没有推开门,过2秒后,门会自动锁上。防止关门忘记上锁的情况发生。[/align][align=left]对于没有权限的人(比如说在家里寄居几天的亲戚朋友),扫描门上的二维码会得到一个警告,同时得到一个二维码,门锁管理者,扫描这个二维码可以将这个客人添加到数据库中。
在这个客人要离开之前,用他自己的手机扫描门内侧的二维码,可以删除他的权限。[/align][align=left]这里有个演示的视频:[/align][align=left][media=x,500,375]http://v.youku.com/v_show/id_XOTMyOTQzNTA4.html[/media]
[/align][indent][align=left][font=inherit]视频里有点蹩脚的感觉,不过基本想法是实现了。[/font][/align][/indent]门锁的结构[align=left]大的来说,门锁有三个部分,他们的关系如下:
硬件 <⇐=>> SAE <⇐=>> 微信测试号
关于硬件:
Arduino做主控,通过Ethernet Shield与SAE通信,获得开锁命令,或者将门锁状态发送到SAE。(本来打算用机智云的模组或者ESP2866Wi-Fi模块的,最终发现现在使用的方式是最简单的。其他待以后有时间再做)[/align][align=left]
[/align][align=left]舵机作为开关门的机械部件[/align][align=left]
[/align][align=left]门上有个LED灯用于指示门的状态,开门-亮,关门-灭[/align][align=left]
[/align][align=left]干簧管和磁铁配合,用于感知门的状态 ,当门被合上时自动上锁
屋里门上有唯一的一个按钮,用于从内部开门[/align][align=left]
[/align][align=left]关于SAE:
这个demo采用SAE的云服务,免费好用
用tornado编写服务程序,用于接受微信测试号发来的事件,作出相应的反应
MySQL做数据库,储存门锁状态,门锁ID,管理者ID,开门二维码ticket等二维码ticket等数据。有数据库就有了为N个门锁和M个用户服务的可能。
这里放两个数据表给大家看看。[/align]
[align=left]
[/align]
[align=left]具体代码见github: https://github.com/qomo/welock[/align][align=left]微信测试号:
测试号产生3类二维码:开锁二维码、添加用户二维码、删除用户二维码[/align][align=left]
[/align][list]
[*]开锁二维码贴在门外侧,合法用户扫描可以开门,这是个长期有效的二维码
[*]非法用户扫描,会收到警告信息连同一个短期有效的添加用户二维码,让锁的管理者扫描这个二维码可以添加该用户的开锁权限
[*]另一个长期有效的二维码贴在门的内侧,当一个用户不再需要开锁权限,可以扫描该二维码,将自己的权限从SAE数据库中删除。
[/list]
后来看机智云的ppt,发现微信公众平台有个微信测试号的东西
可以使用微信公众平台的所有功能
所以把开锁的过程做成直接扫描二维码开锁
将二维码放到摄像头前,门锁打开,该二维码报废。
或者60s未使用该二维码,自动报废。
这个让我想到了超市门口的临时存包处。
最简单的方式是使用,带参数带微信二维码,直接扫描就可以把门打开。
但是,这需要一个服务号,而我个人的微信号只是订阅号。
现在的情况是,将raspberry 换成arduino
微信发送开锁指令,然后收到一个四位数验证码,再门锁的键盘上输入这个验证码,完成开锁。
SAE上的代码基本上完成,等淘宝的arduino到手,就可以写arduino代码了。