戴曉清,林喜榮,鐘文東
(清華大學 深圳研究生院,深圳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.