查看: 5946|回复: 1
打印 上一主题 下一主题

指纹解锁系统设计

[复制链接]
跳转到指定楼层
沙发
发表于 2017-9-28 17:03:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 左耳 于 2017-9-28 19:08 编辑

江西理工大学因仑班

设计报告


项目名称:指纹解锁系统设计





2017924日

   

随着时代的发展,社会越来越需要高效、可靠的身份识别系统。传统的个人身份鉴别手段如钥匙、口令、密码、身份证件,甚至IC卡等识别方式。随着识别技术的不断成熟和计算机技术的飞速发展,各种基于人体生理特征的身份识别系统如:指纹、手掌、声音、视网膜、瞳孔和面纹等识别技术。当前,较为流行的识别技术就是指纹识别技术。该系统将实现建立一个简单的管理员界面,完成对指纹的录取,删除及管理员的身份识别。在识别出指纹后还要控制舵机完成自动开门的操作。

关键词:指纹识别;单片机STM32;舵机。










目录





一、系统硬件设计1. 芯片STM32
STM32,从字面上理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。STM32自带了各种通讯接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多设备。现实生活中,我们接触到的很多电器产品都有STM32的身影。
                                       
                                                     图1-1 STM32F103ZET6正面引脚图

2. ATK-AS608指纹模块2.1特性参数
ATK-AS608是一款高性能的光学指纹识别模块。芯片内置DSP运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征。模块配置了串口、USB通讯接口,本模块可应用于各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。技术指标如表1-1所示。
1-1 技术指标
项目
说明
工作电压(V)
3.0~3.6V,典型值:3.3V
工作电流(mA)
30~60mA,典型值:40mA
USART通讯
波特率(9600×N),N=1~12。默认N=6,bps=57600(数据位:8 停止位:1 校验位:none TTL电平)
USB通讯
2.0FS(2.0全速)
传感器图像大小(pixel)
256*288pixel
图像处理时间(S)
<0.4(S)
上电延时(S)
<0.1(S),模块上电后需要约0.1S初始化工作
搜索时间(S)
<0.3(S)
拒真率(FRR)
<1%
认假率(FAR)
<0.001%
指纹存容量
300枚(ID:0~299)
工作环境
温度(℃):-20~60 湿度<90%
2.2硬件接口
模块接口采用8芯1.25mm间距单排插座,PCB如图2.2.1所示。模块内部内置了手指探测电路,我们可以读取状态引脚(WAK)判断有无手指按下。引脚描述如表1-2所示。
                                       
                  图1-2 模块PCB

1-2 ATK-AS608模块引脚描述

序号
名称
说明
1
Vi
模块电源正输入端
2
Tx
串行数据输出。TTL逻辑电平
3
Rx
串行数据输入。TTL逻辑电平
4
GND
信号地。内部与电源地连接
5
WAK
感应信号输出,默认高电平有效
6
Vt
触摸感应电源输入端,3v供电
7
U+
USB D+
8
U-
USB D-
模块实物图:

           
3. 电磁锁模块
电磁锁模块选择的是DC12V/DC24V电磁锁小型电锁,电控电子锁。本小电锁是采用电磁阀工作原理,只支持瞬间通电开锁,不支持长时间通电工作及过度频繁的开锁动作,不然可能会烧坏小电锁。建议开锁时间最长不超过5秒,平均开锁间隔时间最低不要低于2分钟。
电磁锁的主要参数如表1-3所示:
表1-3电磁锁参数
使用电压(V)
12V/24V
允许电流(A)
0.8A/1.2A
消耗功率(W)
9.6W/28.8W
通电动作时间
≤1S
允许连续通电时间
≤10S
插销伸缩长度(mm)
10mm
用途
各种箱、柜和其他经常开启的场所
电磁锁模块实物如图3.1所示:



1-3 电磁锁模块

通过电磁锁参数我们知道,单片机STM32引脚I/O口只能提供3.3V5V电压,并不能驱动至少需要12V的电磁锁,因此我们需要设计电子锁的驱动电路,这里我们可以用三极管(PNPNPN均可)和继电器来设计电压放大电路。驱动电路如图3.2所示:
                     

1-4 三极管和继电器驱动电路
继电器实物如图3.3所示:
                    
1-5 继电器
明白这些以后,我们可以自己用木板做一个简单的门装置模型,将电磁锁及其驱动电路固定在木板上即可。要实现自动开门和关门,需要扭力大,易实现位置控制的电机,这就要用到舵机了。
4. 液晶屏显示模块
指纹解锁系统需要一个管理员界面,这里我们用TFT3.5寸彩屏来显示管理员界面,液晶屏不执行太多功能,只是显示提醒信息,比如录指纹,指纹匹配,和删指纹提醒成功与否。这里用的是TFT3.5-HX8357D驱动的液晶屏(因为只是执行简单功能,所以可以根据需要选择自己熟悉的液晶屏用来显示自己设计的管理员界面即可)。实物如图4.1所示:
                                            
             图1-6  3.5寸液晶屏

