多功能生物识别智能锁系统设计与实现

2019-09-17 08:27徐金荣高磊
电子技术与软件工程 2019年16期
关键词:管理员端口指纹

文/徐金荣 高磊

1 课题研究意义及背景

自从人类社会文明产生,人类在某些场合所需要的隐私需求愈加,相同的,人类对于隐私的保护要求更加严格。在最开始的时候,人们使用挂钩、插销这种方式进行保护,但这种方式安全系数不高,非常容易进行破解。此后人们设计出了机械结构锁,在很大程度上提高了安全性,并在之后很大一段时间都具有很大的安全性。但在此之后,机械锁的安全性越来越低,破解也越来越快。更加重要的是由于机械锁所带来的不便,人们往往需要带非常多的钥匙,一旦忘记携带,会带来非常大的不方便,从而无法解锁。

此后人类发明的解锁方式越来越多,在传统的机械锁方式上,人们又发明了电子密码锁,这种解锁方式在某些程度上提升了一定的安全性,优化了传统的机械锁解锁方式,人们不需要像传统的机械锁一样,携带非常多的钥匙,人们只需要记住密码就可以进行解锁,提供了很大的便利性。

图1:系统设计流程图

在此后,人们又开发了一种解锁方式,那就是应用生物特征来进行解锁。这种解锁方式更加提升了安全性,并且这种解锁方式与前两种解锁方式相比,这种解锁方式没有传统机械锁解锁方式的复杂性,无需像传统机械锁一样携带非常不便的钥匙来进行解锁,也无需像电子密码锁一样,需要记住非常多的密码来进行解锁。这种解锁方式只需要使用每个人独特的生物特征来进行解锁。这种生物特征具备独一无二的特性,并且为生物个体所自然携带。

1.1 生物特征概述

图2:程序设计流程图

图3:矩阵键盘程序编程流程图

每个生物个体都具有唯一的可以测量或者可以验证的生理特征或者行为方式,这就是生物特征。它包括两种特征,一种是生理特征,例如指纹,面容,虹膜,指纹,声音等特征,另一种是行为特征,例如步态,笔迹,动作等特征。

1.1.1 指纹

指纹,也就是传统意义上的手印,是人手指末端腹部表皮上所突出来的各种凹凸纹路。在发育过程中,虽然人的三个皮层—表皮层、真皮层以及基质层—这三个皮层都在同时发育,但由于不同层发育速率不同,发育出来的皮肤软硬程度不同从而产生了凹凸纹路,这种纹路的产生是由遗传以及环境的共同作用所决定的。

指纹大致上有三种类型斗型、弓形以及箕型。这种分类方式是根据皮下组织对指肚表皮顶压方向的不同所决定的。从目前的科学发现来看,现如今除了极个别先天性无指纹的个体外还没有发现过有指纹完全相同的个体出现。所以指纹具备独一无二的特性。正是由于指纹的这种特性,使得指纹识别技术的安全性非常之高,指纹成为生物特征应用的不二之选。另外,由于指纹容易获取,比对方便,更加为指纹的普及提供了支持。

1.1.2 指纹识别技术

指纹识别技术作为一种热度最大,技术最成熟,并且最被广大群众所接受的一种技术,已经被全球大部分的国家所接受,并且已经被广泛使用到了各种邻域,各种地方,例如政府、军队、银行等地方。

由于每个人指纹的纹路图案,特征点都不同,并且呈现唯一且终身不变性,人们可以将这些信息进行比对,从而校验身份信息。因为指纹其实是一种非常复杂的纹路,如果将指纹的图像完全保存,并在细节上进行比对的话,无疑是一件非常繁琐以及复杂的事情,因而这种比对主要是根据人手指指纹的特征点进行比对,而不是直接存储图像。

指纹特征点比对主要包括几个部分

(1)总体特征,这是指人肉眼就可以观察到的区域,包括纹形、模式区、核心点、三角点以及纹数。

(2)纹形,这是研究指纹的专家根据人手指的脊线走向以及分布情况所确定的不同类型。

(3)模式区,这种区域是指纹上包括了总体特征的区域,比对时主要分辨指纹所属纹形。

(4)核心点,这个特征点位于指纹纹路的渐进中心,这是指纹比对中最为重要的参考点。

(5)三角点,这是指离核心点最近的分叉点或者断点,这是纹数计算的开始地方。

(6)纹数,这是指指纹模式区内从核心点到三角点之间的指纹纹路的数量。

2 多功能智能锁系统的整体分析

