西安電子科技大學(xué)機(jī)電工程學(xué)院 朱俊杰 韓雨辰 趙明英 郭雨佳
在本文中,介紹了一種全新的智能門(mén)鎖系統(tǒng)。它是利用STM32單片機(jī)為控制芯片,以RT-Thread作為實(shí)時(shí)操作系統(tǒng),讀取指紋模塊、IC卡模塊、鍵盤(pán)模塊的信息,將這些信息作為電子鑰匙,與外部FLASH中已經(jīng)存儲(chǔ)的電子鑰匙信息進(jìn)行對(duì)比,若匹配成功,則STM32發(fā)出PWM波,驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),實(shí)現(xiàn)開(kāi)鎖,OLED模塊顯示驗(yàn)證成功;若匹配失敗,則電機(jī)不產(chǎn)生動(dòng)作,OLED顯示驗(yàn)證失敗。
目前,隨著現(xiàn)代人們生活品質(zhì)水平的提升以及人們對(duì)安全隱患防范的高度重視,智能鎖已經(jīng)逐漸成為廣大消費(fèi)者進(jìn)行門(mén)鎖升級(jí)換代的最佳選擇;同時(shí),隨著中國(guó)的智能家居、物聯(lián)網(wǎng)技術(shù)的成熟與快速發(fā)展,各大門(mén)鎖企業(yè)也紛紛開(kāi)始搶灘中國(guó)智能鎖的市場(chǎng),以圖以智能鎖為入口搶占智能家居的市場(chǎng)份額。智能鎖取代傳統(tǒng)機(jī)械鎖是一個(gè)必然的發(fā)展趨勢(shì),我們有很多理由相信,在不久的將來(lái),智能鎖將以其得天獨(dú)厚的專(zhuān)業(yè)技術(shù)優(yōu)勢(shì),帶領(lǐng)中國(guó)鎖具行業(yè)得到更好的發(fā)展,讓更多的人更放心地在更多的場(chǎng)合使用。
系統(tǒng)硬件框圖如圖1所示。
該系統(tǒng)主要可以分為四部分,第一部分是IC卡、指紋、鍵盤(pán)模塊,在本系統(tǒng)中,電子鑰匙的類(lèi)型有三種,分別是IC卡、指紋、數(shù)字密碼,這三類(lèi)分別對(duì)應(yīng)上述三個(gè)模塊,這三個(gè)模塊用于采集外部電子鑰匙的信息,并且將這些信息通過(guò)設(shè)定好的通信協(xié)議,發(fā)送給主控芯片;第二部分則是主控芯片部分,該系統(tǒng)的核心器件是STM32單片機(jī),采用的具體型號(hào)是STM32F103RCT6,它是一款基于Cortex-M3內(nèi)核的32位處理器,STM32通過(guò)與三個(gè)信息采集模塊進(jìn)行通信,獲取當(dāng)前的開(kāi)鎖信息,并且與外部FLASH中存儲(chǔ)的密碼信息進(jìn)行對(duì)比,若匹配成功,則發(fā)出PWM波驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),進(jìn)而開(kāi)鎖;第三部分是外部FLASH,借助其掉電仍然保存的特點(diǎn),就可以將電子鑰匙的信息存儲(chǔ)在其中,同時(shí),通過(guò)與其通信,可以添加電子鑰匙信息,刪除電子鑰匙信息、還可以查詢(xún)當(dāng)前FLASH中已經(jīng)存儲(chǔ)的賬戶(hù)數(shù)量;第四部分則是OLED顯示部分,該部分提供了友好的人機(jī)交互界面,用戶(hù)可以從OLED中看到實(shí)時(shí)的時(shí)間、電子鑰匙的ID號(hào)、開(kāi)鎖記錄、還會(huì)提示用戶(hù)鑰匙是否驗(yàn)證成功。

