基于Arduino的指纹识别门锁设计系统方法

2023-12-27 12:59张然梅益罗彦英李国其
计算技术与自动化 2023年4期
关键词:电磁锁指纹识别门锁

张然,梅益,罗彦英,李国其

(1.贵州大学 现代制造技术教育部重点实验室,贵州 贵阳 550025;2.贵州大学 机械工程学院,贵州 贵阳 550025)

指纹识别门锁是一种以人体指纹作为识别手段和载体的智能锁,是现代计算机技术、电工电子技术、机械技术和现代硬件技术的结合。虽然不同指纹间的基本轮廓可能相同,但是每个指纹之间的细节特征不完全相同。在具体的使用过程中,用户首先将手指按压在指纹传感器上来读取和采集指纹,再将采集到的指纹与指纹库中的信息进行比对,以验证其身份的真实性。相对于其他生物特征识别,指纹具有容易采集、识别准确率高等优点。基于以上特点,指纹识别是应用最广泛、最可靠的生物特征识别(biometrics)方法。指纹识别算法是包含了指纹采集和压缩、图像增强(预处理)、细节特征提取、指纹分类、特征比对(匹配)等阶段的算法。基于此,本文设计开发了一种指纹锁系统,包括指纹识别、报警、开锁功能,该系统安全可靠,具有很高的实用价值。

1 指纹识别门锁硬件

1.1 指纹识别门锁控制方案及整体框架

指纹识别门锁主要能实现指纹管理、指纹检测与识别、界面显示、报警、开锁功能。硬件结构图如图1所示。

图1 系统硬件结构图

本设计以高性能的控制单元为核心,指纹加载识别模块、继电器电源模块、报警模块、继电器开锁模块、液晶显示模块,实现安全稳定的门锁设计,提供良好的用户体验。除Arduino控制模块外,其他各部分具体介绍如下:

(1)指纹模块:实现储存、识别、对比指纹功能,对指纹进行准确判断,以实现指纹开锁功能;

(2)显示模块:根据指纹的不同状态显示不同内容,以提醒用户,实现良好的人机交互;

(3)报警模块:指纹识别连续出错后,蜂鸣器发出报警声提醒用户;

(4)继电器开锁模块:待指纹匹配成功后,继电器动作,实现开锁功能;

(5)继电器电源模块:为继电器提供稳定电压,保证继电器有效工作;

1.2 指纹识别门锁硬件选型

本门锁设计使用Arduino Uno作为主控制板。Uno的处理器核心是ATmega328,其包括1个9 V DC入,为Arduino板提供外部电源输入、1个USB口,是用来将编写好的程序烧录到控制板的串口;1个DC 3.3 V输出、6个模拟输入/输出端;1个DC 5 V输出和14个数字输入/输出端和1个复位按钮。

指纹传感器选用光学指纹识别模块AS608。这款传感器采用内置DSP运算单元的高性能的AS608指纹识别芯片并且对传统光路进行了大幅优化,其光路结构更加紧凑、高效;在采集图像的时候高效快速并能准确识别指纹特征。

作为系统与用户视觉交互的窗口,显示模块必不可少。这里选用了液晶显示器LCD 1602作为显示模块。该显示屏可用来显示字母、数字、符号等。LCD1602连接Arduino Uno时需要7条线,这不仅较为复杂,而且非常浪费端口数。为解决此问题,本文选用带有I2C总线的LCD 1602液晶显示屏,再用Arduino控制此模块。这种办法只需用4条线就可以完全控制显示屏,大大简化了线路,使端口得到有效利用。带I2C总线的显示屏接口如表1所示。

表1 带I2C总线的LCD1602引脚说明

作为智能门锁的一部分,按键模块必不可少。本设计中按键模块实现两方面功能:激活系统和初始化识别次数。

为了防止指纹识别门锁的非法入侵,本文设置了报警电路,在指纹验证出现连续错误后触发有源蜂鸣器。相比于无源蜂鸣器,其在程序控制方面更有优势。

