摘要:指纹识别具有唯一性、可靠性,在安全领域得到了广泛的应用。本文在基于指纹识别模块的基础上开发了嵌入式指纹锁, 为指纹识别技术在嵌入式系统上的应用提供了一套很好的软硬件设计方案。
随着指纹自动识别系统体积的不断缩小,以及微处理器功能与速度的不断提高,复杂的指纹识别门锁控制算法已可以被固化到一块体积非常小的嵌入式微处理器模块上,该模块与指纹传感器、门锁控制机构组成的系统称为嵌入式指纹识别门锁系统。嵌入式指纹锁的应用领域十分广泛,有保险箱、实验室、楼道的身份确认等。本文基于指纹识别模块设计和实现了嵌入式指纹锁,给出了一套比较完整的软、硬件设计方案。 指纹识别门锁系统的硬件结构
指纹识别门锁系统的硬件结构主要包括:指纹识别模块、微控制器、读写模块、电源管理和电控锁机构以及门锁功能所需的红外感应电路和液晶LCD显示等,其中核心部分是指纹识别模块和微控制器。指纹识别门锁系统的结构框图如图1所示,虚线内是指纹识别功能模块。
740)this.width=740" border=undefined> 图1 指纹识别门锁系统的结构框图 单片机门锁控制电路
门锁控制的核心结构是微控制器P89LPC932A1,它是一款单片封装的MCU,适合于许多要求高集成度、低成本的场合,可以满足多方面的性能要求。P89LPC932A1 集成了许多系统级的功能,这样可大大减少元件的数目、电路板面积以及系统的成本。
MCU 通过串口与指纹识别模块进行通讯,完成对指纹的录入、删除、身份确认,通过验证后电机控制门锁会执行开关门的动作。以单片机P89LPC932A1为核心的门锁控制电路原理图如图2所示。P89LPC932A1强大的I/O口多达26个,可以满足外设部分的键盘、LCD液晶显示、指示灯、按键、蜂鸣器等的需求。键盘是用来输入密码的,LCD显示用户注册的信息和ID号,双色指示灯和蜂鸣器用来提醒用户操作是否成功或是发出报警提示。另外,还有一些远程控制的按键开关,用于设备的上电或执行有关开关门的操作。具体设计可根据不同的应用场合和实际功能需求增减外围器件,在尽量满足功能的前提下降低系统功耗。电机控制部分由单片机发出逻辑命令驱动电机进行开关锁动作。图中U1是电源控制芯片R1121N,它输出3.3V给单片机;U2是I2C读写模块 E2PROM,指纹锁的开关门记录和密码等重要信息都保存在其中。R1121N是CMOS工艺电压调节器,具有很高的电压输出精度、很低的输入电流。
740)this.width=740" border=undefined> 图2 门锁控制系统的电路原理图
740)this.width=740" border=undefined> 图3 电机驱动控制原理图 单片机的低功耗设计
低功耗系统设计的基本要求如下:
1) 系统中所有的电路单元都具有功耗管理功能,即该电路单元在非有效操作期间都能被关断(没有功耗)。系统具有按有效时空占空比实施精细功耗管理的能力,能做到合理的系统功耗分配。 2) 对于系统无法企及的微观有效操作,要求由电路静、动特性来满足功耗分配,即电路动态过程有功耗,电路静态时没有功耗。
本嵌入式门锁系统采用4节1.5V的电池供电,对无用功耗尽量要求降到最低,所以单片机的工作方式选择完全掉电模式。门锁系统低功耗的重要因素有电源电压,晶振频率,功能模块的设置,以及I/O口和外部电路的设置。 在本系统中,选择3.3V作为单片机的供电电压;选择内部晶振,在节省外部资源的同时降低了功耗。当MCU进入完全掉电状态以后,可由看门狗定时器(利用复位或中断)、外部中断INT0/INT1、键盘中断、实时时钟等唤醒。INT0/INT1中断为下降沿/低电平有效,键盘中断为低电平有效,因此在进入中断前必须保证相应引脚为高电平,否则很难将MCU从完全掉电状态下唤醒。
嵌入式系统的实时功耗管理能力表现在能保证系统按照有效操作时空占空比来实现系统时空的最大静态化运行,其中的核心技术是系统中时钟与信号流的控制与调度。在系统无效操作的时间和区域上,终止时钟运行或进入,禁止开关、脉冲信号进入。经过合理的任务分配后可以大大降低系统静态功耗,同时在硬件资源选择上作些调整。实验表明,经过合理任务分配后,系统的静态功耗可以降到10mA,正常工作时电流低于100mA。与同类产品相比,本系统的低功耗性能良好。
740)this.width=740" border=undefined> 图4 系统初始化步骤
740)this.width=740" border=undefined> 图5 带数组的通讯格式 电机驱动电路
机械驱动部分用小型的直流电动机来进行驱动。由于单片机的驱动能力极其有限,所以需要对单片机的输出进行驱动放大。这里采用BA6289逻辑控制芯片。它可以接收TTL 逻辑电平,用于驱动感性负载。它根据对门锁的不同操作进行逻辑控制,驱动电机的正反转,推动门锁上的锁舌进出。电机正转,锁舌退,实现开门动作;电机反转,锁舌进,实现关门动作。电机正反转控制电路的原理图如图3所示。
系统加密设计
单片机系统一般都采用MCU+EPROM模式。通常EPROM都是透明的,虽然有许多的MCU都带有加密位,但现在已大多能破解。为了保护自行开发的指纹识别门锁算法,系统加密是个关键。常用的单片机加密技术有硬件加密和软件加密两种。软件加密不能防止别人复制,只能增加解剖分析的难度,安全性不足。
现在很多的MCU都带有加密位,其中在单片机中运用得最成功的加密方法是总线烧毁法。即把单片机数据总线的特定I/O永久性地破坏,解密者即使擦除了加密位,也无法读出片内程序的正确代码。此外还有破坏EA引脚的方法。这种方法用来加密小程序比较成功,但由于总线已被破坏,因而不能再使用总线来扩展接口芯片和存储器,同时,片内存储器也不再具有重复编程特性。 系统软件设计
该指纹识别门锁系统是完全自主开发的具有独立知识产权的软件,其完整的系统管理协议增强了软件的强壮性和可移植性,完整的指纹识别命令集使其可以自动进行指纹的注册、识别以及指纹数据的输出。系统软件总程序包括监测控制部分和通讯部分。监测控制部分包括了门锁控制软件诸如开关门、应急密码开门、指纹录入、指纹删除等程序,以及指纹识别管理、电源管理、定时器中断管理、看门狗、外部指令处理和I2C总线存储器等程序。通讯部分主要包括通讯协议和驱动程序,其中通讯协议包括数据接收、数据发送、校验、数据包处理等程序;设备驱动包括寄存器配置和系统状态控制等程序。
740)this.width=740" border=undefined>| 表1 指纹锁的性能指标 系统初始化
嵌入式指纹锁系统在启动或复位之后,需要对系统硬件和软件运行环境进行初始化,这些工作由启动程序完成,启动程序通常采用汇编语言编写。写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作与具体的目标系统和开发系统相关,流程如图4所示。 指纹识别软件的协议命令集
系统管理协议包括功能部件更新下载、设备复位、部件错误处理、检测注册的用户数量、检测存储器信息、检测安全级、设置安全级、检测每个用户注册的指纹数、设置每个用户录入的指纹数以及设置波特率等。指纹识别命令集包括自动ID注册用户、给定ID注册用户、删除给定ID用户、匹配删除用户、删除所有用户、给定 ID用户识别、自动ID用户识别、提取特征信息、特征信息匹配、从模块获取特征信息以及在模块中存储特征信息等。下面给出该软件指纹识别协议命令集中自动用户注册部分的设计说明。
自动用户注册是指系统使用自动选择的ID号注册用户,如下: STI_USER_REGISTR ATION:开始注册 0x1b - 0x5e - 0x50 - Start ID NumberH- Start ID NumberL STI_USER_REGISTRATION _SUCCESS:注册成功 0x1b - 0x5e - 0x51 - Start ID NumberH- Start ID NumberL 其中Start ID NumberH/ Start ID NumberL为注册开始时的ID值 STI_USER_REGISTR ATION_ERROR:注册失败 0x1b - 0x5e - 0x52 - 0x00- ID Number
单片机与指纹模块的通讯协议
系统中的工作核心是指纹模块,它几乎包含了对指纹处理的所有操作。指纹识别模块通过RS232串口与使用者接口,使用者通过此接口来命令模块完成诸如指纹采集、指纹比对等一系列操作。单片机与指纹模块的通讯为半双工异步通讯,RS232接口缺省的波特率为9600bps。
单片机与指纹模块的通讯,对命令、数据、结果的接收和发送都采用帧的形式进行,通讯格式内容包括包标识、地址码保留字、包长度、包内容和校验和。
由于通过串口通讯,在数据接收的开始有时会丢失一两个字节,所以在接收数据包时可能因为接收字节不完全而使程序陷入死循环。这里采用在规定时间内如果没有接收到数据则强行退出接收程序,而后重新接收数据的方法,由于指纹模块与单片机的工作频率非常快,根本不会影响该系统的工作。
同样,单片机和模块通过一串消息帧来传递命令,在程序编写时利用数组来存储Receive[Max]从模块接收到的数据,如图5所示。单片机通过串口向模块发送命令而后又等待接收命令时,经常丢失或有误一两个字节,这样导致数组Receive [Max]中数据会丢失一两个字节。参考指纹模块的通讯协议可知,消息帧中的大部分数据都相同,只有一两个不同的关键字且在数据帧的中间部分。所以,根据模块动作的几种可能情况在接收数据的数组Receive[Max]中搜索对应的一两个关键字,这样就可以正确判断模块的动作。 系统测试
根据门锁的安全性能指标设计测试方案,系统测试主要从以下几个方面进行: 1) 用不同质量的指纹:用大约500人次的不同指纹进行开锁、注册等测试; 2) 同一指纹在不同条件下:诸如干湿、破损、压力温度不同、位置角度不同、油污情况下进行开锁试验; 3) 不间断的工作方式:长时间的疲劳测试、频繁的开锁、关锁,测试系统的稳定性; 4) 人为制造紧急状况:电源不足情况下、恶性开锁、开锁后忘记关门、普通用户手指不能开门、取消非法用户权限等。
指纹锁的核心部分测试后的各项性能指标如表1所示。 结语
经过大量的测试工作,本门锁系统的性能状态良好,满足安全性和易用性的指标要求。门锁系统从功能上具有授权录入指纹、按ID号或按级删除指纹、记录最近的 10次开门记录,可录入150枚指纹。本系统采用了嵌入式的体系结构,以及精度高、反应快、功耗低、体积小的外围器件,配合成熟的指纹识别算法和完善的功能设计,以及应急开门方案、加密设计和低功耗设计。本嵌入式指纹锁的误识率为0.001%~0.01%,拒识率为0.1%~1%,处理速度低于0.3s,完全满足指纹识别产品的要求。由本系统为核心制作的小样本嵌入式指纹锁已于2005年末供应海外市场。
|