文章目录
- 项目简介
- 硬件设计
项目视频链接:【还在制作中,制作好会发在哔哩哔哩:化作尘my,记得先关注】
项目实物链接:【可以看看某鱼:化作尘my】
有需要可以购买一个实物,会提供相应的参考资料学习
项目简介
人脸识别门禁密码锁是一种既可以通过密码输入,指纹识别也可以通过识别IC卡来实现门禁的开启关闭功能。在日常生活种它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的门禁密码锁是以芯片为核心,通过编程来实现的。
利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性通过软件程序来控制整个系统实现门禁密码锁的基本功能,其主要具有如下功能:
●人脸识别
●指纹识别
●手机蓝牙控制
●密码通过键盘输入,若密码正确,则将锁打开
●密码输入错误,蜂鸣器将报警提示
●用户可以自由设定密码
●RC522射频卡识别
●OLED显示
●步进电机控制电路
人脸识别模块使用的是海凌科FR1002人脸识别模块,以下是模块简介
这个人脸识别的特点就是没用到彩屏显示摄像头获取的视频信息,直接用OLED显示提示信息就可以了,可以节约很多成本,因为一个带屏幕的人脸识别模块超级贵,模块一个就要200元
硬件设计
首先考虑的就是电源,我一开始用5V供电通信很不稳定,于是把电源改到了9V左右,使用了一个开关电源,果然更换电源之后通信就稳定多了
然后考虑到外设比较多,直接上64脚的MCU STM32F103RBT6
把人脸识别模块接到串口3上面
其他模块就随便接到单片机引脚先
然后考虑到有人脸识别模块电流会比较大,该用TYPEC接口,可以用快充去供电
接了1k电阻后,TYPEC-TYPEC直接接手机,手机就可以当充电宝给设备供电啦
然后绘制以下PCB图,这是我做的第一版本PCB,
还有点毛病,二级管和电感封装画大了,自己没有那么大的电感只好用器件管脚接起来了
然后装上人脸识别模块才发现人脸模块是有方向的,必须横着放才能正常识别人脸,以下是错误接法
接下来就是写程序了,拿到人脸识别模块我开始找客服要程序,结果我懵逼了,压根没有历程
然后只得到两个PDF和一个上位机,没办法,不能偷懒了,硬着头皮干吧
打开上位机,用串口转TTL连接好人脸识别模块,发现发指令它没反应,怀疑是供电的问题,于是我用两节18650外接供电,这次是成功连接上了,然后开始用上位机录入人脸和删除人脸等操作,并记录串口数据。。。
1、获取模组当前状态
发送:ef aa 11 00 00 11
返回:EF AA 00 00 03 11 00 00 12
上位机
1、打开串口
发送:EF AA 30 00 00 30 EF AA 24 00 00 24
返回:
2、删除所有用户
发送:EF AA 21 00 00 21
返回:
删除所有用户成功
3、人脸注册
发送:
EF AA 26 00 28 01 4D 42 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 10 00 00 00 42
EF AA 26 00 28 01 48 5A 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 10 00 00 00 4F
ef aa 26 00 28 00 48 5a 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 0a 00 00 00 42
返回:
[2023-12-01 11:40:13.250]
RX:EF AA 01 00 11 01 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17
[2023-12-01 11:40:14.713]
RX:EF AA 00 00 05 26 00 00 01 01 23 EF AA 00 00 02 23 00 21
请直视摄像头
注册成功,已分配用户id为 1, 用户名为 MBS
4、删除选中的用户
发送: EF AA 20 00 02 00 01 23
返回:
id为 01 的用户删除成功
5、人脸匹配
发送: EF AA 12 00 02 00 0A 1A
返回:RX:EF AA 01 00 11 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 EF AA 00 00 26 12 00 00 01 6D 62 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 48
[2023-12-01 11:41:18.814]
RX:EF AA 01 00 11 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10
[2023-12-01 11:41:20.012]
RX:EF AA 01 00 11 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10
[2023-12-01 11:41:21.414]
RX:EF AA 00 00 02 12 05 15 EF AA 00 00 02 12 0D 1D
[2023-12-01 11:41:37.276]
匹配成功,用户id为 01 用户名为 mbs
6、已获取所有已注册用户ID
发送: 0xEF 0xAA 0x24 0x00 0x00 0x24
返回: EF AA 00 00 22 30 00 23 58 53 31 30 30 31 5F 56 31 2E 31 2E 31 5F 31 2E 30 2E 33 2E 30 33 32 30 5F 30 30 30 30 30 30 1F EF AA 00 00 CB 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EF
收集到一些数据后,再看看PDF,大概的通信原理已经搞清楚了,然后可以开始写人脸识别模块的通信驱动了
直接写代码
断断续续写了一个多月,总算是可以正常一点的使用了
人脸识别可以正常识别,可以正常录入人脸
可以删除人脸。。
程序这个东西没什么好讲的,懂得人看代码就懂,不懂的人和它讲很多也是一窍不通
现在开发到这里,也只能识别人脸、添加人脸、删除所有人脸的功能
但是添加人脸还可更多功能,比如现在添加人脸并不能输入自己的名字,后续可以研究一下怎样可以显示自己的名字到上面,添加简易的输入法或者是借助外接设备输入等方式