圖1 系統(tǒng)硬件框圖
在本系統(tǒng)中,選擇的是STM32F103RCT6作為MCU,它擁有的資源包括:48KB SRAM、256KB FLASH、2個(gè)基本定時(shí)器、4個(gè)通用定時(shí)器、2個(gè)高級(jí)定時(shí)器、2個(gè)DMA控制器(共12個(gè)通道)、3個(gè)SPI、2個(gè)IIC、5個(gè)串口、1個(gè)USB、1個(gè)CAN、3個(gè)12位ADC、1個(gè)12位DAC、1個(gè)SDIO接口及51個(gè)通用IO口。該芯片性?xún)r(jià)比極高,在本系統(tǒng)中,其主要作用是以下4點(diǎn):第一,是負(fù)責(zé)與指紋、IC卡、鍵盤(pán)進(jìn)行通信,實(shí)時(shí)采集電子鑰匙的信息;第二,是對(duì)FLASH進(jìn)行讀寫(xiě)操作,用于存儲(chǔ)賬戶(hù)信息和開(kāi)鎖記錄;第三,是驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),執(zhí)行開(kāi)鎖和關(guān)鎖的動(dòng)作;第四,是對(duì)OLED模塊進(jìn)行讀寫(xiě)操作,將系統(tǒng)的一部分信息顯示在OLED上。
在本系統(tǒng)中,采用的IC卡讀寫(xiě)芯片是斯凱瑞利公司的SKY1311T芯片,它是一款應(yīng)用于13.56MHz RFID系統(tǒng)非接觸式讀寫(xiě)設(shè)備芯片,支持ISO14443 Type A/B標(biāo)準(zhǔn)協(xié)議,數(shù)據(jù)傳輸速率是106kbps到848kbps,集成了雙向加密認(rèn)證,只需要極少數(shù)的外圍元器件,就可以實(shí)現(xiàn)有效距離10cm的通信。同時(shí)它還有靈活的中斷模式,與單片機(jī)的通信接口為標(biāo)準(zhǔn)的SPI接口,與MCU連接圖如圖2所示。當(dāng)非接觸智能卡進(jìn)入讀卡器建立的磁場(chǎng)有效區(qū)域中時(shí),磁場(chǎng)中儲(chǔ)能將受卡片影響將產(chǎn)生變化。SKY1311T可監(jiān)測(cè)磁場(chǎng)強(qiáng)度并感知其細(xì)微變化,判定是否有卡片進(jìn)入磁場(chǎng)。在本系統(tǒng)中,將模塊配置為自動(dòng)有卡檢測(cè)之后,就可以不需要MCU的接入,SKY1311T自動(dòng)按照配置完成尋卡操作,尋到卡后發(fā)出中斷,喚醒MCU。

圖2 與MCU連接圖
在本系統(tǒng)中,采用的指紋模組是鑫泓佳F4系列半導(dǎo)體一體化指紋模組,它主要由指紋傳感器BF81260F、算法芯片GD32FFPRTGU6和瑞典著名算法公司Precise Biometrics(PB)指紋算法等組成。F4系列半導(dǎo)體指紋模組結(jié)構(gòu)簡(jiǎn)單,模塊化設(shè)計(jì),提高了產(chǎn)品的穩(wěn)定性和一致性,最重要的是它提供了一個(gè)通用串口,按照F4系列一體化程序通信協(xié)議交互通信,來(lái)實(shí)現(xiàn)指紋處理模塊功能,方便二次開(kāi)發(fā)。在本系統(tǒng)中,要實(shí)現(xiàn)添加指紋、比對(duì)指紋的功能,主要需要用到PS_GetImage(驗(yàn)證用獲取圖像)、PS_GenChar(生成特征)、PS_RegModel(合并特征且生成模板)、PS_StoreChar(存儲(chǔ)模板)等四個(gè)指令。
在本系統(tǒng)中,鍵盤(pán)的作用就相當(dāng)于是一個(gè)控制臺(tái),本次總共需要用到16個(gè)按鍵,正好可以采用4x4的矩陣鍵盤(pán),這16個(gè)按鍵分別是數(shù)字0~9,以及‘*’按鍵和‘#’按鍵,這兩個(gè)按鍵分別代表刪除數(shù)字和輸入結(jié)束。還有4個(gè)按鍵則是“A”、“B”、“C”、“D”,分別代表添加IC卡、添加指紋、添加數(shù)字密碼和刪除某一個(gè)ID號(hào)的密碼。數(shù)字密碼是由6~10位的阿拉伯?dāng)?shù)字組成的,當(dāng)用戶(hù)按下這其中的某一個(gè)按鍵時(shí),單片機(jī)會(huì)通過(guò)逐行掃描查詢(xún)的方法,得出鍵值,然后單片機(jī)就會(huì)執(zhí)行該鍵值所對(duì)應(yīng)的動(dòng)作。
在本系統(tǒng)中,所采用的外部FLASH型號(hào)是W25Q64。它是由華邦公司推出的大容量SPI FLASH產(chǎn)品,其容量為64Mb。當(dāng)用戶(hù)完成了添加電子鑰匙的操作之后,單片機(jī)會(huì)將這些數(shù)據(jù),按照一定的格式進(jìn)行組合,通過(guò)對(duì)W25Q64進(jìn)行讀寫(xiě)操作,將這些數(shù)據(jù)存儲(chǔ)起來(lái),并且會(huì)給每一個(gè)電子鑰匙分配一個(gè)獨(dú)一無(wú)二的ID號(hào)碼,并且將這一ID號(hào)碼顯示在OLED上。若是要?jiǎng)h除電子鑰匙,單片機(jī)也會(huì)根據(jù)這一指令,完成對(duì)應(yīng)的讀寫(xiě)操作。當(dāng)系統(tǒng)剛上電時(shí),單片機(jī)會(huì)從FLASH中讀出所有的電子鑰匙信息,并且存儲(chǔ)到單片機(jī)的內(nèi)部RAM中,方便后續(xù)的信息比對(duì)工作。當(dāng)電子鑰匙比對(duì)成功之后,系統(tǒng)會(huì)執(zhí)行開(kāi)鎖的動(dòng)作。此時(shí),單片機(jī)從RTC時(shí)鐘讀取當(dāng)前的時(shí)間,結(jié)合本次的電子鑰匙信息以及ID號(hào),生成開(kāi)鎖記錄,并且將這個(gè)開(kāi)鎖記錄存到外部FLASH中,方便以后能夠查詢(xún)開(kāi)鎖記錄。
在本系統(tǒng)中,使用的顯示模塊是0.96寸的IIC接口的OLED模塊。相比于傳統(tǒng)的顯示屏,OLED顯示屏具有反應(yīng)速度極高、廣視角等優(yōu)點(diǎn)。在設(shè)計(jì)電路是,將該模塊的數(shù)據(jù)引腳掛載在IIC總線上,片選CS引腳則連接至單片機(jī)的IO口即可。OLED正常工作后,再配合著按鍵,用戶(hù)就可以從OLED上查看自己需要的信息。

