戴晓清,林喜荣,钟文东
(清华大学 深圳研究生院,深圳518055)
戴晓清(硕士研究生),主要研究方向是指纹特征识别及其应用;林喜荣(教授),从事生物特征识别方向的研究;钟文东(硕士研究生),主要研究方向是指纹特征识别及其应用。
指纹识别是一种有效的身份识别技术。随着光电技术和半导体技术的发展,自动指纹识别技术越来越多地被应用到人们的日常生活之中[1]。指纹锁和指纹保险箱是指纹识别应用中比较重要的产品[2]。与指纹门禁不同,应用于锁具中的指纹系统一般采用电池供电,具有功耗低、体积小等特点。本文设计和实现了一个功耗低、人机界面良好的指纹识别应用系统,系统可以应用于门锁和保险箱。
在实际生活中,经常碰到人在异地,但是需要别人进门或者取用保险箱里财物的情况。以前常用的做法是提前将钥匙借给别人或者临时告诉别人密码,这样的做法增加了安全隐患,一旦以后出了问题,谁也说不清。本文在基本指纹识别系统之上增加了一个可选的远程开启模块,用户可以通过手机进行远程开启操作,解决了上述问题。
根据背景需求和目标,整个应用系统可分为3部分:主控制模块、指纹处理模块和远程通信模块,它们的功能如下:指纹处理模块负责对指纹的采集、指纹图像的特征提取和存储,以及指纹特征的匹配;远程通信模块负责应用系统和远程通信设备之间的信息交换;主控制模块负责系统的人机交互、逻辑控制、功能管理,还负责对整个系统的电源管理分配。外围设备与机构,是指与指纹锁或者保险箱相关的电机、振动传感器等。主控制模块通过UART接口对指纹处理模块和远程通信模块进行控制操作。
主控制模块选用MSP430F149作为主控芯片。MSP430F149是美国TI公司开发的一款16位RISC微控制器[3],它的低功耗特点能够满足我们的要求。主控制模块需要完成的功能有控制电源供电、按键输入、液晶显示、电压检测、电机驱动、时间信息芯片等。
MSP430F149使用8MHz晶振作为主工作频率,另外还有1个辅助晶振32 768Hz接在XIN和XOUT端,作为串口的波特率发生器产生源。
系统选用台湾悠景公司的UG-2864HSWEG01作为显示屏。UG-2864HSWEG01是一款128×64像素的单色OLED显示屏,OLED拥有能耗低、体积轻薄、响应速度快等优点,十分适合电池系统。UG-2864HSWEG01面板显示有两种供电模式:外部供电和内部升压供电方式。当使用外部电源给面板供电时,需要9V电源;使用内部DC/DC转换器时外部需要接3.5~4.2V电源,实际使用时外部接3.3V也能正常显示。考虑到本系统的实际情况,采用内部升压供电方式。UG-2864HSWEG01有多种方式与主控MCU通信,具体通过设置BS0、BS1和BS2引脚来选择。本系统中选用8080并行接口方式与MSP430F149通信,通过设置BS0=0、BS1=1、BS2=1来实现。
本系统中的键盘由一个3×4的矩阵键盘和4个独立按键组成,分别是数字键“0”~“9”、“*”、“#”、“取消”、“向上”、“向下”、“确认”,由于 MSP430F149只有P1口和P2口有端口中断源,因此将矩阵键盘的3个行信号和4个独立功能按键放置在P1口。
系统选用的EEPROM为AT24C08,时间芯片为DS1302,两者均支持I2C总线协议。MSP430使用I/O模拟I2C总线协议与它通信。主控制模块使用MSP430F149的UART0与指纹处理模块通信,UART1与远程通信模块通信。
为了延长系统电池的使用寿命,系统采用自动下电方式,在待机时直接隔断电源。使用了一个P沟道场效应管FDN336,其关断时DS漏电流为1μA左右,电源控制电路如图1所示。当键盘按键按下时,信号KEY_wakeup将接地拉低,此时,由于电阻的分压作用,场效应管GS两极的电压约为-5~-4.5V,场效应管导通,系统上电。系统上电后,MSP430F149立即将信号POWER_EN置高,三极管9013接通,系统维持上电。MSP430F149处理完相关操作后,将信号POWER_EN置低,三极管阻断,场效应管GS两极的电压为0,FDN336截止,系统自动下电。
图1 主电源控制电路
指纹识别模块选择FSC7002作为指纹识别处理芯片[4]。FSC7002是成都方程式电子有限公司开发的专用指纹识别芯片,内含一个8位FMCU8KB嵌入式微控制器以及FID116KMG指纹识别处理模块,并且兼容多种指纹传感器。FSC7002内置微控制器与8051系列兼容,易于开发,通过UART可方便地对其进行指令控制。
综合成本因素,本系统选用现成的基于FSC7002的指纹识别模块BLH9003D。它是一种一体化的光学指纹处理模块,它将光学传感器和指纹处理器集成在一起,使得指纹识别模块的体积、成本和开发成本都大大降低。BLH9003D内置感应芯片,对手指的按捺可进行自动识别,并将识别结果通过信号通知控制方,当无手指按捺时输出低电平,有手指按捺时输出高电平。
远程通信模块采用华为公司的MG323作为GSM的收发模块。MG323模块是华为公司推出的一款工业级的GSM/GPRS模块,电源电压3.3~4.8V(推荐值3.8V),平均待机电流47μA。MG323提供一个UART接口和标准SIM卡接口,短消息模式支持TEXT和PDU。MG323不仅支持GSM协议,还支持GPRS协议,并且内置TCP/IP协议栈,为将来进一步开发提供了空间[5]。MG323的接口电路如图2所示,MG323的 UART口定义是针对MCU而言的,故而它与MSP430的连接不用交叉。MG323必须采用额外的电池供电,主控系统通过GSM_EN信号来控制远程通信模块的电源通断。
图2 MG323电路接口
MSP430F149内置2KB内存,不太适合使用操作系统,因此本系统在软件设计上采用前后台系统和状态机相结合的方式。在整体上,系统软件分为硬件驱动层,功能函数层和应用程序层,如图3所示。
图3 软件层次结构图
主应用程序完成指纹锁具的所有功能,图4表示的是主应用程序流程的示意图。当系统启动时,首先进行一系列的初始化,然后根据系统设置选择默认的开启方式,之后根据按键的不同,或切换开启方式,或进入管理模式,或进入远程开启模式。
图4 主应用程序流程
系统分为密码开启和指纹密码开启两种方式,密码开启只允许密码开启,指纹密码开启既可以用指纹开启也可以用密码开启。之所以分2种开启方式,是因为密码开启方式十分省电,实际使用中可能有的用户为了省电而使用这种方式。用户使用管理功能来维护锁具,包括系统信息的设置,用户信息的建立、删除和修改,远程开启和报警功能的设置等。管理功能使用菜单来进行人机交互[6],只有管理员才能使用管理功能。
用户数据信息存储的是用户的具体信息,包括用户名字、用户对应的指纹ID、开启密码、用户创建时间以及用户属性,总共长度为24个字节。用户创建时间表示用户创建的具体时间或者用户最近的修改时间,采用BCD码用7个字节表示,分别是秒、分、时、日、月、星期、年,具体格式和DS1302对外输出的格式相同。用户属性property使用1个字节记录了用户的权限级别、用户的有效期和用户默认验证方式。系统通过用户创建时间和用户有效期判断用户是否到期失效。用户数据的结构定义如下:
控制模块和指纹处理器FSC7002通过UART接口通信,它们之间的通信遵循一定的协议。FSC7002提供了一个标准通信协议,本文直接采用了这个协议。上位机(MSP430F49)向下位机(FSC7002)发送的指令,采用指令包的形式进行。指令包的长度为8字节,其格式如下所示。
下位机收到指令包后,将有关指令执行情况与结果采用应答包的形式上报给上位机。下位机只对符合自身地址码的指令包做出应答,其他地址的指令包不会给予应答;对于不符合协议要求的指令码,下位机也不会应答。应答包的长度是不定的,应答包将返回它应答的指令码,以及此指令码的执行结果代码,还会返回一些必要的参数。应答包的格式如下所示。
控制模块(上位机)和指纹处理模块(下位机)不停地通过指令包和应答包的传送,完成一系列的功能任务。
远程报警是指当传感器检测到侵入或者输入报警密码时,系统向预先设置的手机号码发送报警信息。所谓报警密码是指预先设置的一组密码,使用这组密码同样也能开启锁具,但是在开启的同时,它将启动远程通信模块,并向远程手机发送报警的信息。报警密码主要用在被挟持开锁的情况下,既能保证人身安全,又能有一定的反制措施。
远程开启是指使用手机发送开机指令,在远距离情况下开启门锁或者保险箱。远程开启功能的一大安全漏洞是使用GSM短信方式并不安全,因此本系统中对传输的数据进行了安全加密,使得安全性大大提升,加密算法使用256位 DES加密[7]。
远程开启功能包括锁具部分和用户手机部分,两部分必须相互配合才能完成预期目标。锁具部分在前述章节建立的基础上开发完成,用户手机部分使用Android平台作为开发对象。远程开启功能包括注册流程和远程开启流程,分别如图5和图6所示。
由于MSP430F149没有随机数生成器,因此使用内部的计时器,对用户按键间隔计时,使用这个间隔时间作为随机数种子。
本文基于Android平台,针对指纹锁远程开启的应用需求,采用DES算法加密通信数据,设计了符合安全要求的指纹锁手机端软件。
图5 远程开启功能注册流程
图6 远程开启功能开启流程
手机端软件主要实现3个功能:远程开启、注册、删除。软件的总体结构如图7所示。
图7 Android程序结构
注册:手机端软件接收锁体短信,将锁体名称、密钥和短信来源号码保存到数据库。
开启:获取用户输入的随机数和密码,用随机数和保存的密钥对密码进行加密,发送到指纹锁对应的号码。
删除:手机端软件删除对应锁体的信息,包括保存的密钥。
软件中涉及短信接收和短信发送,必须在项目配置文件中添加SEND_SMS和RECEIVE_SMS权限。
接收系统广播,需要向系统申请广播接收者权限。申请的方式有静态和动态两种。静态方式在软件的项目配置文件声明即可。静态方式下,软件在整个运行过程中都将响应系统广播。动态方式是在需要的时候使用registerReceiver方法向系统申请权限,在结束的时候使用unregisterReceiver方法注销即可,本文中采用动态方式。接收到短信的系统广播为android.provider.Telephony.SMS_RECEIVED,用它生成过滤器IntentFilter类,即可使软件只对该广播进行响应。
发送短信功能通过短信服务SmsManager类实现。该类中sendTextMessage方法即可控制手机硬件,实现短信的发送。
本文设计的指纹识别和控制系统(不包括远程通信模块)使用4节1.5V干电池串联供电。经测试,在使用指纹按捺感应启动功能的前提下,待机功耗为10.4μA,密码识别过程功耗为8.9mA,指纹识别过程功耗为131.2 mA。系统主要功耗指标已达到商业水平,具有较高的实用价值。
编者注:本文为期刊缩略版,全文见本刊网站www.mesnet.com.cn。
[1]尹义龙,宁新宝,张晓梅.自动指纹识别技术的发展与应用[J].南京大学学报:自然科学版,2002,38(1):29-35.
[2]毛巨勇.2011年生物识别市场发展回顾[J].中国安防,2011(2),61-65.
[3]沈建华,杨艳琴.MSP430系列超低功耗单片机原理与系统设计[M].北京:北京航空航天大学出版社,2008.
[4]成都方程式公司.FSC7002datasheet v1.9,2009.
[5]华为技术有限公司.HUAWEI MG323GSM M2M模块硬件指南 [EB/OL].(2010-05-24)[2012-04-24].http:www.huawei.com.
[6]费文坤,陶维青.基于MSP430F149单片机的人机界面设计[J].微计算机信息,2009,25(2):116-118.
[7]梁雅,刘岚.基于Java卡DES及3DES算法的实现[J].武汉理工大学学报:信息与管理工程版,2006,28(11):63-66.