吳超瓊, 許鐘華, 陸曉興, 楊才廣
(廣西民族師范學院 物理與電子工程學院, 廣西 崇左532200)
門禁終端采用STM32F103C8T6 作為主控單元,該芯片采用Cortex-M3 架構,頻率72 Mhz,支持程序和數(shù)據(jù)加密,在低成本和安全的同時滿足系統(tǒng)設計需要[1]。 軟件中間件使用FreeRTOS 操作系統(tǒng)來調(diào)度任務。 外圍組成單元及模塊主要有4×4 矩陣鍵盤負責人機交互,門禁密碼的輸入,用0.96 寸OLED 屏幕顯示信息,AS608 指紋模塊負責識別指紋并存儲指紋信息,DC-DC 電源管理單元為系統(tǒng)不同外設提供不同電壓的穩(wěn)定電源,SHT20 數(shù)字溫濕度傳感器負責檢測門禁終端系統(tǒng)周圍的溫濕度數(shù)據(jù),通過互聯(lián)網(wǎng)傳輸至服務器,中轉至手機APP,在手機APP 上顯示溫濕度。 ESP8285 WIFI 模塊幫助門禁終端設備接入互聯(lián)網(wǎng),且可提供OTA 升級功能。 門禁終端系統(tǒng)框圖如圖1 所示。
服務器端采用阿里云輕量級服務器,該服務器擁有IPV4 下的固定公網(wǎng)IP,為數(shù)據(jù)傳輸帶來了便利。 服務器作為一個中間設備,提供數(shù)據(jù)轉發(fā)、賬號授權和終端設備OTA 升級。

圖1 門禁終端系統(tǒng)框圖Fig. 1 Block diagram of access control terminal system
APP 端,目前適配安卓7 至安卓9。 APP 端作為物聯(lián)網(wǎng)設備的主要交互方式,在APP 上可以看到終端設備的溫濕度信息和門禁鎖的狀態(tài)(開啟還是關閉)。 在交互方式上,可以通過輸入密碼遠程解鎖,或者驗證手機持有者的指紋遠程解鎖。 系統(tǒng)的網(wǎng)絡結構圖如圖2 所示。

圖2 系統(tǒng)網(wǎng)絡結構圖Fig. 2 Network structure diagram of the system
(1)門禁終端設備軟件更新。 本設計門禁終端可進行OTA 升級。 終端加電,在BootLoader 中會初始化ESP8285 WIFI 模塊和OLED 顯示模塊,主控芯片發(fā)送指令給ESP8285 使其連接指定服務器,建立連接后發(fā)送握手協(xié)議,握手協(xié)議自行設計的特定信息,用于設備驗證。 服務器解析驗證正確后,既可訪問服務器。 隨后主控芯片發(fā)送系統(tǒng)軟件版本查詢命令,服務器給予反饋,如果版本高于本地,主控芯片發(fā)送更新請求,服務器響應并發(fā)送最新的程序,OLED 屏幕顯示更新信息。 軟件更新的流程圖如圖3 所示。

圖3 軟件更新流程圖Fig. 3 Flow chart of software updates
關于OTA 升級,在實際的使用過程中,用戶代碼一般都會大于芯片的內(nèi)存大小,這樣升級的時候會有限制用戶代碼的大小問題。 采用DMA 雙緩存機制,來協(xié)調(diào)程序寫入flash 的時差問題和內(nèi)存大小的問題。 ESP8285 是通過串口和主控通信,波特率為115 200[2],所接收的用戶程序也是通過串口發(fā)送給主控芯片。 在接收處理上,創(chuàng)建兩個大小為4 097字節(jié)的數(shù)組,BUF1 和BUF2,使用DMA 來接收數(shù)據(jù),數(shù)據(jù)長度為4 096字節(jié),通過DMA 溢出中斷來切換BUF1 和BUF2,F(xiàn)1 系列的芯片沒有硬件DMA 雙緩存,所以手動切換。 經(jīng)過測試計算,115 200波特率下,使用溢出中斷切換BUF 的時間小于一個位發(fā)送的間隔時間,也就是說可以不丟失數(shù)據(jù)完美切換BUF,通過一些設定的標志位來判斷某個BUF 是否接收完成,并寫入到主控芯片的flash 中,接收4 KB數(shù)據(jù)的時間要大于寫入4 KB 數(shù)據(jù)到主控flash 中的時間,直到全部接收完成。 整個通信過程,服務器到ESP8285 是通過TCP 協(xié)議,TCP 可靠,有丟包重發(fā)機制,所以數(shù)據(jù)直接透傳[3]。 ESP8285 到主控芯片,使用UART 通信,在115 200 波特率下,誤碼率為0%[4],所以在這一環(huán)節(jié)數(shù)據(jù)同樣可以穩(wěn)定可靠的傳輸。
(2)門禁終端主體程序。 程序進入了用戶代碼,首先初始化各個外設。 然后創(chuàng)建一個任務用來創(chuàng)建用戶任務,創(chuàng)建完成之后會刪除。 整個操作系統(tǒng)負責調(diào)度的任務有鍵盤掃描任務,獲取用戶輸入的數(shù)字密碼、溫濕度檢測、檢測環(huán)境的溫濕度、OLED屏幕顯示、功能切換、網(wǎng)絡通信。 每兩秒更新上傳一次溫濕度和門禁鎖狀態(tài)數(shù)據(jù),斷線重連、觸摸檢測(該任務包含了指紋驗證),獲取用戶輸入的指紋信息、開鎖、網(wǎng)絡授時,可獲取當前北京時間。 門禁終端軟件的總流程圖如圖4 所示。

