甘國霖 張德鑫 黃杰華 賴朝健 張曉潔
(廣西民族師范學(xué)院數(shù)理與電子信息工程學(xué)院 廣西壯族自治區(qū)崇左市 532200)
基于NFC 的無線智能門鎖是利用NFC 技術(shù)實現(xiàn)智能鎖的控制,通過把NFC 技術(shù)和智能鎖的結(jié)合,讓智能手機利用NFC 功能實現(xiàn)對家庭門鎖的控制。本文利用NFC 的短距離高頻通信技術(shù),實現(xiàn)手機刷卡即開鎖的便捷。同時NFC 智能門鎖還配置一鍵指紋解鎖和輸入設(shè)定密碼解鎖,做到手機不在身邊也能開鎖。NFC 技術(shù)應(yīng)用于門禁鎖,使得門禁的開鎖方式更快捷、便利,使用戶擺脫了按鍵密碼的繁瑣操作和因手指破損無法使用指紋鎖。
使用Arduino Mega2560 作為主控板(以下簡稱主控板),NFC智能門鎖有四種開鎖模式用于應(yīng)對不同的情況。NFC 開鎖可以使用帶有NFC 的手機、手環(huán)、NFC 戒指、非接觸式IC 卡等方式打開門鎖。指紋開鎖是用來應(yīng)對手機、NFC 設(shè)備和IC 卡不在身邊時,使用指紋實現(xiàn)開鎖。密碼開鎖應(yīng)用于客人來家做客或指紋破損的情況,可通過輸入密碼來打開門鎖。鑰匙開鎖是為應(yīng)對鎖體無電或其三大模塊無法工作的意外情況,使用鑰匙即可開鎖。系統(tǒng)整體設(shè)計思路如圖1 所示。
Arduino 是一款由意大利工程師共同研制出來的一款便宜好用的微處理器,通過在Arduino IDE 上編寫程序代碼通過USB 傳輸線將程序編譯上傳以后,只需對Arduino 和所需的硬件進(jìn)行相對應(yīng)的接線,主控板就會完成程序中所有功能的執(zhí)行。
近場通信(NFC)是由射頻識別(RFID)演變而來的,它既具備有射頻識別技術(shù)的高頻無線傳輸功能,又有優(yōu)于射頻識別技術(shù)的安全性能。NFC 分有兩種傳輸模式,主動模式和被動模式,本文中的PN1-532 使用被動傳輸模式。被動模式是由發(fā)起設(shè)備,也就是PN-532 作為能量傳遞者,通過產(chǎn)生電磁場的方式,將能量傳遞給目標(biāo)設(shè)備,目標(biāo)設(shè)備接收能量后開始運行。目標(biāo)設(shè)備在運轉(zhuǎn)后,通過負(fù)載調(diào)制技術(shù),調(diào)制電磁場,回傳識別數(shù)據(jù),實現(xiàn)設(shè)備間的數(shù)據(jù)傳輸。
NFC 模塊主要核心為PN-532,實現(xiàn)的功能是保證鎖安全的前提下,使開鎖更為便捷。NFC 模塊是由PN-532 和主控板構(gòu)成,兩個元器件的連接如表1 所示。
主控板通過PN1-532 以電磁場的形式向周圍發(fā)送尋卡信號,若有NFC 功能ID 卡或電子模擬設(shè)備進(jìn)入電磁場范圍,PN-532 通過RQ 引腳向主控板放送中斷請求信號,主控板中斷當(dāng)前程序的運行,并按標(biāo)準(zhǔn)ISO14443A 發(fā)送指令,讀取卡片信息。信息讀取完畢,使用數(shù)據(jù)傳輸引腳(SDA)與串行時鐘引腳將卡片信息傳入設(shè)定變量,并通過調(diào)取原存儲數(shù)據(jù)與現(xiàn)引入數(shù)據(jù)進(jìn)行對比,對比成功,執(zhí)行開鎖,返回信息;對比失敗,僅返回信息。
PN-532 所使用芯片80C50 微控芯片沒有存儲功能,對于讀取到的ISO14443A 標(biāo)準(zhǔn)數(shù)據(jù)需要在主控板實行存儲。數(shù)據(jù)的存儲位置為主控板的上電可擦可編程只讀存儲器(EEPROM),它可保證在斷電情況下,內(nèi)部數(shù)據(jù)不丟失,但主控板的EEPROM 存儲空間僅為4k 字節(jié),不能滿足ISO14443A 標(biāo)準(zhǔn)協(xié)議所需的32 位存儲空間。對此,本文采取梯歸提取方法,將ISO14443A 標(biāo)準(zhǔn)數(shù)據(jù)提取為10個僅1 字節(jié)的存儲數(shù)據(jù),以存儲10 個1 字節(jié)數(shù)據(jù),實現(xiàn)數(shù)據(jù)的斷電儲存。如表1 所示。
AS608 模塊是ALIENTEK 的一塊高性能光學(xué)指紋識別模塊。光學(xué)指紋識別是最早的指紋識別,也是現(xiàn)應(yīng)用較廣泛的指紋識別,它的指紋提取方式是以棱鏡為采集平面,將采集的指紋通過光打到電荷耦合器件。電荷耦合器件通過對指紋紋路和紋路間凹陷部分的刻畫,形成算法可以識別的多灰度指紋圖像。
AS608 模塊內(nèi)有細(xì)分算法,對捕獲的指紋圖像進(jìn)行去躁、增強、分割、二值化和細(xì)化預(yù)處理,從而達(dá)到去除多余背景,獲得清晰圖像的目的。將清晰的二值化圖像映射到模板上,對模板指紋進(jìn)行特征提取,提取出指紋中的分叉點、終止點、中心點和三角點。提取的特征點,通過AS608 模塊內(nèi)置的特征文件緩沖區(qū)存入特征文件。
指紋模塊的配置,用于NFC 設(shè)備丟失或遺忘情況,元器件連接如表2 所示。
用戶使用指紋模塊,按下手指,主控板調(diào)取AS608 模塊存儲特征點,對當(dāng)前提取的特征點進(jìn)行1:N 匹配模式,也就是對輸入的特征點模板與存儲庫中存儲的所有特征點模板進(jìn)行匹配。指紋特征點匹配相似度達(dá)到90%,主控板判斷指紋為一致,動作電磁鎖,完成開鎖。
圖1:NFC 智能門鎖總體設(shè)計圖
矩陣鍵盤又稱為行列式鍵盤,本文使用的是4*3 矩陣按鍵,其原理是以4條IO線作為矩陣的行端口,3條IO線作為矩陣的列端口。行端口提供高電平,列端口提供低電平,通過掃描行端口電平是否被拉低來判斷有無按鍵按下,有,確認(rèn)按鍵所在行,并掃描列端口,找出電平拉高所在列。由電平變化所在行列的交接點按鍵作為用戶輸入的按鍵。
本文智能鎖的設(shè)計采用矩陣按鍵作為人機對話方式,通過行列的變化,確定具體的輸入按鍵,配以程序回應(yīng)用戶的操作。
矩陣按鍵的行列分別與主控板的7 個數(shù)字端口相連(如表3 所示),主控板為行端口輸出高電平,為列端口輸出低電平。檢測按鍵狀態(tài)時,將各行端口進(jìn)行邏輯或運算,通過運算結(jié)果判定按鍵是否按下,若有按鍵按下,確定按鍵所在行;再將各列端口進(jìn)行邏輯與運算,確定動作按鍵所在列,借由行列的確認(rèn),最終完成動作按鍵的確定。
檢測到按鍵輸入,主控板將按鍵信息持續(xù)存入預(yù)設(shè)變量,直至用戶完成密碼的輸入。用戶輸入完整密碼,主控板調(diào)取原存儲矩陣密碼與現(xiàn)輸入密碼對比,密碼輸入正確,主控板動作電磁鎖開鎖,并返回信息,否則僅返回信息。
本文采用PN532、AS608、4*3 矩陣鍵盤、Arduino Mega2560和電磁閥鎖體做出了一個NFC 智能門鎖,該鎖具有電路結(jié)構(gòu)簡單、使用方便、制作成本低廉、提升空間大等優(yōu)點。
表1:PN-532 與Arduinomega2560 各引腳連接
表2:AS608 指紋與Arduinomega2560 各引腳連接
表3:矩陣按鍵與Arduinomega2560 各引腳連接
本文對智能鎖的制作提供了一種性價比較高的制作方法,通過了解Arduino Mega2560、AS608、PN532、4*3 矩陣鍵盤的基本原理和編程方法,將他們通過一塊Arduino Mega2560 實現(xiàn)在一個鎖具內(nèi)控制,探討智能鎖的一個制作方法和大眾需求,通過多方面的測試和意見收集,表明了該作品具有良好的效果和較好的穩(wěn)定性符合大眾的需求和預(yù)期效果。