沈陽航空航天大學(xué)電子信息工程學(xué)院 景光錚 王若桐 李 軒 趙 飛
在社會積極倡導(dǎo)“互聯(lián)網(wǎng)+”、“智能家居”等概念,以及智能手機(jī)的普及、微信受眾越來越大的大背景之下[1],為了解決傳統(tǒng)門禁鑰匙丟失、遺忘、密碼門禁忘記密碼、生物門禁生物特征發(fā)生變化無法開鎖的問題,開發(fā)了基于微信公眾平臺二維碼身份識別的門禁系統(tǒng)。首先,手機(jī)被遺忘的頻率極低,基本均安裝了微信,移動(dòng)通信已經(jīng)基本普及,這為智能門禁提供了基礎(chǔ)條件[2]。其次,技術(shù)上,在國外,日本、韓國、美國均將二維碼技術(shù)應(yīng)用在圖書館管理上,通過手機(jī)掃描二維碼,可以快速登陸圖書館的手機(jī)端,這樣省去了在手機(jī)端輸入U(xiǎn)RL(網(wǎng)址)的繁瑣過程,實(shí)現(xiàn)了一鍵登錄[3]。門禁系統(tǒng)的服務(wù)端包括門禁控制服務(wù)器(提供下位機(jī)與服務(wù)端的交互)和用戶身份識別服務(wù)器(負(fù)責(zé)微信用戶身份的識別),這為智能門禁系統(tǒng)提供了服務(wù)器的支持??刂平K端,STM32F103、樹莓派均可以作為門禁系統(tǒng)的下位機(jī)終端,本方案選取樹莓派。樹莓派基于Linux的嵌入式系統(tǒng),在與服務(wù)器的數(shù)據(jù)交換上更加方便、快捷。
通過基于微信公眾號二維碼身份識別的門禁系統(tǒng)可以將當(dāng)下新興的二維碼技術(shù)與即時(shí)通信的微信相結(jié)合,利用掃碼實(shí)現(xiàn)開鎖功能,將二維碼儲存信息量大、云端識別保密性好的特點(diǎn)應(yīng)用在智能門禁上,安全、快捷,使門禁管理員可以遠(yuǎn)程授權(quán)[6]。
智能門禁系統(tǒng)由基于Linux嵌入式系統(tǒng)的樹莓派控制模塊、LCD12864顯示模塊、電磁鎖模塊、門禁控制服務(wù)模塊、身份識別服務(wù)模塊、用戶手機(jī)微信客戶端六部分組成,其系統(tǒng)的結(jié)構(gòu)方框圖如圖1所示:
圖1 系統(tǒng)結(jié)構(gòu)方框圖
圖2 系統(tǒng)工作流程圖
圖3 公眾號交互信息截圖
圖4 二維碼智能門禁實(shí)物圖
二維碼是微信接口生成的,而且是隨機(jī)生成的,在用戶掃描以后都會對二維碼進(jìn)行更新。二維碼里面儲存的是一條URL連接,用戶使用微信客戶端掃描二維碼后,微信客戶端會將掃描信息發(fā)送至微信API服務(wù)器(應(yīng)用程序編程接口),微信API服務(wù)器再將用戶信息(包括openid(用戶唯一標(biāo)識符))及掃描二維碼信息發(fā)送至門禁的系統(tǒng)服務(wù)器,用戶身份識別服務(wù)器通過openid和二維碼的信息進(jìn)行用戶身份的識別,判斷此用戶是否獲得了門禁開鎖的權(quán)限,若該用戶已經(jīng)獲得了門禁的開鎖權(quán)限則服務(wù)器會向樹莓派發(fā)送一條開鎖的指令,公眾號會以文字信息的形式提醒用戶開鎖成功,否則服務(wù)器不會向樹莓派發(fā)送任何指令,公眾號會以文字信息的形式提示用戶未獲得門禁權(quán)限,請等待管理員處理。此時(shí),服務(wù)器也會將申請授權(quán)的用戶的信息及門禁的信息以模板消息的形式發(fā)送給該門禁所對應(yīng)的管理員,如果管理員同意該用戶進(jìn)入,服務(wù)器會向樹莓派發(fā)送開鎖指令,用戶可以打開門禁,整個(gè)授權(quán)過程是在服務(wù)器中完成的。門禁系統(tǒng)中使用的門鎖為500KG的拉力電磁鎖,使用樹莓派的GPIO口對其進(jìn)行控制。具體的流程圖2、公眾號界面信息交互如圖3,實(shí)物如圖4所示。
顯示模塊使用的是LCD12864,LCD12864是128*64的點(diǎn)陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標(biāo)準(zhǔn)數(shù)據(jù)總線、6條控制線及電源線。采用KS0107控制IC。LCD12864可以用樹莓派的GPIO口進(jìn)行控制,從而實(shí)現(xiàn)對二維碼的顯示,其分辨率高、功耗低的特性能夠滿足門禁系統(tǒng)的顯示要求。二維碼顯示的效果見圖5。
圖5 顯示模塊實(shí)物圖
Raspberry Pi中文名為“樹莓派”,簡寫為RPI,體型很小,運(yùn)行Linux嵌入式操作系統(tǒng)。樹莓派的處理器型號為BroadcomBCM2835,基于ARM1176JZF-S核心,主頻為700MHz,高主頻的樹莓派具有強(qiáng)大的計(jì)算能力,而且樹莓派具有512MB的系統(tǒng)可編程RAM,支持SD卡擴(kuò)展,最高支持1080P的視頻輸出等強(qiáng)大功能,具有對圖象的強(qiáng)大處理能力[7]、WIFI適配器可以滿足與服務(wù)器的信息交互,以及極低的功耗要求,使其尤其適合智能門禁系統(tǒng)的控制系統(tǒng)設(shè)計(jì)。
微信平臺可以生成許多帶參數(shù)的二維碼,可以滿足智能門禁系統(tǒng)的使用。通過appid(手機(jī)應(yīng)用程序軟件編號)和secret(密鑰)來換取微信公眾號的Access Token(調(diào)用接口憑證),從而調(diào)用生成帶參數(shù)二維碼的API,獲取二維碼。使用HTTP(超文本傳輸協(xié)議)協(xié)議請求方式將JSON數(shù)據(jù)包發(fā)送給微信公眾平臺的Access Token獲取接口。通過解析返回的JSON數(shù)據(jù)包取得Access Token字符串。獲得Access Token后,可通過微信公眾平臺接口生成帶參數(shù)二維碼[4]。 每個(gè)二維碼的生成都要通過Ticket(二維碼的唯一標(biāo)識碼)。
首先是門禁控制服務(wù)器,負(fù)責(zé)與樹莓派的交互通訊,提供二維碼的刷新,門禁的開關(guān)控制等功能。其次是身份識別服務(wù)器,負(fù)責(zé)對用戶身份的識別和授權(quán)處理,并與門禁控制服務(wù)器配合完成對門禁的開關(guān)控制。
用戶掃描二維碼后,首先微信會判斷用戶是否已經(jīng)關(guān)注了該門禁系統(tǒng)對應(yīng)的微信公眾號,如果沒有關(guān)注,會先彈出關(guān)注頁面,提示用戶需要先進(jìn)行關(guān)注才能夠繼續(xù)操作。如果用戶已經(jīng)關(guān)注過該門禁系統(tǒng)對應(yīng)的公眾號,那么,首先微信會將用戶掃描二維碼的相關(guān)信息推送至微信的服務(wù)器,隨后微信服務(wù)器會將信息推送至門禁服務(wù)器的用戶身份識別服務(wù)器,門禁系統(tǒng)的用戶身份識別服務(wù)器便會對該用戶的操作進(jìn)行判斷,如果該用戶有對該門禁的操作權(quán)限,則會開啟門禁,否則會將授權(quán)申請發(fā)送至該門禁對應(yīng)的管理員,并等待管理員的審核。
樹莓派是基于ARM框架運(yùn)行的基于Linux嵌入式系統(tǒng)的控制終端,因此,可通過FTP或SFTP(文件傳輸協(xié)議)等方式,將python程序上傳至樹莓派。FTP中文簡稱“文傳協(xié)議”。它用于Internet上控制文件的雙向傳輸,上傳與下載,同時(shí)也是應(yīng)用程序(Application)。雖然不同的操作系統(tǒng)有不同的FTP應(yīng)用程序,但所有的這些應(yīng)用程序都遵守同一種協(xié)議以傳輸文件。SFTP中文簡稱為“安全文件傳送協(xié)議”,因?yàn)槠錇镾SH(安全外殼協(xié)議)的一部分,所以通過SSH的方式即可完成文件的上傳與下載[5]。
在對系統(tǒng)評測過程中,首先測試了手機(jī)距LCD12864顯示的二維碼的距離與二維碼掃描成功率之間的關(guān)系,用MATLAB擬合曲線以后,可以看出在20-30cm時(shí)成功率最高(圖7)。新用戶掃描二維碼后會推送關(guān)注該門禁公眾號的界面,關(guān)注以后,要等待管理權(quán)限才可以開門,已經(jīng)授權(quán)的用戶,可以開門進(jìn)門,而且收到開門成功的微信信息,所以經(jīng)過測試,智能門禁可以快速開門,而且具有良好的安全性。
微信平臺二維碼身份識別的門禁系統(tǒng),經(jīng)過理論分析與實(shí)踐證明是可行的。二維碼智能門禁系統(tǒng)消除了密碼式門禁易忘記密碼,密碼易被竊取,IC卡門禁磁卡消磁帶來的信息丟失,以及傳統(tǒng)門禁鑰匙易丟失、遺忘,以及以上所有門禁無法遠(yuǎn)距離授權(quán)的弊端。此門禁在帶來便捷的同時(shí),也存在缺點(diǎn),例如:停電以后電磁鎖無法工作、在無移動(dòng)信號情況下無法打開門禁。但是,缺點(diǎn)可以在后期研究中進(jìn)行改正,缺點(diǎn)無法掩蓋此研究融合了最近熱門的物聯(lián)網(wǎng)技術(shù)、嵌入式、二維碼、微信公眾號的前沿技術(shù)的科技感。
[1]李建華.二維條碼圖像處理算法及其VLSI設(shè)計(jì)研究[D].成都:電子科技大學(xué),2013,1-10.
[2]中國物品編碼中心.條碼技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2003,1-20.
[3]程裕強(qiáng),劉愛民,周國軍.二維碼生成算法研究[J].玉林師范學(xué)院學(xué)報(bào)(自然科學(xué)),2014,35(5):1-2.
[4]孫曉瑜,王榮宗,國外二維碼技術(shù)在圖書館的應(yīng)用啟示[J].圖書館學(xué)研究(應(yīng)用版),2013:23-25.
[5]馬鳴,李海波.基于Android的二維碼的生成與識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識與技術(shù),2012,8(26):6353-6356.
[6]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社(第一版),2008.
[7]董曉宇,房秉毅,張?jiān)朴?物聯(lián)網(wǎng)智能家居發(fā)展分析[J].移動(dòng)通信,2010,09:16-20.
[8]胡孝鵬.基于圖像處理的嵌入式QR碼識別系統(tǒng)的研究與實(shí)現(xiàn)[D].青島大學(xué),2007.