二、系统软件设计1. 舵机的使用
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机摆臂长度愈长,则扭力愈小。速度的单位是 sec/60°,即舵机转动 60°所需要的时间。单片机通过发送50Hz的不同占空比的pwm控制舵机转到不同位置,舵机开门、关门时的pwm占空比值,可以通过多次测试取均值得到。舵机实物如图3.4所示:
         
2-1  sg90舵机

简单门模型如图3.5所示:
  图2-2 简单门模型
2. 指纹模块的应用2.1 通讯协议
上位机MCU与模块通讯是用USART串口发送与接收模块指令和数据,并按照模块指令格式打包,解析指令和接收数据包也按照此格式。
2.2模块指令格式
模块指令格式分为三种:命令包格式(如表2-1)、数据包格式(如表2-2)、结束包格式(如表2-3)。
2-1 命令包格式

字节数
2bytes
4bytes
1bytes
2bytes
1bytes



2bytes
名称
包头
芯片地址
包标志
包长度
指令
参数1
参数n
校验和
内容
0xEF01
XXXX
01
N=






2-2 数据包格式
字节数
2 bytes
4 bytes
1 bytes
2 bytes
N bytes
2 bytes
名称
包头
芯片地址
包标志
包长度
数据
校验和
内容
0xEF01
XXXX
02




2-3 结束包格式
字节数
2 bytes
4 bytes
1 bytes
2 bytes
N bytes
2 bytes
名称
包头
芯片地址
包标志
包长度
数据
校验和
内容
0xEF01
XXXX
08



(1)发送模块和接收模块的数据包格式相同
(2)数据包不是单独发送和接收,必须是发送指令包之后或接收了应答包的后面。
3)包长度=包长度至校验和(指令、参数或数据)的总字节数,包含校验和,但不包含长度本身的字节数。
4)校验和是从包标识至校验和之间所有字节之和。
5)模块地址在没有生成之前为缺省的0xFFFFFFFF,一旦上位机通过指令生成了模块地址,则所有的数据都必须按照生成的地址收发。模块将拒绝地址错误的数据包。
模块应答格式:
应答是将有关命令执行情况与结果上报给上位机,应答包含有参数,并可跟后续数据包。上位机只有收到模块应答包后才能确认模块收包情况与指令执行情况。模块应答包中包含一个参数:确认码。确认码表示执行指令完毕的情况。模块应答包格式如表2.2.4所示。
2.2.4 模块应答格式

2 bytes
4 bytes
1 bytes
2 bytes
1 bytes
N bytes
2 bytes
0xEF01
模块地址
包标志 07
包长度
确认码
返回参数
校验和
确认码定义:
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常用指令集

指令码
函数名
功能描述
01H
PS_GetImage
从传感器上读人图像存于图像缓冲区
02H
PS_GenChar
根据原始图像生成指纹特征存于CharBuffer1或CharBuffer2
03H
PS_Match
精确比对CharBuffer1与CharBuffer2中的特征文件
04H
PS_Search
以CharBuffer1或CharBuffer2中的特征文件搜索整个或部分指纹库
05H
PS_RegModel
将CharBuffer1与CharBuffer2中的特征文件合并生成模块存于CharBuffer1与CharBuffer2
06H
PS_StoreChar
将数据缓冲区中的文件存到flash指纹库中
0CH
PS_DeletChar
删除flash指纹库中的一个特征文件
0DH
PS_Empty
清空flash指纹库
0EH
PS_WriteReg
设置系统参数
0FH
PS_ReadSysPara
读系统基本参数
1BH
PS_HighSpeedSearch
高速搜索FLASH
1DH
PS_ValidTempleteNum
读有效模板个数

注:AS60x指纹识别SOC通讯的指令详解介绍了每一条指令的发送格式及接收应答的格式。这里不再详细说明。
3.管理系统设计
    系统初始状态循环执行指纹识别任务,当k_right按键按下后(按键扫描在定时器中进行,按键名自定义),系统进入管理员认证界面,管理人员需要进行指纹认证,确认身份正确后才能进入管理员界面,进入指纹管理界面后,管理员可以对指纹库中的指纹进行删除和添加新的指纹,功能按键在管理界面会有提示。在录入和删除指纹时,界面上还会显示指纹库中可用指纹的个数。指纹系统在执行各种任务时根据不同的情况,还会对用户进行相应的提示。

三、项目测试

1. 测试方案
录入5个不同的指纹存入指纹识别系统,每个指纹进行10次指纹识别,测试从手指在指纹模块放置好开始记录,分别记录不同指纹识别成功的次数,识别所需要的时间及成功开关门的次数。
测试器材:指纹识别模块、stm32、舵机、秒表。
2. 测试结果
  测试结果如表3-1
指纹类型
识别次数
成功次数
平均耗时/s
开门次数
1号指纹
10
    10
     2.23
     10
2号指纹
    10
     9
     2.1
     10
3号指纹
    10
    10
     2.35
     10
4号指纹
    10
     8
     2.63
     10
5号指纹
    10
    10
     2.52
     10
  从指纹识别的成功次数可以看出指纹识别的成功率还不错,识别不出来觉大部分原因是因为手指没有放置好。但是识别时间较长,之前用串口接指纹模块用上位机测试过,识别过程时间有点长,这应该主要是硬件的问题。至于控制舵机开关门没什么问题。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表