本设计选用小型电磁阀锁,这种锁采用纯铜线圈,开关顺畅、性能稳定。工作电压为12 V,通电缩回,断电弹出。电磁阀长时间吸合可能引起电锁发烫,从而烧毁线圈,所以它仅适用于点动的开关,不适合长时间或者过度频繁开关。

开关电源作为一种高频化电能转换装置,其作用在于将标准电压转换为用户需要的电压。本设计采用的型号为S-12-1,即输入电压为AC 220 V,输出电压为DC 12 V 1 A。

单片机I/O口输出为5 V电平,而电磁锁正常工作电压为12 V,所以无法直接由单片机驱动电磁锁,需要增加一个继电器辅助控制。本设计采用开关电源和MOS管模块控制电磁锁的吸合。

MOS管又称为场效应管,共有三个连接端口,分别为信号触发端、输入端、输出端。信号触发端由单片机I/O口的高低电平控制,输入端连接开关电源的输出端,输出端连接电磁锁。当发出开锁信号后,I/O口实现低、高电平之间的转换,输出端电压由0 V变为12 V,电磁锁吸合。MOS管输入与输出不会产生干涉,确保其工作时安全、可靠。

2 系统软件设计

指纹识别门锁软件设计使用Arduino IDE进行Arduino程序的编写和开发。指纹识别门锁软件设计主要包括程序头设计、初始化程序设计、主程序框架设计、光学指纹模块采集指纹程序设计,下面作逐一介绍。

2.1 程序头设计

程序头部分主要是进行加载库函数、设定显示屏参数、设置软接口、设置指纹模块的变量和定义全局变量这些工作。

2.2 初始化程序设计

初始化程序只在系统上电时执行一次,主要功能是设置端口的状态、初始化LCD 1602显示屏、设置串口波特率、检测串口连接情况、检测指纹传感器连接情况、返回指纹库中模板数,以及根据上述不同情况在显示屏中输出对应内容。

具体执行过程如下:

(1)第一步“设置端口状态”,通过函数pinMode()将端口定义为输入或输出状态,从而驱动原件或接收外部信号;

(2)第二步“初始化显示屏”,初始化LCD并且使背景灯亮,使指纹门锁系统后续能根据运行情况及时向用户反馈;

(3)第三步“设置串口波特率”,即设置串口的通讯速率;

(4)第四步“检测串口通讯信状态”,如果此时通讯错误,则一直循环执行此过程,直到通信正常;

(5)第五步“设置传感器波特率”,传感器波特率必须与串口波特率一致,否则无法正常通信;

(6)第六步“检测光学指纹传感器状态”,如果此时连接错误,则程序停止。

2.3 主程序框架设计

主程序框图如图2所示。通电后系统进入待机状态,等待按钮被按下。检测到按钮动作后开始识别指纹,如果指纹识别成功,则继电器动作门锁打开;如果第一次指纹识别失败,则重复此过程,继续检测。当指纹连续读取错误5次后触发报警装置,蜂鸣器发出声音,警告非法入侵者。

2.4 指纹识别程序设计

在系统发出指纹识别命令后,指纹传感器开始工作。指纹的识别包括三个步骤,分别是读取图像(finger.getImage)、图像转特征(finger.Image2Tz)、匹配指纹(finger.fastSearch)。只有三个步骤顺序执行并且全部成功才能完成一次正确的指纹识别过程,若其中一个步骤失败,则指纹识别失败。

2.5 显示屏工作程序设计

LCD 1602显示屏在使用前要在程序头部分进行地址和行列数的设置。在工作过程中首先进行初始化,之后设置显示坐标、显示内容以及显示时间。

图2 主程序框图

3 指纹门锁功能测试

3.1 传感器性能测试

在添加指纹时,传感器连续采集两次,最后合成为一个模板。采集的模板情况受到手指干湿情况、传感器表面光洁程度等因素的影响。

在本次试验中,一共采集15人的指纹,采集次数300次,共生成指纹模板150个,匹配次数360次(每个手指匹配两次,其中60次对未录入指纹进行匹配),测试环境湿度为20% RH,表2为测试的统计结果。

表2 指纹匹配测试结果

