说明
互联网指纹打卡机是我在OurEDA实验室时,和嵌入式开发者邱博一起开发的“智能硬件”项目,我作为后端开发者,为互联网指纹打卡机提供云端服务。
- 每一个打卡机都有一个唯一的PSK,测试阶段设备的PSK为"b3VyZWRh"。
- 打卡机通过微信Airkiss功能连入WiFi后,开始进行heartbeat心跳检测,每次心跳检测都会返回员工数据库最新一次修改的时间,打卡机比对后选择是否应该拉取最新的数据。
- 打卡机有一个按钮,负责录入功能,按一次进入录入状态,按第二次取消录入。
- 打卡机按下录入按钮后,进入录入指纹状态,员工录入指纹后,打卡机请求上传指纹接口,请求成功后打卡机退出录入指纹状态。
- 手机在打卡机录入一次指纹后,在输入设备背后的PSK后,可以通过小程序编辑姓名、工号、手机信息,将这些信息上传到员工创建接口,系统会自动将打卡机上传的指纹与手机上传的信息结合起来。
- 打卡机在正常工作状态下,员工按压第一次指纹为签到,按压第二次为签退。
技术与架构
- 硬件采用FPC1020 + node mcu,指纹识别模块采用IDWD1020

硬件模块示意图

后端架构图
项目实现效果

硬件实现与控制软件

后台打卡历史页面

后台某员工打卡详情页面

使用微信Airkiss功能给设备提供无线网密码
一些有趣的点
- 打卡,什么时候算是一天的结束?经过和硬件开发人员的商量,我们决定使用凌晨三点作为一天的划分;
- 联调时出现了一个Bug,硬件无法正确解析服务器下发的json串。后来发现原因是硬件的缓冲区和内存极其有限,服务器下发数据包过大,导致json串被截断,所以解析数据失败。经过协商,决定限制服务器下发的json串大小,从而解决了问题。