起因
之前见到酷安大佬人才辈出,一堆人弄RFID+舵机、指纹+舵机、蓝牙+舵机、wifi+舵机的形式解锁宿舍门。
身为一个成年人,还用选择么,我全都要。
可惜arduino数据口不太够用,需要研究一下如何精简之或者扩展。
材料清单
指纹模块:AS608
显示模块:LCD1602A
蜂鸣模块:无源蜂鸣器
RFID模块:RC522送白卡
键盘模块:4*4矩阵薄膜键盘
WIFI模块:集成
蓝牙模块:集成
门锁模块:12V电门锁
继电器模块:12V一路常开继电器
Arduino:ESP32开发板
TOTP部分
采用远端验证的形式,家里有一台在运行的树莓派即可,使用WiFi局域网。
添加用户
GET http://地址:监听端口/api/create
平台基于Django,访问网址即可生成TOTP的token并写入数据库,用户扫码添加进免费的谷歌验证器。
Token验证
GET http://地址:监听端口/api/check
参数:
- user 用户id
- code 谷歌验证器显示的代码
返回:{ "code": 1, "msg": "OK", "data": { "pass": true, "time": 1560510218 }, "integrity": "b79db2cb7e3574f5d45f869f893a094fc7f2c9e9a99b6d5d9fea1badc5aa06ed" }
- code 响应代码:1-成功、0-失败
- msg 响应信息
- data 验证数据部分,pass:true为通过,time为时间戳
- integrity data部分的json经过utf8编码,与添加用户时出现的secret组合并sha256加密
后期可添加函数,在用户不大于一定数量时遍历进行校验code。
若成功则写入开门记录到数据库,否则写入拒绝记录。
(未完待续)
Comment test.
test