胡 鋒,李 崢,陳韻秋,石惠敏
(淮北師范大學(xué)物理與電子信息學(xué)院,安徽淮北235000)
QR二維碼,又叫做二維條碼,可以將各種信息以數(shù)字化的形式用特定的圖形按照一定規(guī)律分布在黑白相間的圖形中。自20世紀(jì)90年代日本Denso公司設(shè)計(jì)出QR二維碼之后,世界上很多國(guó)家加快對(duì)二維碼技術(shù)[1]的研究并且開(kāi)發(fā)很多二維碼設(shè)備。中國(guó)在1993年開(kāi)始著手研究二維碼技術(shù),于2008年制定了二維碼的國(guó)家標(biāo)準(zhǔn),促進(jìn)了中國(guó)二維碼的研發(fā)。
最初的機(jī)械門(mén)鎖采用的是機(jī)械阻塞式,金屬鑰匙的偶合性強(qiáng),一把鑰匙開(kāi)多個(gè)門(mén)的情況經(jīng)常發(fā)生,并且金屬鑰匙笨重,不易攜帶。之后發(fā)展成為IC卡、ID卡[2]為介質(zhì)的射頻識(shí)別門(mén)禁,但I(xiàn)C卡和ID卡的認(rèn)證介質(zhì)容易丟失、損壞,并且門(mén)禁卡容易復(fù)制,安全性低。無(wú)論是金屬鑰匙還是門(mén)禁卡,公司訪客到達(dá)時(shí)需要配備大量的工作人員進(jìn)行人工管理,工作繁瑣且成本高[3]。針對(duì)傳統(tǒng)的公司訪客門(mén)禁存在的諸多問(wèn)題,本文設(shè)計(jì)了一種基于QR二維碼識(shí)別的公司訪客門(mén)禁系統(tǒng),能夠有效解決鑰匙和門(mén)禁卡的管理、存放以及攜帶等各種問(wèn)題,提高了公司整體工作效率,減少人力資源的浪費(fèi)。同時(shí)該系統(tǒng)對(duì)二維碼采用加密保護(hù)機(jī)制和權(quán)限管理模式,一方面提高了門(mén)禁系統(tǒng)的安全性能,另一方面使得門(mén)禁系統(tǒng)變得更加智能化,公司訪客的出入方式也會(huì)因此變得更加便利、快捷。
系統(tǒng)通過(guò)OpenMV3攝像頭識(shí)別訪客二維碼,將二維碼信息傳輸?shù)缴衔粰C(jī),上位機(jī)接收信息與系統(tǒng)庫(kù)中的信息進(jìn)行匹配,匹配成功則實(shí)現(xiàn)門(mén)禁的放行。在系統(tǒng)中管理員可以根據(jù)不同訪客的信息生成不同的加密二維碼,并將該二維碼以郵箱或者微信等方式發(fā)送給訪客。訪客手持二維碼在攝像頭下掃描,二維碼的信息通過(guò)攝像頭上的Wi-Fi模塊傳輸,上位機(jī)接收信息并對(duì)所獲得的加密二維碼進(jìn)行對(duì)應(yīng)的解碼,將解碼得到的信息與系統(tǒng)庫(kù)中的訪客信息進(jìn)行匹配,當(dāng)信息與庫(kù)中某一訪客信息匹配成功,則上位機(jī)通過(guò)ESP8266模塊發(fā)送匹配成功的指令給STM32,單片機(jī)接收到正確的指令后精準(zhǔn)地控制舵機(jī)進(jìn)行門(mén)鎖的啟動(dòng)[4]。公司訪客門(mén)禁系統(tǒng)的硬件框圖見(jiàn)圖1。管理員可以通過(guò)上位機(jī)對(duì)公司訪客設(shè)置相應(yīng)時(shí)間段的開(kāi)門(mén)權(quán)限,訪客拿到的二維碼鑰匙是具有一定時(shí)效的,并非一天內(nèi)任何時(shí)間段都可以開(kāi)門(mén),一旦超過(guò)系統(tǒng)設(shè)置的相應(yīng)時(shí)間范圍,訪客所持有的二維碼鑰匙就會(huì)失效,這樣的鑰匙權(quán)限設(shè)置大大地提高了公司門(mén)禁的安全性。
圖1 公司訪客門(mén)禁系統(tǒng)的硬件框圖
主控模塊是整個(gè)門(mén)禁系統(tǒng)的核心,可以精準(zhǔn)控制其他模塊的正常工作,本設(shè)計(jì)中主控模塊選用STM32F103RCT6單片機(jī)。一方面是因?yàn)槠渑渲谬R全,運(yùn)算速度和處理能力遠(yuǎn)遠(yuǎn)超過(guò)51系列和12系列單片機(jī)。另一方面是因?yàn)镾TM32單片機(jī)有著極高的集成度,其主頻是72 MHz、256 K的flash存儲(chǔ)器,自帶兩個(gè)12位ADC,擁有IIC、TIMER等眾多外部設(shè)備,具有功耗低、體積小、可靠性高等特點(diǎn)[5]。
本設(shè)計(jì)中的攝像頭模塊使用的是OpenMV3和ATWINC1500 Wi-Fi擴(kuò)展板[6]。其中,攝像頭負(fù)責(zé)采集信息,Wi-Fi拓展板負(fù)責(zé)信息的傳輸,OpenMV3與Wi-Fi拓展板連接原理圖如圖2所示。OpenMV3采用STM32F765VIT6處理器,主頻是216 MHz,RAM 是512 kB,F(xiàn)lash是2 MB,所有的I/O引腳輸出3.3 V并且5 V耐受,一個(gè)SPI總線(xiàn)高達(dá)54 MB/s速度。
圖2 OpenMV3與ATWINC1500 Wi-Fi擴(kuò)展板連接原理圖
OpenMV3通過(guò)高級(jí)語(yǔ)言Python編寫(xiě),其高級(jí)數(shù)據(jù)結(jié)構(gòu)可以在機(jī)器視覺(jué)算法中處理復(fù)雜的輸出,也可以很容易地使用外部終端觸發(fā)拍攝或者執(zhí)行算法,并運(yùn)用算法結(jié)果來(lái)控制I/O引腳。OpenMV3可以在MCU上很好地快速運(yùn)行,同時(shí)具有簡(jiǎn)單小巧、低功耗、低成本等特點(diǎn),在機(jī)器視覺(jué)(Machine Vision)方面也具有很好的應(yīng)用。
在本設(shè)計(jì)中驅(qū)動(dòng)模塊采用的SCS2332舵機(jī),該舵機(jī)可以實(shí)現(xiàn)360°旋轉(zhuǎn),響應(yīng)性好、效率高[7]。使用SCS2332舵機(jī)的主要原因是由于在本設(shè)計(jì)門(mén)鎖和門(mén)銷(xiāo)的轉(zhuǎn)動(dòng)過(guò)程中是需要任意角度旋轉(zhuǎn)的,而普通的舵機(jī)只能在180°范圍內(nèi)進(jìn)行角度轉(zhuǎn)動(dòng),無(wú)法達(dá)到本設(shè)計(jì)的要求。利用SCS2332舵機(jī)360°旋轉(zhuǎn)的特性就可以有效地控制門(mén)鎖和門(mén)銷(xiāo)的開(kāi)關(guān)。
SCS2332舵機(jī)可以選擇4.8~7.4 V間的任意電壓。當(dāng)舵機(jī)得到一個(gè)PWM脈沖信號(hào),會(huì)以特定速度選擇轉(zhuǎn)動(dòng),閉環(huán)控制,速度控制穩(wěn)定。PWM信號(hào)與360°舵機(jī)轉(zhuǎn)速滿(mǎn)足如下關(guān)系:當(dāng)控制舵機(jī)的輸出為1.5 ms方波時(shí),舵機(jī)的轉(zhuǎn)速為0;小于1.5 ms時(shí),舵機(jī)正向旋轉(zhuǎn)并于0.5 ms到最大轉(zhuǎn)速;大于1.5 ms時(shí),反向旋轉(zhuǎn)并于2.5 ms到最大轉(zhuǎn)速。在本設(shè)計(jì)中使用了兩個(gè)SCS2332舵機(jī),分別控制公司門(mén)禁中門(mén)鎖和門(mén)銷(xiāo)。
在門(mén)禁系統(tǒng)中,上位機(jī)、攝像頭與STM32之間的通信都是通過(guò)Wi-Fi模塊建立連接的。本設(shè)計(jì)Wi-Fi模塊選擇ATK-ESP8266模塊,這是ALIENTEK設(shè)計(jì)提供的一款高性能UART-WIFI(串口-無(wú)線(xiàn))模塊。該模塊獲得了FCCCE認(rèn)證,通過(guò)采用串口與MCU通信,內(nèi)置TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)串口與Wi-Fi之間的轉(zhuǎn)換[8]。ESP8266與單片機(jī)系統(tǒng)兼容,可以通過(guò)AT指令來(lái)控制,在使用過(guò)程中有3種模式可供選擇,用戶(hù)可根據(jù)需要選擇不同模式。第一種模式是COM-WIFI AP模式;第二種模式是COM-WIFI STA模式;第三種模式是COM-WIFI AP+STA模式,既可以連接到其他無(wú)線(xiàn)網(wǎng)絡(luò),也可以作為熱點(diǎn)供其他無(wú)線(xiàn)設(shè)備連接[9]。本設(shè)計(jì)主要是利用了ESP8266的STA模式,實(shí)現(xiàn)了模塊間的數(shù)據(jù)傳輸。
本設(shè)計(jì)的按鍵模塊采用電容式觸摸按鍵[10],其電路原理圖如圖3所示,在公司門(mén)禁的內(nèi)側(cè)安裝一個(gè)按鍵模塊,房間內(nèi)部的人可以實(shí)現(xiàn)一鍵開(kāi)關(guān)門(mén)銷(xiāo),方便快捷。
電容式觸摸按鍵運(yùn)用的是RC充放電電路原理。RC電路充放電公式為:
(1)
其中,V0是電壓初值,V1為最終電壓值,Vt表示的是瞬時(shí)電壓值。當(dāng)V0=0時(shí),公式可簡(jiǎn)化為:
(2)
在同樣的條件下,電容值C跟時(shí)間值t成正比關(guān)系,電容越大,充電到達(dá)某個(gè)臨界值的時(shí)間越長(zhǎng)。當(dāng)手指按下,電容值變大,充電時(shí)間增加,反之充電時(shí)間減少。按鍵是否被按下就可以通過(guò)充電時(shí)間來(lái)判別,一旦按鍵成功則會(huì)觸發(fā)門(mén)銷(xiāo)的開(kāi)關(guān)。
圖3 電容式觸摸按鍵電路原理圖 圖4 OLED模塊電路原理圖
選用0.96寸OLED顯示屏[11]作為顯示模塊,其電路原理圖如圖4所示。在本設(shè)計(jì)中OLED顯示屏主要顯示兩方面信息:一方面,當(dāng)無(wú)訪客進(jìn)入時(shí),OLED模塊實(shí)時(shí)顯示當(dāng)前電源電壓和所剩電量,便于門(mén)禁管理者及時(shí)關(guān)注電量信息。另一方面,當(dāng)有訪客準(zhǔn)備掃碼進(jìn)入時(shí),系統(tǒng)核對(duì)二維碼信息的正確性,如果正確則會(huì)顯示驗(yàn)證成功允許進(jìn)入的信息,如果二維碼信息錯(cuò)誤或者已失效則會(huì)提醒訪客驗(yàn)證失敗禁止進(jìn)入的信息。
本設(shè)計(jì)的下位機(jī)部分是用C語(yǔ)言編寫(xiě)的。C語(yǔ)言簡(jiǎn)潔靈活、邏輯性強(qiáng)、便于移植,在門(mén)禁系統(tǒng)的程序設(shè)計(jì)中,程序代碼高效執(zhí)行,單片機(jī)可以快速處理數(shù)據(jù),同時(shí)發(fā)送相應(yīng)指令操控驅(qū)動(dòng)模塊、Wi-Fi模塊、顯示模塊等功能模塊。
攝像頭部分的程序運(yùn)用Python語(yǔ)言,其流程圖如圖5所示。Python是面向?qū)ο蟮慕忉屝哉Z(yǔ)言,是一種高級(jí)編程語(yǔ)言[12]。在本設(shè)計(jì)中使用Python編程寫(xiě)出清晰易懂的程序,實(shí)現(xiàn)攝像頭部分的功能。上位機(jī)部分則用C#編寫(xiě),管理員事先將訪客信息通過(guò)上位機(jī)錄入庫(kù)中,然后按照訪客提供二維碼信息與庫(kù)中信息進(jìn)行匹配,匹配成功則發(fā)送成功指令給STM32,從而進(jìn)行下一步操作。二維碼在公司訪客門(mén)禁中應(yīng)用的設(shè)計(jì)程序流程圖如圖6所示。
圖5 Python編寫(xiě)的攝像頭識(shí)別流程圖
圖6 設(shè)計(jì)程序流程圖
二維碼作為電子鑰匙應(yīng)用于公司訪客門(mén)禁中,其安全性顯得尤為重要,因?yàn)橹挥幸话颜嬲踩蔫€匙才能保證門(mén)禁系統(tǒng)整體的安全。本設(shè)計(jì)從二維碼門(mén)禁的安全性角度出發(fā)認(rèn)真考慮了如何對(duì)二維碼進(jìn)行加密與解密,從而保證二維碼不會(huì)被不法分子破解,避免巨大損失。
二維碼加密及解密的核心就是密鑰[13]。本設(shè)計(jì)的密鑰主要采用兩種加密算法協(xié)同加密的方式,其中一種是AES加密算法,另一種是RSA加密算法,這樣的加密密鑰安全性能很高。首先將明文使用AES密鑰加密,隨后生成密文,在加密時(shí)密鑰的長(zhǎng)度不能太短,一般選擇192位,以此保證加密的安全性??紤]到僅使用AES算法無(wú)法真正保證二維碼鑰匙的絕對(duì)安全,在算力如此快速的今天,不法分子還是會(huì)利用計(jì)算機(jī)獲得大量明文和密文的樣本,很快推出系統(tǒng)的密鑰,從而達(dá)到破解二維碼鑰匙的目的。針對(duì)上述問(wèn)題,本設(shè)計(jì)使用RSA算法的公鑰為AES的密鑰進(jìn)行了深層加密保護(hù),大大提高了整個(gè)二維碼鑰匙的安全性[14]。二維碼加密及解密設(shè)計(jì)流程圖如圖7所示。
圖7 二維碼加密及解密設(shè)計(jì)流程圖
4.1.1 訪客注冊(cè)
首先錄入訪客信息,主要包括姓名、手機(jī)號(hào)、性別等,接著授權(quán)該訪客訪問(wèn)門(mén)禁的相應(yīng)權(quán)限,將訪客的二維碼鑰匙的類(lèi)型設(shè)置成兩種模式:一種是臨時(shí)的,另一種是永久的。臨時(shí)二維碼的時(shí)間可以隨意調(diào)整,可以將訪客到訪時(shí)間規(guī)定在9∶00—16∶00的時(shí)間段內(nèi),不在規(guī)定時(shí)間是無(wú)法開(kāi)啟門(mén)禁的,最后即可完成訪客注冊(cè),注冊(cè)成功界面如圖8所示。
圖8 訪客注冊(cè)成功界面
4.1.2 生成和發(fā)送二維碼
當(dāng)訪客順利完成注冊(cè)后,系統(tǒng)信息庫(kù)將保存訪客的相關(guān)信息。從庫(kù)中選擇一位訪客,如圖9所示。點(diǎn)擊生成二維碼按鍵,即生成該訪客特有的二維碼,二維碼生成后,點(diǎn)擊發(fā)送二維碼按鍵即可將二維碼發(fā)送給對(duì)應(yīng)的訪客,生成二維碼及發(fā)送二維碼界面如圖10所示。
圖9 選擇訪客界面
圖10 生成二維碼及發(fā)送二維碼界面
4.1.3 訪客來(lái)訪記錄
當(dāng)訪客收到系統(tǒng)發(fā)送的二維碼后,可以通過(guò)持有的二維碼鑰匙進(jìn)入對(duì)應(yīng)的門(mén),每次掃描二維碼進(jìn)入門(mén)禁,系統(tǒng)都會(huì)自動(dòng)記錄來(lái)訪人員的二維碼持有信息和進(jìn)入時(shí)間。門(mén)禁系統(tǒng)的管理者可以隨時(shí)查看不同門(mén)禁的訪客來(lái)訪記錄,如圖11所示。
圖11 訪客來(lái)訪記錄界面
訪客使用二維碼鑰匙在攝像頭前進(jìn)行掃碼識(shí)別,二維碼掃碼過(guò)程如圖12所示。當(dāng)二維碼識(shí)別成功,OLED顯示屏顯示“驗(yàn)證成功,允許進(jìn)入”(圖13),打開(kāi)門(mén)鎖及門(mén)銷(xiāo)。若二維碼掃描失敗,門(mén)鎖和門(mén)銷(xiāo)不工作,OLED顯示屏顯示“驗(yàn)證失敗,禁止進(jìn)入”(圖14)。最終經(jīng)過(guò)測(cè)試,所有部件都正常工作,整個(gè)系統(tǒng)的功能正常。
圖12 二維碼掃碼示意圖 圖13 二維碼識(shí)別成功示意圖 圖14 二維碼識(shí)別失敗示意圖
本文設(shè)計(jì)的新型公司訪客門(mén)禁解決了傳統(tǒng)公司門(mén)禁存在的問(wèn)題,并進(jìn)行了相應(yīng)的改善和創(chuàng)新。其一,打破實(shí)物的限制,將虛擬的二維碼作為開(kāi)門(mén)的鑰匙,幾乎是無(wú)成本,低碳環(huán)保;其二,金屬鑰匙及卡片鑰匙攜帶不便并且容易遺漏,在智能手機(jī)十分流行的今天,訪客只需要打開(kāi)手機(jī)掃一掃就可以開(kāi)門(mén);其三,二維碼訪客門(mén)禁系統(tǒng)提供準(zhǔn)確的統(tǒng)計(jì)數(shù)據(jù),公司的門(mén)禁管理者能夠準(zhǔn)確地掌握出入人員信息。二維碼訪客門(mén)禁系統(tǒng)構(gòu)架簡(jiǎn)單、部署方便、成本極低。隨著互聯(lián)網(wǎng)技術(shù)的進(jìn)一步發(fā)展,二維碼公司門(mén)禁系統(tǒng)高效智能化、科學(xué)化帶來(lái)的便捷會(huì)使得用戶(hù)數(shù)量不斷攀升,二維碼公司訪客門(mén)禁系統(tǒng)的市場(chǎng)應(yīng)用前景將更加可觀。