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