圖4 門禁終端軟件流程圖Fig. 4 Flow chart of access control terminal software
(3)服務器端。 通過APP 和終端各自函數(shù)中填寫服務器固定IPv4 地址,為其開放的端口使用socket 發(fā)送設備ID 進行賬號驗證授權。 賬號授權后,建立連接,驗證APP 和終端預設信息,不符合則返回預設值。 開始數(shù)據(jù)接收,此時云端開始檢測APP 和終端是否都在線,若對方未上線則返回未上線消息,同時在云端打印接受的數(shù)據(jù)(丟棄該數(shù)據(jù))等待APP 和終端上線后才可轉發(fā)消息。 服務器工作的流程圖如圖5 所示。
(4)手機APP 端。 APP 啟動后,初始化網(wǎng)絡、指紋、廣播等控件,發(fā)送設備ID 驗證賬號,建立起socket 連接[5]。 建立連接后,等待終端上線。 若使用密碼解鎖,獲取到從鍵盤輸入的字符轉發(fā)為特定開頭的數(shù)據(jù)發(fā)送至云端,再由云端轉發(fā)至終端。 密碼校驗成功/失敗則通過云端返回一個解鎖/已鎖值。 接收到這個值即可判斷此時門禁的狀態(tài);若使用指紋解鎖,則調(diào)動系統(tǒng)指紋模塊,將該指紋數(shù)據(jù)以特定形式發(fā)送。 完成遠程解鎖。
當APP 和終端完成連接后,APP 接收終端通過云端發(fā)來的特定數(shù)據(jù),進行模塊化顯示,并廣播此時門禁的狀態(tài)。 手機APP 工作流程圖如圖6 所示。

圖6 APP 工作流程圖Fig. 6 Workflow diagram of APP
將硬件平臺與軟件平臺進行聯(lián)合測試。 首先,在手機上安裝物聯(lián)網(wǎng)門禁系統(tǒng)APP;將門禁終端設備加電,接入網(wǎng)絡,物聯(lián)網(wǎng)門禁系統(tǒng)APP,進行終端、服務器與APP 互聯(lián),進行各項功能測試。 門禁終端設備的實物圖如圖7 所示。 物聯(lián)網(wǎng)門禁系統(tǒng)APP 界面如圖8 所示。

圖7 門禁終端設備實物圖Fig. 7 Physical drawing of access control terminal equipment

圖8 物聯(lián)網(wǎng)門禁系統(tǒng)APP 界面Fig. 8 Interface of internet of things access system APP
首先,測試本地開鎖功能,本地終端有兩種方式開鎖,一種是按鍵密碼開鎖,一種是指紋開鎖。 提前存儲數(shù)字密碼和用戶指紋信息,通過測試按鍵輸入正確密碼和輸入正確指紋后可成功開鎖。
其次,測試通過手機APP 遠程開鎖功能,手機APP 也有兩種方式遠程開鎖,一種是輸入密碼開鎖,另一種是輸入指紋開鎖。 打開手機物聯(lián)網(wǎng)門禁系統(tǒng)APP,在APP 上輸入密碼可成功遠程開鎖,輸入指紋也可成功遠程開鎖。
本文設計的物聯(lián)網(wǎng)門禁系統(tǒng)采用模塊化設計,減小了終端體積,有效降低終端功耗。 設計了多種開鎖方式,提高了門禁的便利行、智能性和安全性。測試表明,各方式開鎖便利快速,通信穩(wěn)定可靠,通用性高,易于擴展應用。