表2为本次实验的测试结果,由于样本数不够大,测试对象都是成人,及环境因素等,该数据并不能完全反映实际的使用情况。但根据目前的测试结果来看,指纹传感器可以满足使用需求。

3.2 指纹识别门锁功能测试

根据设计方案,制作指纹识别门锁的实物,如图3所示。其包括Arduino Uno、AS608光学指纹传感器、带I2C的LCD 1602显示屏、有源蜂鸣器、电磁锁、开关电源和MOS管模块。

3.2.1 指纹门锁初始化程序测试

初始化功能测试是指系统的开机测试,测试的结果作为初步判断系统能否正常工作的依据。系统在开机后首先检测指纹传感器是否连接正常,若指纹传感器连接正常,通信正常,则显示屏显示“Found sensor”。

图3 指纹识别门锁实物图

3.2.2 指纹门锁开锁测试

在待机状态下显示屏没有任何输出,按下按钮后屏幕上显示“Please put your finger on”,这时用户根据提示将手指放置在传感器上等待检测指纹。验证指纹通过后继电器动作,门锁打开,同时显示屏上输出“Welcome Back Mr. Quesser”。

电磁锁由于内部弹簧弹力的作用,在未通电时锁舌弹出。在单片机发出开锁信号后,内部铜管被磁化产生电磁吸力,并且此时吸力大于弹簧弹力,将实心锁舌吸回。在实验中发现,在吸合时间大于10 s后,电磁锁内的纯铜线圈发热现象比较严重,有可能会烧坏锁芯。所以本设计中将电磁锁吸合时间设置为5 s,这样不仅保证了足够的开门时间,又保证了电磁锁有足够的使用寿命和安全性。

3.2.3 指纹门锁报警测试

当指纹识别失败后,显示器输出“Unqualified Access deny”,这时用户可以在间隔2 s后继续识别指纹,在此期间可以调整手指位置,清洁指面,保证识别的准确率。如果在5次之内指纹识别成功,则门锁打开,并显示“Welcome Back Mr.Quesser”,如果出现非法入门或连续5次指纹识别错误,则报警电路输出逻辑电平的报警信号,蜂鸣器报警,以此警告非法用户。

4 实验分析

4.1 指纹传感器测试结果分析

传感器的理论据真率为1%,而在本次实验中,据真率测试结果为2.7%,高于理论值。这是由于传感器录入的指纹只包含手指面积的一部分,并没有全部覆盖,所以在使用过程中,如果手指放置的位置与首次录入时的位置不同,就会出现据真现象。为了避免用户在使用传感器过程中出现这种情况,影响指纹识别门锁的正常工作,可以对同一手指重复录入,使同一手指生成多个模板,保证识别成功率。

4.2 门锁开启过程中的性能分析

在门锁的使用过程中,会出现录入三次或者四次错误指纹后直接报警的状况,这并不是程序的逻辑有问题,而是由指纹传感器的工作原理决定的。指纹传感器指纹识别包括三个步骤:获取指纹图像、图像转特征、匹配指纹。只有三个步骤顺序执行并且全部成功才能完成一次正确的指纹识别。在本程序中,指纹识别的时间周期为2 s,如果2 s内没有放置指纹,则获取指纹图像步骤失败,后续过程不会执行,视为一次指纹识别失败。

5 结 论

本文设计了一款基于Arduino的指纹识别门锁系统,它将指纹识别技术与电磁锁结合,经过测试,光学指纹传感器能满足工作要求,并且性能可靠。指纹识别门锁的系统上电初始化功能、显示功能、按钮启动功能、开锁功能、报警功能均能正常工作,指纹识别门锁满足预期设计要求。

猜你喜欢
电磁锁指纹识别门锁
基于FTA的电磁锁故障分析
一种简易气门锁夹安装设备
6款热门智能门锁推荐
基于单片机指纹识别电子寄存柜设计
负极刀闸电磁锁故障分析及处理
地铁安全门电磁锁的优化研究
基于DCS系统的厂用电设备防误配置策略
指纹识别技术综述
钥匙门锁对对碰
基于大容量指纹识别的实时身份认证系统