本论文研究的内容是多功能智能锁系统设计,既然是一个系统,那么首先需要了解这个系统的主要功能是什么,可以实现密码锁,另一个是指纹锁。怎么实现?可以用单片机,那么我们首先就需要确定,使用何种单片机。在单片机的领域里,89C51单片机算得上是最基础的芯片,大部分的用户在学习时,第一个接触的单片机大多数都是51单片机,虽然在性能上51单片机不如后代的一系列单片机,同样的在操作的复杂性上51单片机无疑是要优于后代的芯片的。然后就是另一种常用的单片机,32系列单片机。这个系列的单片机性能要优于51单片机,功能性方面也要优于51单片机。通过对本项目的分析,指纹模块需要两个I/O口以及一个VCC和一个GND,矩阵键盘需要8个I/O口,LCD1602显示屏需要11个I/O口以及两个GND端口,两个VCC端口,AT24C02芯片需要两个I/O口以及一个VCC端口一个GND端口,再有就是剩下的控制电路,例如LED灯,电磁开关等。经过分析,本系统设计中需要的I/O端口使用数量没有超过32个。另外,在功能性上该系统设计中没有用到特别多的功能,经过考虑,最终决定使用STC89C52芯片,根据要求来看,该芯片完全可以达到本系统设计的要求。

本项目功能之一是指纹锁,这种设备使用的是个体的生物特征指纹,需要对指纹的信息进行判断比对,从而来实现指纹锁的功能。经过选择,本设计最终选用了ATK-AS608模块来使用,这个指纹模块识别精度高,使用方便,只需要通过串口通讯就可以实现功能。

此外,通过对该系统的分析,如果只完成指纹开锁功能的话,非常明显是无法在正常生活中使用的。人在正常生活中,经常会出现指纹受损的情况,或者出现指纹过湿、过脏的情况,这种情况下,不管是什么设备都很难获取到清晰的指纹图像,造成无法比对的情况。为了避免这种情况,在本次设计中,额外增加了密码功能,以防止该情况出现。在增加密码功能后,就有了一个新的问题,STC89C52芯片在运行程序后,是从最开始进行运行的,因此,如果设备的密码直接写在单片机的程序中的话,那么如果遇到特殊情况,单片机进行了重新启动,那么密码信息会恢复到最初的情况,因此,密码信息不可以写到单片机的程序中。就此,本项目中选择了一种EEPROM芯片用来保存密码信息,这样,密码信息不会丢失,只需要在程序中初始化一次设备就可以。

另外,还有最重要的一点,指纹锁在使用时必然会遇到,例如保存指纹、删除指纹、修改密码等情况的出现。但是这种情况下,不可能任何一个人都有权限来操作。因此该设备需要增添了管理员功能,以此来保证设备运行的安全性。思路流程图如图1所示。

2.1 程序设计流程

在进行程序编写时,首先需要了解该系统的逻辑。由于本系统设计有两种开锁方式,一种是指纹方式,另一种是密码方式,经过考虑后,本设计选择将这两种方法分开,提供给用户选择,使得用户可以自由选择想使用的方式。之后就是比对程序,在密码模式下,用户需要通过键盘来输入密码,所以在设计程序的时候,程序需要可以获取用户在键盘上所按下的内容。在获取到内容之后,程序需要将获取到的内容同保存到AT24C02中的数据做对比,如果比对成功则解锁成功,如果比对失败则解锁失败。另一种模式是指纹模式,与密码模式相同,程序需要获取到指纹的图像与存在大容量FLASH中的指纹数据做对比,检索成功后则开锁成功,反之,则解锁失败。另外,之前说过,程序设计了管理员模式,在分析逻辑的时候决定将管理员模式同密码模式相结合,也就是如果输入的是开锁密码,则进行解锁操作,如果输入的是管理员密码则进入管理员操作界面。在这个界面用户可以对指纹,以及密码进行操作。整体流程图如图2所示。

2.2 程序设计

程序设计也就是各个部分的合理设计,在本系统中主要需要设计软件的硬件是矩阵键盘、LCD1602显示屏、指纹模块以及AT24C02。只有这几个设备各个部分之间合理搭配,本系统才可以正常工作。

2.2.1 矩阵键盘程序设计

想要了解矩阵键盘的程序编写,必须要知道键盘控制的流程。键盘的流程过程图如图3所示。

矩阵键盘在使用时主要有两种方法,一种是键扫描法,另一种是线反转法,这两种方法前面已经介绍过,再次不做重复介绍。