圖3 系統(tǒng)流程圖
在本系統(tǒng)中,采用了RT-Thread作為實(shí)時(shí)操作系統(tǒng),方便進(jìn)行多線程的開(kāi)發(fā)。RT-Thread是一個(gè)國(guó)產(chǎn)的嵌入式實(shí)時(shí)多線程操作系統(tǒng),基本屬性之一是支持多任務(wù),在RT-Thread系統(tǒng)中,任務(wù)是通過(guò)線程實(shí)現(xiàn)的,任務(wù)與任務(wù)之間通過(guò)任務(wù)調(diào)度器進(jìn)行非??焖俚厍袚Q(調(diào)度器根據(jù)優(yōu)先級(jí)決定此刻該執(zhí)行的任務(wù))。在本系統(tǒng)中,總共設(shè)計(jì)了4個(gè)線程,分別是Task_IC,Task_Finger,Task_Key和Task_Board,分別代表IC卡線程、指紋線程、按鍵線程和主線程,各個(gè)線程之間通信采用消息隊(duì)列的方式,這種方式能夠接收來(lái)自線程或中斷服務(wù)例程中不固定長(zhǎng)度的消息,并把消息緩存在自己的內(nèi)存空間中。其他線程也能夠從消息隊(duì)列中讀取相應(yīng)的消息,而當(dāng)消息隊(duì)列是空的時(shí)候,可以掛起讀取線程。當(dāng)此時(shí)有一個(gè)新的消息請(qǐng)求到達(dá)時(shí),掛起的線程將被自動(dòng)喚醒以便于接收并自動(dòng)處理新的消息。
在Task_IC(IC卡線程)中,當(dāng)檢測(cè)到有卡進(jìn)入時(shí),線圈周?chē)拇艌?chǎng)會(huì)發(fā)生變化,進(jìn)而產(chǎn)生中斷。此時(shí)在Task_IC線程中,會(huì)通過(guò)SPI總線讀取寄存器中的值,單片機(jī)會(huì)將讀取到的值按照特定的格式轉(zhuǎn)化為電子鑰匙信息,然后就會(huì)將這一信息通過(guò)消息隊(duì)列的形式發(fā)送給主線程,為主線程執(zhí)行后續(xù)的動(dòng)作提供條件。類(lèi)似的,在Task_Finger(指紋線程)中,當(dāng)有手指貼近時(shí),指紋模組會(huì)產(chǎn)生一個(gè)中斷,喚醒MCU。由于本系統(tǒng)采用的是一體化的指紋模組,指紋比對(duì)的工作在指紋模組內(nèi)部就已經(jīng)完成了,所以,此時(shí)指紋模組會(huì)給MCU返回比對(duì)成功或者比對(duì)失敗的指令,若比對(duì)成功,MCU就會(huì)向指紋模組查詢(xún)當(dāng)前指紋的信息,查詢(xún)完成之后,該線程也會(huì)將這些信息發(fā)送給主線程,通知主線程執(zhí)行下一步的操作。若是比對(duì)失敗,指紋線程則會(huì)向主線程發(fā)送開(kāi)鎖失敗的相關(guān)信息。在Task_Key(按鍵線程)中,當(dāng)有按鍵被按下時(shí),MCU負(fù)責(zé)讀取該按鍵的鍵值,并且將信息發(fā)送給主線程,通知主線程執(zhí)行下一步的操作。而在Task_Board(主線程)中,主線程負(fù)責(zé)接收上述三個(gè)分支線程發(fā)來(lái)的信息,并且將這些信息進(jìn)行處理和整合,完成對(duì)外部FLASH進(jìn)行讀寫(xiě)、控制電機(jī)轉(zhuǎn)動(dòng)和對(duì)OLED進(jìn)行寫(xiě)數(shù)據(jù)等一系列操作。
小結(jié):在本系統(tǒng)中,介紹了一種多功能的智能門(mén)鎖系統(tǒng),用戶(hù)可以通過(guò)IC卡、指紋和數(shù)字鍵盤(pán)這三種方式來(lái)進(jìn)行開(kāi)鎖。同時(shí),還可以通過(guò)鍵盤(pán)輸入,來(lái)查看開(kāi)鎖記錄和用戶(hù)信息。這樣,這種智能門(mén)鎖系統(tǒng)就可以運(yùn)用在多種場(chǎng)景中,譬如酒店、公寓和私人住宅等。