嵌入式指紋鎖的設(shè)計與實現(xiàn)
摘要:指紋識別具有唯一性、可靠性,在安全領(lǐng)域得到了廣泛的應(yīng)用。本文在基于指紋識別模塊的基礎(chǔ)上開發(fā)了嵌入式指紋鎖, 為指紋識別技術(shù)在嵌入式系統(tǒng)上的應(yīng)用提供了一套很好的軟硬件設(shè)計方案。
隨著指紋自動識別系統(tǒng)體積的不斷縮小,以及微處理器功能與速度的不斷提高,復(fù)雜的指紋識別門鎖控制算法已可以被固化到一塊體積非常小的嵌入式微處理器模塊上,該模塊與指紋傳感器、門鎖控制機構(gòu)組成的系統(tǒng)稱為嵌入式指紋識別門鎖系統(tǒng)。嵌入式指紋鎖的應(yīng)用領(lǐng)域十分廣泛,有保險箱、實驗室、樓道的身份確認(rèn)等。本文基于指紋識別模塊設(shè)計和實現(xiàn)了嵌入式指紋鎖,給出了一套比較完整的軟、硬件設(shè)計方案。
指紋識別門鎖系統(tǒng)的硬件結(jié)構(gòu)
指紋識別門鎖系統(tǒng)的硬件結(jié)構(gòu)主要包括:指紋識別模塊、微控制器、讀寫模塊、電源管理和電控鎖機構(gòu)以及門鎖功能所需的紅外感應(yīng)電路和液晶LCD顯示等,其中核心部分是指紋識別模塊和微控制器。指紋識別門鎖系統(tǒng)的結(jié)構(gòu)框圖如圖1所示,虛線內(nèi)是指紋識別功能模塊。
圖1 指紋識別門鎖系統(tǒng)的結(jié)構(gòu)框圖
單片機門鎖控制電路
門鎖控制的核心結(jié)構(gòu)是微控制器P89LPC932A1,它是一款單片封裝的MCU,適合于許多要求高集成度、低成本的場合,可以滿足多方面的性能要求。P89LPC932A1 集成了許多系統(tǒng)級的功能,這樣可大大減少元件的數(shù)目、電路板面積以及系統(tǒng)的成本。
MCU通過串口與指紋識別模塊進(jìn)行通訊,完成對指紋的錄入、刪除、身份確認(rèn),通過驗證后電機控制門鎖會執(zhí)行開關(guān)門的動作。以單片機P89LPC932A1為核心的門鎖控制電路原理圖如圖2所示。P89LPC932A1強大的I/O口多達(dá)26個,可以滿足外設(shè)部分的鍵盤、LCD液晶顯示、指示燈、按鍵、蜂鳴器等的需求。鍵盤是用來輸入密碼的,LCD顯示用戶注冊的信息和ID號,雙色指示燈和蜂鳴器用來提醒用戶操作是否成功或是發(fā)出報警提示。另外,還有一些遠(yuǎn)程控制的按鍵開關(guān),用于設(shè)備的上電或執(zhí)行有關(guān)開關(guān)門的操作。具體設(shè)計可根據(jù)不同的應(yīng)用場合和實際功能需求增減外圍器件,在盡量滿足功能的前提下降低系統(tǒng)功耗。電機控制部分由單片機發(fā)出邏輯命令驅(qū)動電機進(jìn)行開關(guān)鎖動作。圖中U1是電源控制芯片R1121N,它輸出3.3V給單片機;U2是I2C讀寫模塊E2PROM,指紋鎖的開關(guān)門記錄和密碼等重要信息都保存在其中。R1121N是CMOS工藝電壓調(diào)節(jié)器,具有很高的電壓輸出精度、很低的輸入電流。
圖2 門鎖控制系統(tǒng)的電路原理圖
圖3 電機驅(qū)動控制原理圖
單片機的低功耗設(shè)計
低功耗系統(tǒng)設(shè)計的基本要求如下:
1) 系統(tǒng)中所有的電路單元都具有功耗管理功能,即該電路單元在非有效操作期間都能被關(guān)斷(沒有功耗)。系統(tǒng)具有按有效時空占空比實施精細(xì)功耗管理的能力,能做到合理的系統(tǒng)功耗分配。
2) 對于系統(tǒng)無法企及的微觀有效操作,要求由電路靜、動特性來滿足功耗分配,即電路動態(tài)過程有功耗,電路靜態(tài)時沒有功耗。
本嵌入式門鎖系統(tǒng)采用4節(jié)1.5V的電池供電,對無用功耗盡量要求降到最低,所以單片機的工作方式選擇完全掉電模式。門鎖系統(tǒng)低功耗的重要因素有電源電壓,晶振頻率,功能模塊的設(shè)置,以及I/O口和外部電路的設(shè)置。
在本系統(tǒng)中,選擇3.3V作為單片機的供電電壓;選擇內(nèi)部晶振,在節(jié)省外部資源的同時降低了功耗。當(dāng)MCU進(jìn)入完全掉電狀態(tài)以后,可由看門狗定時器(利用復(fù)位或中斷)、外部中斷INT0/INT1、鍵盤中斷、實時時鐘等喚醒。INT0/INT1中斷為下降沿/低電平有效,鍵盤中斷為低電平有效,因此在進(jìn)入中斷前必須保證相應(yīng)引腳為高電平,否則很難將MCU從完全掉電狀態(tài)下喚醒。
嵌入式系統(tǒng)的實時功耗管理能力表現(xiàn)在能保證系統(tǒng)按照有效操作時空占空比來實現(xiàn)系統(tǒng)時空的最大靜態(tài)化運行,其中的核心技術(shù)是系統(tǒng)中時鐘與信號流的控制與調(diào)度。在系統(tǒng)無效操作的時間和區(qū)域上,終止時鐘運行或進(jìn)入,禁止開關(guān)、脈沖信號進(jìn)入。經(jīng)過合理的任務(wù)分配后可以大大降低系統(tǒng)靜態(tài)功耗,同時在硬件資源選擇上作些調(diào)整。實驗表明,經(jīng)過合理任務(wù)分配后,系統(tǒng)的靜態(tài)功耗可以降到10mA,正常工作時電流低于100mA。與同類產(chǎn)品相比,本系統(tǒng)的低功耗性能良好。
圖4 系統(tǒng)初始化步驟
圖5 帶數(shù)組的通訊格式
電機驅(qū)動電路
機械驅(qū)動部分用小型的直流電動機來進(jìn)行驅(qū)動。由于單片機的驅(qū)動能力極其有限,所以需要對單片機的輸出進(jìn)行驅(qū)動放大。這里采用BA6289邏輯控制芯片。它可以接收TTL 邏輯電平,用于驅(qū)動感性負(fù)載。它根據(jù)對門鎖的不同操作進(jìn)行邏輯控制,驅(qū)動電機的正反轉(zhuǎn),推動門鎖上的鎖舌進(jìn)出。電機正轉(zhuǎn),鎖舌退,實現(xiàn)開門動作;電機反轉(zhuǎn),鎖舌進(jìn),實現(xiàn)關(guān)門動作。電機正反轉(zhuǎn)控制電路的原理圖如圖3所示。
系統(tǒng)加密設(shè)計
單片機系統(tǒng)一般都采用MCU+EPROM模式。通常EPROM都是透明的,雖然有許多的MCU都帶有加密位,但現(xiàn)在已大多能破解。為了保護(hù)自行開發(fā)的指紋識別門鎖算法,系統(tǒng)加密是個關(guān)鍵。常用的單片機加密技術(shù)有硬件加密和軟件加密兩種。軟件加密不能防止別人復(fù)制,只能增加解剖分析的難度,安全性不足。
現(xiàn)在很多的MCU都帶有加密位,其中在單片機中運用得最成功的加密方法是總線燒毀法。即把單片機數(shù)據(jù)總線的特定I/O永久性地破壞,解密者即使擦除了加密位,也無法讀出片內(nèi)程序的正確代碼。此外還有破壞EA引腳的方法。這種方法用來加密小程序比較成功,但由于總線已被破壞,因而不能再使用總線來擴(kuò)展接口芯片和存儲器,同時,片內(nèi)存儲器也不再具有重復(fù)編程特性。
系統(tǒng)軟件設(shè)計
該指紋識別門鎖系統(tǒng)是完全自主開發(fā)的具有獨立知識產(chǎn)權(quán)的軟件,其完整的系統(tǒng)管理協(xié)議增強了軟件的強壯性和可移植性,完整的指紋識別命令集使其可以自動進(jìn)行指紋的注冊、識別以及指紋數(shù)據(jù)的輸出。系統(tǒng)軟件總程序包括監(jiān)測控制部分和通訊部分。監(jiān)測控制部分包括了門鎖控制軟件諸如開關(guān)門、應(yīng)急密碼開門、指紋錄入、指紋刪除等程序,以及指紋識別管理、電源管理、定時器中斷管理、看門狗、外部指令處理和I2C總線存儲器等程序。通訊部分主要包括通訊協(xié)議和驅(qū)動程序,其中通訊協(xié)議包括數(shù)據(jù)接收、數(shù)據(jù)發(fā)送、校驗、數(shù)據(jù)包處理等程序;設(shè)備驅(qū)動包括寄存器配置和系統(tǒng)狀態(tài)控制等程序。
|
表1 指紋鎖的性能指標(biāo)
系統(tǒng)初始化
嵌入式指紋鎖系統(tǒng)在啟動或復(fù)位之后,需要對系統(tǒng)硬件和軟件運行環(huán)境進(jìn)行初始化,這些工作由啟動程序完成,啟動程序通常采用匯編語言編寫。寫好啟動程序是設(shè)計好嵌入式程序的關(guān)鍵,系統(tǒng)啟動程序所執(zhí)行的操作與具體的目標(biāo)系統(tǒng)和開發(fā)系統(tǒng)相關(guān),流程如圖4所示。
指紋識別軟件的協(xié)議命令集
系統(tǒng)管理協(xié)議包括功能部件更新下載、設(shè)備復(fù)位、部件錯誤處理、檢測注冊的用戶數(shù)量、檢測存儲器信息、檢測安全級、設(shè)置安全級、檢測每個用戶注冊的指紋數(shù)、設(shè)置每個用戶錄入的指紋數(shù)以及設(shè)置波特率等。指紋識別命令集包括自動ID注冊用戶、給定ID注冊用戶、刪除給定ID用戶、匹配刪除用戶、刪除所有用戶、給定ID用戶識別、自動ID用戶識別、提取特征信息、特征信息匹配、從模塊獲取特征信息以及在模塊中存儲特征信息等。下面給出該軟件指紋識別協(xié)議命令集中自動用戶注冊部分的設(shè)計說明。
自動用戶注冊是指系統(tǒng)使用自動選擇的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
單片機與指紋模塊的通訊協(xié)議
系統(tǒng)中的工作核心是指紋模塊,它幾乎包含了對指紋處理的所有操作。指紋識別模塊通過RS232串口與使用者接口,使用者通過此接口來命令模塊完成諸如指紋采集、指紋比對等一系列操作。單片機與指紋模塊的通訊為半雙工異步通訊,RS232接口缺省的波特率為9600bps。
單片機與指紋模塊的通訊,對命令、數(shù)據(jù)、結(jié)果的接收和發(fā)送都采用幀的形式進(jìn)行,通訊格式內(nèi)容包括包標(biāo)識、地址碼保留字、包長度、包內(nèi)容和校驗和。
由于通過串口通訊,在數(shù)據(jù)接收的開始有時會丟失一兩個字節(jié),所以在接收數(shù)據(jù)包時可能因為接收字節(jié)不完全而使程序陷入死循環(huán)。 這里采用在規(guī)定時間內(nèi)如果沒有接收到數(shù)據(jù)則強行退出接收程序,而后重新接收數(shù)據(jù)的方法,由于指紋模塊與單片機的工作頻率非常快,根本不會影響該系統(tǒng)的工作。
同樣,單片機和模塊通過一串消息幀來傳遞命令,在程序編寫時利用數(shù)組來存儲Receive[Max]從模塊接收到的數(shù)據(jù),如圖5所示。單片機通過串口向模塊發(fā)送命令而后又等待接收命令時,經(jīng)常丟失或有誤一兩個字節(jié),這樣導(dǎo)致數(shù)組Receive [Max]中數(shù)據(jù)會丟失一兩個字節(jié)。 參考指紋模塊的通訊協(xié)議可知,消息幀中的大部分?jǐn)?shù)據(jù)都相同,只有一兩個不同的關(guān)鍵字且在數(shù)據(jù)幀的中間部分。所以,根據(jù)模塊動作的幾種可能情況在接收數(shù)據(jù)的數(shù)組Receive[Max]中搜索對應(yīng)的一兩個關(guān)鍵字,這樣就可以正確判斷模塊的動作。
系統(tǒng)測試
根據(jù)門鎖的安全性能指標(biāo)設(shè)計測試方案,系統(tǒng)測試主要從以下幾個方面進(jìn)行:
1) 用不同質(zhì)量的指紋:用大約500人次的不同指紋進(jìn)行開鎖、注冊等測試;
2) 同一指紋在不同條件下:諸如干濕、破損、壓力溫度不同、位置角度不同、油污情況下進(jìn)行開鎖試驗;
3) 不間斷的工作方式:長時間的疲勞測試、頻繁的開鎖、關(guān)鎖,測試系統(tǒng)的穩(wěn)定性;
4) 人為制造緊急狀況:電源不足情況下、惡性開鎖、開鎖后忘記關(guān)門、普通用戶手指不能開門、取消非法用戶權(quán)限等。
指紋鎖的核心部分測試后的各項性能指標(biāo)如表1所示。
結(jié)語
經(jīng)過大量的測試工作,本門鎖系統(tǒng)的性能狀態(tài)良好,滿足安全性和易用性的指標(biāo)要求。門鎖系統(tǒng)從功能上具有授權(quán)錄入指紋、按ID號或按級刪除指紋、記錄最近的10次開門記錄,可錄入150枚指紋。本系統(tǒng)采用了嵌入式的體系結(jié)構(gòu),以及精度高、反應(yīng)快、功耗低、體積小的外圍器件,配合成熟的指紋識別算法和完善的功能設(shè)計,以及應(yīng)急開門方案、加密設(shè)計和低功耗設(shè)計。本嵌入式指紋鎖的誤識率為0.001%~0.01%,拒識率為0.1%~1%,處理速度低于0.3s,完全滿足指紋識別產(chǎn)品的要求。由本系統(tǒng)為核心制作的小樣本嵌入式指紋鎖已于2005年末供應(yīng)海外市場?!?/P>
評論