2.2.2 LCD1602显示屏软件设计

LCD1602在使用时需要对其的三个端口进行设置,这三个端口分别是EN、RS以及RW,在进行不同的操作的时候这三个端口需要设置不同的状态。例如在写数据的时候,RS和RW分别需要设置为1和0,在读数据的时候需要将RS和RW都设置为1。在写数据的时候,用户需要将数据写入数据缓存器或者字符发生器中,两者的区别是,如果需要显示的数据是用户自定义的字符信息模板,此时就需要将数据写到字符发生器的00H~07H地址中。如果需要显示的字符是系统内部已经定义好的字符信息模板时,就将该信息保存到DR当中,之后在显示的时候,模块内部会将地址指针指向需要显示的字符模板所在的地址。同样,在获取数据的时候,程序会将地址计数器指定到字符发生器或者数据存储器中所需要的地址,读出八位数据,然后暂时保存在DR中,然后再由模块内部总线传输到D0~D7上。

2.2.3 指纹模块软件设计

指纹模块ATK-AS608在使用时需要遵循一种规范,也就是通信协议。只有这种协议正确,单片机或者上位机与指纹模块的连接才会正常。在编写软件时,用户首先需要向指纹模块发送规定的通信协议,使得单片机和指纹模块连接。在进行数据传输时,模块会反馈一些确认码,软件在编写的时候,可以根据这些确认码来判断是否正确,以及错误的原因。用户可以根据反馈回来的确认码来对程序或者硬件设备进行调试。

2.2.4 AT24C02软件设计

AT24C02主要是用来保存数据的,这个芯片在使用的时候大多数情况下是使用I2C通信协议的方法来进行通信。

图4

图5:ATK-AS608串口调试界面

I2C(Inter-integrated Circuit)总线常用于不同设备之间的短距离通信,在大多数的情况下,主要用于核心与外部设备之间的数据交换,因为它的操作简便,只需要两个端口就可以进行操作。在历史上,最早运用该技术的是1982年飞利浦自行开发并应用的,当然在开始的时候,该技术的频率,地址大小都有限制,在此之后,公司优化了该芯片的传输频率以及地址大小。在I2C的基础上,1995年Intel提出了“System Management Bus” (SMBus),用于低速设备通信,SMBus把时钟频率限制在10kHz~100kHz,但I2C可以支持0kHz~5MHz的设备:普通模式(100kHz即100kbps)、快速模式(400kHz)、快速模式+(1MHz)、高速模式(3.4MHz)和超高速模式(5MHz)。

正常我们所使用的通信方式是使用串行端口,这种方式与I2C通信是有区别的。使用串口方式进行通讯的时候,数据传输方式是异步传输的,也就是说,每时每刻数据只能是发送或者接受,而不能同时进行。并且,在使用串口通讯的时候,传输双方必须规定一个速率,只有速率相同,两者才可以正常进行通讯,某一方的时钟频率相差很大都会导致数据传输混乱。 异步串行端口在每个数据帧中都要插入至少一个起始位和一个终止位,意味着每传输8bits的数据实际要花费10bits的传输时间,从而降低了数据传输速率。另一个问题是异步串行端口的设计就是针对两个设备之间通信的,那么如果有多个设备连接到一个串口上,就必须解决信号碰撞的问题(bus contention),通常要通过额外硬件来完成。 最后就是数据传输速率,异步串行通信并没有一个理论上的速率限制,大部分UART设备只支持一些特定的波特率,最高通常在230400bps左右。I2C最少只需要两根线,和异步串口类似,但可以支持多个SLACVE设备。和SPI不同的是,I2C可以支持MUL-MASTER系统,允许有多个MASTER并且每个MASTER都可以与所有的SLACVES通信(MASTER之间不可通过I2C通信,并且每个MASTER只能轮流使用I2C总线)。MASTER是指启动数据传输的设备并在总线上生成时钟信号以驱动该传输,而被寻址的设备都作为SLACVES。I2C协议把传输的消息分为两种类型的帧:一个地址帧——用于MASTER指明消息发往哪个SLACVE;一个或多个数据帧——由MASTER发往SLACVE的数据(或由SLACVE发往MASTER),每一帧是8-bit的数据。注:协议要求每次放到SDA上的字节长度必须为8位,并且每个字节后须跟一个ACK位,在下面会讲到。数据在SCL处于低电平时放到SDA上,并在SCL变为高电平后进行采样。读写数据和SCL上升沿之间的时间间隔是由总线上的设备自己定义的,不同芯片可能有差异。

