基于指纹图像识别的电子锁设计
2023-07-26许本渝余粟
许本渝,余粟
(上海工程技术大学 机械与汽车工程学院,上海,201620)
0 引言
在生活中常见的解锁领域,身份证、银行卡、IC 卡等间接开锁方式最为常见,这些方式存在单一性和易遗失性等缺陷,从而使解锁的精确度和安全性降低。现在,解锁领域的新技术指纹识别技术迅速发展,它是基于生物特征的一种高级手段[1]。由于指纹是人体先天的特征,并且每个人的指纹都是不相同的[2],可以利用这一特性创造出一种新的解锁方式[3]。
早在唐朝时期,指纹[4][5]技术就传入了日本、印度、阿拉伯等国家,再几经流传,西方国家也引进了指纹技术,这奠定近代指纹学诞生的基础[6]。国外有很多专门从事指纹识别技术的研究机构与公司,美国的技术水平处于领先地位,如Identix Design Co、East Shore、Digital Persona、Veridicom 公司等,大半导体公司正朝着研发指纹识别芯片的目的进行研究,Amtd 公司由客户方提供识别算法,开发出包含算法的指纹芯片,很方便地嵌入式应用在指纹识别系统中。随着市场的推动和技术的提高,电子信息技术飞速发展,与之相关的方方面面都受之影响,指纹识别技术也在其进步的行列之中[7]。
为了顺应时代发展的潮流,研究并开发出一款基于指纹识别的电子锁十分必要[8]。设计利用STM32f103C8T6、AS608 指纹模块、LCD12864 液晶显示屏、电磁锁、制作一个简易的指纹锁。
1 系统设计方案
本系统采用 ST 公司的 STM32F1 系列的微处理器作为主控制器,完成以下设计功能:
(1)增加指纹、按键输入密码开锁、删除指纹;
(2)能够实时显示用户指纹解锁的信息;
(3)通过指纹的比对,正确的指纹信息可以将电磁锁打开。
■1.1 主控芯片论证与选择
在主控芯片的选择上提出了三种方案,第一种采用51系列单片机STC98C51RC,第二种采用FPGA 的Cyclone IV EP4CE6F17C8N 芯片,第三种采用 STM32F1 系列单片机STM32F103C8T6。各类芯片参数如表1 所示。
表1 各芯片参数对比表
通过对各种芯片的功耗、存储容量等要求的综合分析,其他单片机相比,STM32F 单片机的数据总线更宽,存储容量更大,串口数更多,综合比较稳定性更强。因此,本设计的开发采用STM32F103C8T6 作为主控芯片。
■1.2 指纹模块论证与选择
在指纹模块的选择上提出了三种方案:第一种方案为光学式,第二种方案为电容式,第三种方案为超声波式。各类指纹模块的参数如表2 所示。
表2 指纹模块的性能比较
通过对各类指纹模块的性价比、功耗、耐磨损等需求程度进行综合分析发现,AS608 光学式指纹模块相对于其他两种指纹模块,有较快的指纹识别速度以及良好的使用寿命,即耐磨性较高。兼顾成本与性能,因此本设计的开发采用AS608 光学式指纹模块。
■1.3 显示模块论证与选择
在对市场上的显示模块进行了解后,提出了四种方案,分别为普通数码管显示、点阵式、LCD1602 液晶、LCD12864 液晶。各类显示模块的优缺点比较如表3 所示。
表3 显示模块的优缺点比较
通过对显示模块的优缺点分析,LCD12864 液晶显示屏在规格上有体积小、功耗低等特点,在显示水平上有显示信息量大且可汉字和图形的优势,适合本设计使用。因此本设计的开发采用LCD12864 液晶显示屏。
2 硬件电路设计
本设计以STM32 单片机为核心,搭载四大主要部分:指纹模块、矩阵按键模块、继电器、显示模块。系统设计框图如图1 所示。
图1 系统框图
■2.1 指纹模块部分
本设计选择的是AS608 光学式指纹模块,图2 是其接口图。
图2 接口图
指纹模块主要由控制器组成,控制器外接CMOS 芯片,接收指纹图像信息,生成对应模板,如图3 所示。如果手指两次输入指纹,系统会自动生成用户的指纹,然后传输到系统数据库。当输入新的指纹信息,系统自动进行处理,与数据库中的指纹特征进行比对,给出匹配结果。指纹模块的具体过程:首先扫描指纹,生成指纹特征,然后合成模板存入系统数据库中。
图3 指纹模板
■2.2 显示模块部分
液晶显示主要是利用电流刺激的原理,让液晶显示屏形成了点,线,面的图像。LCD12864 体积小,能耗低,操作简单。液晶显示屏主要是帮助系统的数据显示,运行过程前要对系统进行初始化,否则系统是无法正常使用的。显示模块在进行数据指令之前,一定确保单片机没有其他功能模块的运行,然后再依照具体的传输指令显示到液晶屏幕上[7]。图4 为显示屏与单片机的接口连接图。
图4 显示屏引脚连接图
■2.3 按键部分
本次设计所采用的按键是4×4 矩阵键盘。通过数字按键输入密码,使其进入设置页面。设置页面可以选择的操作:指纹信息的添加、指纹信息的删除、选择手动开锁、选择更改密码。
■2.4 电源部分
本设计的电源选择用到USВ 接口给STM32 和电磁锁供电。给STM32 供电方案有两种其工作电压为5V,一是通过电源插口直接连接到芯片,二是通过按键开关来选择是否给芯片通电。给电磁锁通电的工作电压为12V,区别于芯片工作电压。
3 系统软件设计
程序检查过程:初始化各个模块,对按键的状态进行检测,判断是否被按下,同时对其进行相关子程序的调用。
主程序设计流程如图5 所示。
图5 主程序流程
■3.1 按键模块
电路上电,随即来到主屏幕欢迎界面。按下任意按键,发送一个低电平信号给单片机,作为按键电路的检测信号。当检测到按键信号时,输入管理员密码后,则进入管理员模式,选择相应的指令操作,即增加指纹、手动开始、删除密码、更改密码。在本次设计,将*定义为删除,当输入密码错误时可以一位删除密码;将#定义为确定,当输入密码后点击确定打开密码锁。C、D 两个按键定义为返回,可以返回上层页面。A 按键定义为进入设置界面,В 按键未定义。
■3.2 指纹模块
指纹模块通过芯片的串口发送与接收命令完成,通过串口发送命令,等待模块传回数据,由单片机进行数据的处理。扫描指纹后随即进行录入,模块将生成指纹图像特征、合成指纹模板,并将合成的指纹图像模板存储在AS608 的数据库中。在将要进行开锁时,即进行指纹识别功能,将用户的指纹图像进行特征值生成,并在数据库中进行搜索比对,成功匹配到对应的特征值图像后,即完成了识别功能,驱动电磁锁的弹片打开。
设计所采用串口通信方式,其数据发送和接收的流程图如图6 所示。
图6 数据收发流程图
■3.3 显示模块
显示模块主要是为了完成系统的数据显示,电路上电后,LCD12864 立即进行初始化,并显示初始界面即欢迎界面。在系统接收到相关指令后就可以将接收到的信息显示在液晶屏幕上。
4 数据测试
本设计的主要实现的功能可以完成对指纹的录入,可存储大约300 个指纹数据,针对指纹锁来说,可以方便用户录入多个手指的指纹以防个别指纹识别的失败。通过按键实现增加指纹、键盘开锁、删除指纹、更改密码的功能。LCD会显示相应的结果,如图7 所示。
图7 实物图
针对指纹锁的识别精度测试,选择了三个不同用户及其不同手指指纹进行对识别精度以及开锁成功率的性能测试。分别测试了用户一、用户二、用户三的拇指、食指、中指指纹共9 个不同指纹,每个指纹30 进行次解锁,共270 次的数据测试。具体测试数据如表4 所示。
表4 识别成功率(识别精度)数据测试表
在进行数据分析时,将成功未开锁的情况也视为识别失败,其原因是临时断电的原因导致无法解锁,该部分的结果可以用于调试在电源部分的需要。
指纹锁识别成功率(识别精度)的计算是比对成功次数比上总识别次数。由数据测试结果可知,指纹锁的识别精度能达到97%左右。在使用时间较短的时间内,解锁的成功率是非常高的。但由于指纹模块存在耐磨性和环境因素的指标考量,随着使用寿命的增加,指纹锁的识别精度也会随之降低。综上所述,本设计的指纹锁在使用寿命内的日常使用和研究,还是很可观的。
5 结束语
本文主要针对防盗系统的安全性和便利性设计了一款基于指纹图像识别的电子锁,由于现代人愈来愈注重安全系统的保障,加上技术的齿轮不断向前转动,设计这款电子锁为现实所需。经过测试该设计能够正常地采集开锁指纹和完成指纹比对,可以准确地识别指纹开锁,并完成删除指纹、更改密码等功能。指纹锁的体积小、使用方便、安全可靠,适合各种情况的使用。通过对指纹锁设计,对指纹识别这个技术有了更新的认识,相信以后指纹锁越来越被人们所接受,在生活中也将会越来越普及,能够更加地保障人民的财产安全。虽然本设计的功能基本到达,但关于指纹模块的开发尚未结束,很多东西尚待开发,在未来的设计中会进一步得到创新和完善。