本帖最后由 左耳 于 2017-9-28 19:08 编辑
江西理工大学因仑班
设计报告
项目名称:指纹解锁系统设计
2017年9月24日
摘 要
随着时代的发展,社会越来越需要高效、可靠的身份识别系统。传统的个人身份鉴别手段如钥匙、口令、密码、身份证件,甚至IC卡等识别方式。随着识别技术的不断成熟和计算机技术的飞速发展,各种基于人体生理特征的身份识别系统如:指纹、手掌、声音、视网膜、瞳孔和面纹等识别技术。当前,较为流行的识别技术就是指纹识别技术。该系统将实现建立一个简单的管理员界面,完成对指纹的录取,删除及管理员的身份识别。在识别出指纹后还要控制舵机完成自动开门的操作。
关键词:指纹识别;单片机STM32;舵机。
目录
一、系统硬件设计1. 芯片STM32STM32,从字面上理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。STM32自带了各种通讯接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多设备。现实生活中,我们接触到的很多电器产品都有STM32的身影。
2. ATK-AS608指纹模块2.1特性参数ATK-AS608是一款高性能的光学指纹识别模块。芯片内置DSP运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征。模块配置了串口、USB通讯接口,本模块可应用于各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。技术指标如表1-1所示。 表1-1 技术指标 项目 | | | | | | | 波特率(9600×N),N=1~12。默认N=6,bps=57600(数据位:8 停止位:1 校验位:none TTL电平) | | | | | | | | <0.1(S),模块上电后需要约0.1S初始化工作 | | | | | | | | | | | 2.2硬件接口模块接口采用8芯1.25mm间距单排插座,PCB如图2.2.1所示。模块内部内置了手指探测电路,我们可以读取状态引脚(WAK)判断有无手指按下。引脚描述如表1-2所示。
表1-2 ATK-AS608模块引脚描述
模块实物图:
3. 电磁锁模块电磁锁模块选择的是DC12V/DC24V电磁锁小型电锁,电控电子锁。本小电锁是采用电磁阀工作原理,只支持瞬间通电开锁,不支持长时间通电工作及过度频繁的开锁动作,不然可能会烧坏小电锁。建议开锁时间最长不超过5秒,平均开锁间隔时间最低不要低于2分钟。 电磁锁的主要参数如表1-3所示: 表1-3电磁锁参数 电磁锁模块实物如图3.1所示:
通过电磁锁参数我们知道,单片机STM32引脚I/O口只能提供3.3V和5V电压,并不能驱动至少需要12V的电磁锁,因此我们需要设计电子锁的驱动电路,这里我们可以用三极管(PNP和NPN均可)和继电器来设计电压放大电路。驱动电路如图3.2所示:
图1-4 三极管和继电器驱动电路 继电器实物如图3.3所示: 图1-5 继电器 明白这些以后,我们可以自己用木板做一个简单的门装置模型,将电磁锁及其驱动电路固定在木板上即可。要实现自动开门和关门,需要扭力大,易实现位置控制的电机,这就要用到舵机了。 4. 液晶屏显示模块指纹解锁系统需要一个管理员界面,这里我们用TFT3.5寸彩屏来显示管理员界面,液晶屏不执行太多功能,只是显示提醒信息,比如录指纹,指纹匹配,和删指纹提醒成功与否。这里用的是TFT3.5-HX8357D驱动的液晶屏(因为只是执行简单功能,所以可以根据需要选择自己熟悉的液晶屏用来显示自己设计的管理员界面即可)。实物如图4.1所示:
二、系统软件设计1. 舵机的使用舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机摆臂长度愈长,则扭力愈小。速度的单位是 sec/60°,即舵机转动 60°所需要的时间。单片机通过发送50Hz的不同占空比的pwm控制舵机转到不同位置,舵机开门、关门时的pwm占空比值,可以通过多次测试取均值得到。舵机实物如图3.4所示: 图2-1 sg90舵机
简单门模型如图3.5所示: 2. 指纹模块的应用2.1 通讯协议上位机、MCU与模块通讯是用USART串口发送与接收模块指令和数据,并按照模块指令格式打包,解析指令和接收数据包也按照此格式。 2.2模块指令格式模块指令格式分为三种:命令包格式(如表2-1)、数据包格式(如表2-2)、结束包格式(如表2-3)。 表2-1 命令包格式
表2-2 数据包格式
表2-3 结束包格式
(1)发送模块和接收模块的数据包格式相同 (2)数据包不是单独发送和接收,必须是发送指令包之后或接收了应答包的后面。 (3)包长度=包长度至校验和(指令、参数或数据)的总字节数,包含校验和,但不包含长度本身的字节数。 (4)校验和是从包标识至校验和之间所有字节之和。 (5)模块地址在没有生成之前为缺省的0xFFFFFFFF,一旦上位机通过指令生成了模块地址,则所有的数据都必须按照生成的地址收发。模块将拒绝地址错误的数据包。 模块应答格式: 应答是将有关命令执行情况与结果上报给上位机,应答包含有参数,并可跟后续数据包。上位机只有收到模块应答包后才能确认模块收包情况与指令执行情况。模块应答包中包含一个参数:确认码。确认码表示执行指令完毕的情况。模块应答包格式如表2.2.4所示。 2.2.4 模块应答格式
确认码定义: 00H:表示指令执行完毕或OK; 01H:表示数据包接收错误; 02H:表示传感器上没有手指; 03H:表示录入指纹图像失败; 04H:表示指纹图像太干、太淡而生不成特征; 05H:表示指纹图像太湿、太糊而生不成特征; 06H:表示指纹图像太乱而生不成特征; 07H:表示指纹图像正常,但特征点太少(或面积太小)而生不成特征; 08H:表示指纹不匹配; 09H:表示没搜索到指纹; 0aH:表示特征合并失败; 0bH:表示访问指纹库时地址序号超出指纹库范围; 0cH:表示从指纹库读模板出错或无效; 0dH:表示上传特征失败; 0eH:表示模块不能接受后续数据包; 0fH:表示上传图像失败; 10H:表示删除模板失败; 11H:表示清空指纹库失败; 13H:表示口令不正确; 15H:表示缓冲区内没有有效原始图而生不成图像; 18H:表示读写FLASH 出错; 19H:未定义错误; 1aH:无效寄存器号; 1bH:寄存器设定内容错误号; 1cH:记事本页码指定错误; 1dH:端口操作失败; 1eH:自动注册(enroll)失败; 1fH:指纹库满 2.3 常用指令集ATK-AS608模块功能多样,指令也多。但实际常用的指令只有几条,常用指令集及功能描述如下表2.3.1所示。 表2.3.1常用指令集
指令码 | | | | | | | | 根据原始图像生成指纹特征存于CharBuffer1或CharBuffer2 | | | 精确比对CharBuffer1与CharBuffer2中的特征文件 | | | 以CharBuffer1或CharBuffer2中的特征文件搜索整个或部分指纹库 | | | 将CharBuffer1与CharBuffer2中的特征文件合并生成模块存于CharBuffer1与CharBuffer2 | | | | | | | | | | | | | | | | | | | | | |
注:AS60x指纹识别SOC通讯的指令详解介绍了每一条指令的发送格式及接收应答的格式。这里不再详细说明。 3.管理系统设计 系统初始状态循环执行指纹识别任务,当k_right按键按下后(按键扫描在定时器中进行,按键名自定义),系统进入管理员认证界面,管理人员需要进行指纹认证,确认身份正确后才能进入管理员界面,进入指纹管理界面后,管理员可以对指纹库中的指纹进行删除和添加新的指纹,功能按键在管理界面会有提示。在录入和删除指纹时,界面上还会显示指纹库中可用指纹的个数。指纹系统在执行各种任务时根据不同的情况,还会对用户进行相应的提示。
三、项目测试
1. 测试方案录入5个不同的指纹存入指纹识别系统,每个指纹进行10次指纹识别,测试从手指在指纹模块放置好开始记录,分别记录不同指纹识别成功的次数,识别所需要的时间及成功开关门的次数。 测试器材:指纹识别模块、stm32、舵机、秒表。 2. 测试结果 测试结果如表3-1: 从指纹识别的成功次数可以看出指纹识别的成功率还不错,识别不出来觉大部分原因是因为手指没有放置好。但是识别时间较长,之前用串口接指纹模块用上位机测试过,识别过程时间有点长,这应该主要是硬件的问题。至于控制舵机开关门没什么问题。
|