在进行软件编写的时候,AT24C02需要编写开始、结束、应答、等待的信号来模仿I2C协议,从而达到单片机与芯片通信的目的。

2.2.5 管理员模式设计

对于该项目的指纹锁系统设计,需要配套设置管理员界面,管理员掌握最高权限可对用户指纹信息进行管理。管理员界面的进入必须有要求,不能是任何用户都可以进入,由此来增加锁设备的安全性。经过分析,通过输入密码进入管理员系统是最优解。但是考虑到之前设计过密码的开锁方式,如果单独设置一个管理员密码输入界面,则占用了非常大的系统资源。所以,在进行管理员设置时,是通过与开锁密码相同的界面进入的。但如此一来,如果开锁密码与管理员密码相同的话,就会出现程序逻辑问题。所以,在设置各种密码时,是需要将开锁密码与管理员密码分开设置的,不能设置为相同的密码,这样一来,既省去了很多的系统资源,又增加了设备的安全性。如图4所示。

3 实物介绍、测试和分析

本文设计的是基于单片机的指纹锁系统,首先通过对任务需求的分析,确定了所需要使用的芯片,确定了所需要使用的各种模块。之后对各个模块以及芯片进行了学习,通过查阅各种器件的工作原理,芯片的中英文手册等,绘制出原理/仿真图,然后进过硬件电路整体的制作焊接,并为了实物的美观,为该设备设计了一款外包装。在整体硬件完成之后,开始进行软件的编写。通过之前对各个器件工作原理以及中英文手册的学习,首先对各个模块进行了分开调试,熟悉了不同模块的工作原理,并实现了模块的不同功能。在此基础上,按照事先思考过的指纹锁解锁流程,按照一定的逻辑将各个模块之间进行了整合,完成了部分功能,使得各个模块之间可以直接或者间接的进行通讯。最后设计了指纹模块的管理员模式,使得用户可以对程序深层的数据进行修改。经过最终的调试后,该电路系统很好的实现了开锁功能,不仅可以实现指纹的开锁功能,也可以实现密码开锁功能,并且管理员系统也可以正常的对程序深层数据进行修改,达到了任务书所规定的要求。

3.1 硬件测试及分析

首先,通过系统的要求分析,确定了所需要使用的模块,设计了所需要的硬件电路,之后需要对各个模块进行测试调试,确保每一个模块可以正常工作。首先对本项目中的核心MCU进行测试,经过测试,MCU工作正常,I/O端口可以被正常拉高或者拉低,串口工作正常,可以正常使用串口进行通讯。然后对LCD1602显示器进行了测试,为了使得该硬件正常进行显示,需要在硬件的V0端口外接一个滑动变阻器,通过调节滑动变阻器的阻值,显示设备可以正常工作,显示清晰。之后对矩阵按键进行了测试,矩阵按键工作正常,可以正常进行按键操作。然后对AT24C02芯片进行了测试,芯片可以正常保存以及读取数据。最后通过串口对指纹模块进行了测试,模块工作正常,获取指纹图像清晰,串口调试图如图5所示。此后,将各个模块进行整合,通过Proteus软件进行了硬件仿真,硬件调试正常。通过对模块的合理分析,编写了整体软件程序,通过编译器进行编译下载到实体测试后,各个模块运行正常,模块之间的直接与间接通讯正常。较好的完成了基本任务,符合毕业设计任务书要求。

4 总结

本设计是基于单片机的指纹锁系统,该系统即可以实现指纹的开锁设计,也可以实现密码的开锁设计。并在此基础上增添了管理员功能,大大增加了系统的安全性。该系统使用简便,指纹识别准确度高,开锁简便,没有传统机械锁的复杂,也不需要携带繁重的钥匙。同时,该系统使用了生物特征指纹来进行解锁,破解难度高,安全性好。

在本设计中,还有很多需要改善的地方,例如,在设备最开始的时候,用户需要选择输入方式,程序不能自动判断,增加了程序的繁复性。再有就是管理员界面操作复杂,进行一步操作,往往需要两到三步的操作才可以完成。另外,该指纹锁系统,使用的时候,各种设备一直都保持在运行状态,需要增加休眠模式来减缓系统的能耗等。

猜你喜欢
管理员端口指纹
像侦探一样提取指纹
我是图书管理员
我是图书管理员
端口阻塞与优先级
基于自适应稀疏变换的指纹图像压缩
初识电脑端口
8端口IO-Link参考设计套件加快开发速度