陈钰闻 巨永锋 沈佳俊 杜 凯
(长安大学电子与控制工程学院)
智能锁具在工厂、军械库、机要室、医院、智能建筑、银行、宾馆、车场、学校及快递等领域广泛运用。传统的机械锁、卡片钥匙式电子锁及电子密码锁等存在一些问题,如机械锁必须使用机械钥匙开门,卡片钥匙式电子锁需要卡片作为钥匙开门,而且这两类锁都存在易复制、易被他人解锁和易丢失的问题;同样,传统电子密码锁也存在密码容易被盗等缺点。为此,笔者基于STM32F103ZET6单片机设计了一种以指纹和密码共同控制的指纹密码锁,将指纹的唯一性和多样性特征与现代科技相结合,使信息安全、经济安全、人身安全的保障相较于传统的锁具更加可靠、多样和便捷。
基于STM32F103ZET6单片机的指纹密码锁主要由总控制器、指纹模块、密码输入模块、显示模块、执行机构、声光报警模块、字库存储模块及其他扩展模块等组成(图1)。通过总控制器控制指纹模块,实现指纹的识别;指纹模块实现指纹的采集和保存功能;密码输入模块实现密码的输入、修改和保存,达到控制电磁锁的目的;显示模块用于实时显示设备的工作状态;触摸屏用于实现录取和删除指纹的功能,也可以提醒使用者进行下一步操作;声光报警模块的主要作用是实现信号传递;执行机构是电磁锁,通过总控制器对指纹模块和密码输入模块进行控制,实现电磁锁的打开与关闭功能;字库存储模块主要指SRAM和SD卡,用于液晶显示汉字;其他扩展模块包括电源、继电器等,起到提供电源、控制电路等作用。
图1 指纹密码锁组成结构框图
系统硬件结构设计包括电源模块、指纹模块、4×4矩阵键盘、显示模块、存储器模块、执行机构及其他扩展模块等。
电源输入部分采用USB接口供电,以提高其适应环境的能力。输入部分为+5V,输出部分有+5、+3.3V,其中+5V供系统模块使用,+3.3V属于外部扩展,便于系统与其他系统配合,提高本设计的兼容性与广泛的适应性。该模块采用AMS1117-3.3芯片,将+5V转换为+3.3V。系统电源模块如图2所示。
图2 系统电源模块
ATK-AS608是高性能的光学指纹识别模块,芯片内置DSP运算单元,集成了指纹识别算法,能高效快速地采集图像并识别指纹特征[1]。模块性能稳定、功能完善,兼具指纹采集、指纹登记、指纹比对及指纹搜索等功能[2]。模块本身配备了串口、USB通信等接口,用户不需要研究复杂的图像处理过程和指纹识别算法,只需按照串口和USB通信协议便可控制模块。模块可应用于指纹锁、各种考勤机、保险箱柜及指纹门禁系统等场合。
密码输入模块主要由矩阵键盘组成,矩阵键盘原理如图3所示。
图3 矩阵键盘原理
矩阵键盘是整个系统密码输入的核心部分。数字1、2、3、4、5、6、7、8、9、0分别用按键S1、S2、S3、S5、S6、S7、S9、S10、S11、S14表示;S16为进入键(密码更改后使用);S4为退出键;S8为进入管理员界面按键;S12为模式选择键;S13为取消键;S15为确认键。
为了在系统运行过程中实时显示其工作状态,并考虑人性化设计要求,本设计加入显示模块,选用ATK-4.3TFTLCD电容式触摸屏模块[3],将单片机处理后的指纹采集情况和密码输入结果用于人机交互显示到TFTLCD液晶显示模块上。TFTLCD液晶显示模块如图4所示。
存储器模块主要由SD卡和SRAM两部分组成。SD卡是基于Flash的存储卡,支持SPI和SDIO两种模式。主机依次分别访问每个卡,每个卡的CID寄存器中已预编程了一个唯一的卡标识号,用以区分不同的卡[4]。
图4 TFTLCD液晶显示模块
本设计中,考虑到设计本身的意义和自身条件的限制,决定采用12V小型电磁锁,该锁结构简单紧凑、重量轻、体积小且安全可靠,其主要特性如下:
使用电压 12~24V(DC)
允许电流 0.8~1.2A
功耗 9.6~28.8W
通电动作时间 不大于1s
允许连续接通时间 不大于10s
本设计中,选用STM32F103ZET6单片机作为总控制器。选用蓝色LED作为电源指示灯,用红色和绿色LED分别表示信号指示灯。指纹输入、指纹录取和指纹删除过程采用有源蜂鸣器报警,起到提示的作用,并方便操作。继电器选择3.3V SONGLE型。三极管选择8550PNP型。
系统软件全部采用模块化设计,整个系统的控制程序分为主函数、功能函数和驱动函数3部分。各模块都单独调试,调试无误后再整合在一起组成整个控制系统软件。程序编辑采用模块化设计,可方便后期维护,对于代码的优化也有很大的益处,在整个系统的调试过程中,也可以很快地修改对应功能的程序。指纹模块在总控制器的控制下进入自动指纹识别状态,在指纹识别成功的情况下输入密码,如果密码输入正确则电磁锁打开,否则电磁锁打开失败。
系统运行流程如图5所示,首先由总控制器判断各模块工作是否正常;然后液晶屏显示虚拟键盘可进行指纹录取和删除功能,如果不需要则进入下一步,如果需要录取或者删除指纹则在触摸屏上按下“录取”或“删除”键,完成指纹的录取或者删除过程;之后进入密码输入阶段;最后判断密码是否修改。其中,指纹模块和密码输入模块的运行流程如图6所示。
图5 系统运行流程
图6 指纹模块和密码输入模块运行流程
在软件编程和程序设计过程中,本设计用STM32F103ZET6单片机内部基础资源USART2实现串口控制功能,采用AS608指纹模块与STM32F103ZET6单片机相连实现指纹的录入,采用TFTLCD液晶触摸屏实现人机交互功能,使用SD卡的SPI通信方式实现录入指纹的存储。本系统实现了以单片机为总控制器,以光学式指纹识别模块为指纹采集模块,以矩阵键盘作为密码输入设备,采用TFTLCD触摸屏进行人机交互界面的指纹密码锁系统。已经录入指纹的手指识别情况如图7所示,录取指纹成功和录取指纹失败的情况如图8所示。
图7 已经录入指纹的手指识别界面
图8 录取指纹失败和录取指纹成功的界面
在设计过程中,有意识地规避了试验仪设计存在的缺点,为指纹密码锁整体性能的稳定提供了保证。
按键扫描过程中,按键所要表达的信息并未完全正确表现出来,查看硬件电路图正确后,改变了相应的C语言程序,使得结果符合预期。
在总体程序编写完成以后,通过编译,会发现程序中有错误或者警告。根据提示,完成语法的修改,直到编译没有错误为止。
以PCB功能板为基础进行功能验证时,由于PCB功能板电磁锁设计部分引线接错,使得程序无法在PCB功能板上显示出功能。通过更改PCB功能板的接线,最终实现了各个功能的显示。
基于单片机的指纹密码锁的硬件设计,实现了对各模块的选择、模块的调试、元件的选定、原理图绘制、PCB创建、元器件焊接及板子调试等工作;软件部分通过总控制器对指纹传感器的工作方式进行控制,利用矩阵键盘进行密码的输入调试,实现触摸屏的人机交互,最终利用总控制器对继电器的控制实现了门锁打开功能,但关闭功能还有待改进。需要说明的是,本设计还有改进的空间,可以加入报警模块、非法闯入检测模块和面部识别模块,实现对外来非法进入的报警。本设计应用范围广,可安全、便捷、有效地满足客户需求。