惠鵬飛, 方亞咪, 石翠萍
(齊齊哈爾大學(xué) 通信與電子工程學(xué)院, 黑龍江 齊齊哈爾 161006)
無(wú)線傳感器網(wǎng)絡(luò)(WSN)是物聯(lián)網(wǎng)工程專(zhuān)業(yè)的主干課程,在專(zhuān)業(yè)培養(yǎng)方案的設(shè)置中占有重要地位;而與之相關(guān)的實(shí)驗(yàn)和實(shí)踐類(lèi)課程,對(duì)于培養(yǎng)和提高學(xué)生的動(dòng)手實(shí)踐能力和創(chuàng)新能力至關(guān)重要[1]。目前,國(guó)內(nèi)一些無(wú)線傳感器網(wǎng)絡(luò)實(shí)驗(yàn)設(shè)備功能較單一,例如只具有測(cè)量功能,不能和物聯(lián)網(wǎng)應(yīng)用和工程實(shí)際相結(jié)合,而且價(jià)格比較昂貴,制約了對(duì)學(xué)生實(shí)踐能力和創(chuàng)新能力的培養(yǎng)[2-3]。
為解決這一問(wèn)題,筆者設(shè)計(jì)了基于ZigBee的無(wú)線指紋識(shí)別門(mén)禁實(shí)驗(yàn)平臺(tái)。該平臺(tái)涉及ZigBee軟件、指紋圖像獲取與判斷、C語(yǔ)言編程、LCD液晶顯示、MDK系統(tǒng)仿真等多方面技術(shù)。學(xué)生既可以利用該平臺(tái)熟悉和掌握系統(tǒng)硬件電路的設(shè)計(jì)和軟件編程,也可以加深對(duì)CC2530、STM32F103等主控芯片的性能指標(biāo)及外圍電路設(shè)計(jì)過(guò)程的理解,通過(guò)無(wú)線傳感器網(wǎng)絡(luò)的實(shí)訓(xùn)項(xiàng)目,提高實(shí)踐動(dòng)手能力和創(chuàng)新能力,并為就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。
無(wú)線指紋識(shí)別門(mén)禁實(shí)驗(yàn)平臺(tái)的硬件包括指紋識(shí)別傳感器、液晶顯示屏、STM32模塊、ZigBee模塊和電門(mén)鎖等部分。門(mén)禁實(shí)驗(yàn)平臺(tái)的功能分為基本功能和拓展功能?;竟δ馨ㄖ讣y圖像的采集、對(duì)采集的圖像進(jìn)行處理、對(duì)比不同的指紋圖像等[4-5]。要在STM32核心處理器中完成對(duì)外圍器件的控制,還要實(shí)現(xiàn)ZigBee模塊的無(wú)線控制[6-7]。圖1為實(shí)驗(yàn)平臺(tái)的整體結(jié)構(gòu)框圖。
圖1 實(shí)驗(yàn)平臺(tái)整體結(jié)構(gòu)
指紋識(shí)別門(mén)禁技術(shù)主要有單機(jī)門(mén)禁系統(tǒng)與TCP/IP的網(wǎng)絡(luò)型門(mén)禁控制系統(tǒng)兩種[8]。目前市面上使用較多的是指紋單機(jī)門(mén)禁系統(tǒng),它所采用的技術(shù)是在一個(gè)控制系統(tǒng)中完成全部的采集、處理與識(shí)別過(guò)程。這種技術(shù)一般適用于小的門(mén)禁系統(tǒng)或者指紋模塊安裝位置比較集中的情況,并且要有專(zhuān)用和固定的通信線路,因?yàn)榘惭b完成后其位置不易更換[9]。對(duì)于大的或者安裝位置較為分散的指紋識(shí)別門(mén)禁系統(tǒng),就需要采用網(wǎng)絡(luò)型的門(mén)禁控制系統(tǒng)。
STM32芯片的工作頻率可以達(dá)到72 MHz,系統(tǒng)主時(shí)鐘采用無(wú)源晶振,而芯片內(nèi)部寄存器是由片內(nèi)鎖相環(huán)配置的,借此實(shí)現(xiàn)系統(tǒng)所需要的工作頻率,并將此信號(hào)作為系統(tǒng)的工作時(shí)鐘[10]。STM32處理器的正常工作需要外圍電路的支持,例如供電電路、時(shí)鐘電路等。本系統(tǒng)選取12 MHz晶振提供時(shí)鐘信號(hào),采用5 V直流電壓供電。
電源電路采用LM2596開(kāi)關(guān)電壓調(diào)節(jié)器(降壓型電源管理單片集成電路)提供5 V直流電壓。
無(wú)線指紋識(shí)別門(mén)禁實(shí)驗(yàn)平臺(tái)采用FPM10A光學(xué)指紋識(shí)別模塊,它能夠完成完整的指紋圖像采集、圖像與指紋庫(kù)的對(duì)比匹配以及指紋模板數(shù)據(jù)存儲(chǔ),模塊內(nèi)部含有DSP處理器和FLASH存儲(chǔ)器,用以完成高性能的數(shù)據(jù)運(yùn)算、分析和存儲(chǔ),實(shí)現(xiàn)指紋圖像的處理、指紋的儲(chǔ)存和指紋的搜索對(duì)比、模板的生成、模板的匹配等功能。
對(duì)于指紋識(shí)別電路模塊的操作命令主要包括:
(1) 指紋圖像錄入、指紋特征的生成、模板的合成、模板存儲(chǔ);
(2) 指紋庫(kù)搜索、模板匹配[11]。
指紋識(shí)別模塊與STM32通過(guò)串口連接,FPM10A的數(shù)據(jù)接收腳(3腳)連接到上位機(jī)的數(shù)據(jù)發(fā)送端(TXD),而模塊的數(shù)據(jù)發(fā)送腳(2腳)連接上位機(jī)的RXD(即數(shù)據(jù)接收端)。如果需要與RS-232電平(例如PC機(jī))的上位機(jī)進(jìn)行通信,那么就只需在模塊和上位機(jī)之間增加電平轉(zhuǎn)換電路即可。
無(wú)線指紋識(shí)別門(mén)禁實(shí)驗(yàn)平臺(tái)采用3.5英寸電阻液晶顯示屏TJC4832T035_011X。由于液晶顯示屏是面向用戶(hù)的,要求其能夠充分顯示所要表達(dá)的內(nèi)容,并且界面應(yīng)簡(jiǎn)潔、清晰。
系統(tǒng)需要通過(guò)串口USART 232與用戶(hù)MCU進(jìn)行數(shù)據(jù)的交互,例如MCU可以隨時(shí)通過(guò)USART發(fā)送出指令,通知設(shè)備切換掉某個(gè)頁(yè)面,也可以改變某一個(gè)組件的某種屬性[12]。當(dāng)然設(shè)備也要能夠隨時(shí)通過(guò)USART通知用戶(hù)MCU操作者正在觸摸頁(yè)面上面的某個(gè)組件,或者說(shuō)設(shè)備當(dāng)前已經(jīng)進(jìn)入某個(gè)頁(yè)面。
CC2530有3種不一樣的內(nèi)存訪問(wèn)總線,即DATA、CODE/XDATA和SFR,有一個(gè)調(diào)試接口和一個(gè)18輸入擴(kuò)展中斷單元。內(nèi)部閃存為256 KB,有20 KB的擦除周期,可編程輸出功率達(dá)+4 dBm,支持無(wú)線設(shè)備更新和大型的應(yīng)用程序,而8 KB RAM用于一些較為復(fù)雜的應(yīng)用和一些ZigBee的應(yīng)用。在掉電模式下僅有睡眠定時(shí)器在運(yùn)行,電流損耗實(shí)測(cè)不到1 μA。CC2530在接收數(shù)據(jù)、發(fā)射數(shù)據(jù)以及其他多種低功耗模式下都能夠保持極低的電流消耗,保證了電池使用時(shí)間的持久。
CC2530外接2個(gè)晶振,頻率分別為32 MHz 和32.726 kHz,2.4 GHz無(wú)線收發(fā)模塊通常使用32 MHz的晶振。為了降低電磁干擾,布線時(shí)要盡可能靠近其引腳,周?chē)筱~會(huì)減少晶振高頻信號(hào)對(duì)其他信號(hào)的干擾,尤其是RESET_N引腳的布線要稍微避開(kāi)晶振。RF_P、RF_N是無(wú)線發(fā)射接收引腳,該引腳以外的電路是巴比倫電路。
指紋圖像的獲取、指紋特征模板的生成、指紋特征模板儲(chǔ)存和匹配指紋等需要指紋識(shí)別模塊實(shí)現(xiàn)。STM32會(huì)根據(jù)指紋模塊的指令系統(tǒng),為指紋模塊發(fā)送指令信息,進(jìn)而操控指紋模塊完成具體工作。指紋識(shí)別程序分為指紋錄入程序、指紋開(kāi)門(mén)程序和清空指紋模板程序。
2.1.1 指紋錄入程序設(shè)計(jì)
檢測(cè)手指指紋,測(cè)到指紋后將錄入指紋圖像并存儲(chǔ)于Image Buffer中,并返回錄入成功的確認(rèn)碼。若未測(cè)到指紋,則直接返回?zé)o指紋的確認(rèn)碼。
指紋錄入用于新用戶(hù)的注冊(cè)。首先進(jìn)行錄入模式,選擇錄入指紋選單,指示燈閃爍則表明指紋錄入成功。將手指離開(kāi)1 s后再次識(shí)別同一手指的指紋,指紋模塊會(huì)再次的進(jìn)行錄入。只有2次指紋都成功錄入,才算成功錄入了一個(gè)指紋模板。如果錄入不成功就會(huì)相應(yīng)的顯示出指紋的錄入失敗。
每一個(gè)指紋錄入完成之后,操作者可以繼續(xù)錄入下一個(gè)指紋,或者進(jìn)入指紋的識(shí)別開(kāi)鎖模式。要進(jìn)入指紋識(shí)別開(kāi)門(mén)模式,只需要在錄入完成后按一次指紋轉(zhuǎn)換即可。
指紋錄入的主程序流程如圖2所示。
圖2 指紋錄入流程
2.1.2 指紋開(kāi)門(mén)程序設(shè)計(jì)
FPM10A模塊指紋開(kāi)門(mén)程序用于讀取指紋并判斷該指紋是否已提前錄入,即指紋的所有者是否具有開(kāi)門(mén)的權(quán)利。當(dāng)指紋識(shí)別模塊采集到完整的指紋后,由STM32主控芯片向指紋識(shí)別模塊發(fā)出進(jìn)行指紋比對(duì)的命令,隨后指紋識(shí)別模塊會(huì)立即采集指紋的特征并且對(duì)開(kāi)門(mén)者的指紋進(jìn)行對(duì)比判斷。若比對(duì)成功,則將門(mén)開(kāi)啟。
2.1.3 清空指紋模板程序設(shè)計(jì)
如果有特殊情況發(fā)生(例如指紋錄入錯(cuò)誤、權(quán)限更改等),就需要對(duì)已錄入的指紋進(jìn)行清空處理。此操作由管理員進(jìn)行操作。
液晶模塊內(nèi)含字庫(kù)與處理器,具有一套指令系統(tǒng)。利用使用手冊(cè)給出的指令和指令格式給模塊發(fā)送相應(yīng)指令,實(shí)現(xiàn)顯示功能。液晶顯示模塊使用流程如圖3所示。
圖3 液晶模塊使用流程
因?yàn)槟K自帶字庫(kù),要完成字形顯示,就需要根據(jù)設(shè)定的顯示字符的坐標(biāo)將字符發(fā)送過(guò)去。每當(dāng)發(fā)送雙字節(jié)的漢字時(shí),需要先發(fā)高字節(jié),再發(fā)送低字節(jié)。每當(dāng)STM32向模塊發(fā)送指令之前,先讀取BF標(biāo)志位,即檢查一遍模塊是否正處于忙狀態(tài),判斷標(biāo)志位為0則可發(fā)送新的指令。若無(wú)法判斷忙碌狀態(tài),就需要先延時(shí)足夠長(zhǎng)的一段時(shí)間再重新發(fā)送指令,借以確保上一條指令已發(fā)送完畢。
液晶顯示模塊的通信方式是8位并行方式與串行方式。本設(shè)計(jì)選用的是串行方式。指紋識(shí)別模塊需要顯示一些漢字,比如處于指紋進(jìn)入或者訪客進(jìn)入模式時(shí),應(yīng)該顯示“指紋進(jìn)入”“訪客進(jìn)入”等字樣。
PC機(jī)由串口連接到開(kāi)發(fā)板,然后用調(diào)試助手設(shè)置好參數(shù)(如波特率等),完成相互收發(fā)信息的功能。本實(shí)驗(yàn)平臺(tái)使用SampleApp.eww工程完成串口數(shù)據(jù)的無(wú)線傳輸。使用的這兩個(gè)模塊的主要程序流程為:
(1) ZigBee模塊接收從PC端發(fā)送來(lái)的數(shù)據(jù)信息,再通過(guò)無(wú)線方式將其發(fā)送出去;
(2) ZigBee模塊接收從另一ZigBee模塊發(fā)送來(lái)的數(shù)據(jù)信息,然后將其發(fā)送給PC機(jī)。
程序的調(diào)試過(guò)程如下:打開(kāi)工程,添加代碼,將串口初始化函數(shù),然后對(duì)接收到的數(shù)據(jù)進(jìn)行判斷,為數(shù)據(jù)的pMsg分配內(nèi)存、打包發(fā)送給上層OSAL待處理,最后釋放內(nèi)存。
利用MDK5.14進(jìn)行系統(tǒng)仿真。MDK5.14是基于uVision5 IDE的集成開(kāi)發(fā)環(huán)境,主要是針對(duì)ARM處理器。對(duì)Cortex M內(nèi)核的處理器而言,MDK5.14是最佳開(kāi)發(fā)工具。寫(xiě)好的程序需要下載到芯片中測(cè)試實(shí)際效果,且需要將程序進(jìn)行編譯。
MDK仿真能夠及時(shí)發(fā)現(xiàn)潛在的漏洞,這對(duì)檢查程序提供了很大方便。在MDK的仿真下,可以查看一些與硬件相關(guān)的寄存器,并通過(guò)查看這些寄存器推斷出代碼是否有效。因?yàn)椴恍枰l繁刷機(jī),從而延長(zhǎng)了STM32的FLASH壽命。
指紋識(shí)別模塊與STM32之間的工作是依靠串口指令來(lái)完成的,使用串口助手調(diào)試STM32與指紋模塊之間通信過(guò)程,其模擬通信界面如圖4所示。
圖4 STM32與指紋模塊的模擬通信界面
在開(kāi)門(mén)方式選擇界面,共有“指紋掃描”“訪客呼叫”和“密碼開(kāi)鎖”3種進(jìn)入方式。
3.2.1 指紋識(shí)別功能測(cè)試
當(dāng)用戶(hù)需要開(kāi)門(mén)時(shí),首先選擇“指紋掃描”選項(xiàng)開(kāi)始測(cè)試。按下指紋掃描的按鈕,使系統(tǒng)處于指紋識(shí)別開(kāi)門(mén)的模式,然后將手指平放到采集指紋處,等待幾秒,如果匹配成功,液晶就會(huì)顯示“歡迎光臨”,并打開(kāi)電門(mén)鎖;若匹配失敗,則提示失敗,門(mén)不會(huì)打開(kāi)。圖5為串口模擬數(shù)據(jù)的實(shí)際測(cè)試圖。
圖5 串口模擬數(shù)據(jù)的實(shí)際測(cè)試圖
在調(diào)試過(guò)程中,待指紋模塊的指示燈開(kāi)始閃爍(處于指紋待讀取狀態(tài)),即可進(jìn)行指紋讀取。由于經(jīng)過(guò)多次采集指紋,即使手指放置的位置存在偏差,也不會(huì)影響讀取的準(zhǔn)確性。
當(dāng)有訪客拜訪時(shí),只需按下訪客進(jìn)入按鈕,然后另一端的ZigBee模塊會(huì)接收到指令,蜂鳴器發(fā)出響聲,主人聽(tīng)到指令即可及時(shí)的對(duì)此進(jìn)行反饋,并可選擇是否打開(kāi)門(mén)禁。
3.2.2 管理員密碼開(kāi)鎖功能測(cè)試
如若指紋模塊損壞,可以按下密碼開(kāi)鎖的按鈕,使系統(tǒng)處于管理員密碼開(kāi)鎖的模式,然后輸入開(kāi)鎖密碼。如果密碼匹配成功,門(mén)將被打開(kāi),否則門(mén)不能被打開(kāi)。
若密碼輸入錯(cuò)誤,系統(tǒng)界面將發(fā)出反饋提醒,且無(wú)法正常打開(kāi)指紋門(mén)禁。
基于ZigBee的無(wú)線指紋識(shí)別門(mén)禁實(shí)驗(yàn)平臺(tái)結(jié)合了無(wú)線傳感器網(wǎng)絡(luò)課程的教學(xué)特點(diǎn),培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力,尤其是多學(xué)科知識(shí)的綜合運(yùn)用能力。學(xué)生借助于該實(shí)驗(yàn)平臺(tái)可以進(jìn)行新的設(shè)計(jì)和開(kāi)發(fā),改變外圍電路的設(shè)計(jì)以增加新的功能,還可以設(shè)法利用手機(jī)操控門(mén)禁系統(tǒng),完成其他相關(guān)的實(shí)訓(xùn)項(xiàng)目,開(kāi)展綜合實(shí)踐和創(chuàng)新訓(xùn)練等。