黃鎮建,陳泓昌
(韓山師范學院物理與電子工程學院,潮州521000)
開放實驗室是高??茖W研究的承載體,是鍛煉學生動手能力、創新能力以及進行實驗教學的重要場所,開放實驗室的建設也越來越受到高校的重視。如何適應高等教育發展趨勢,提高大學生整體綜合素質,是現階段亟待解決的一項問題,要想收獲良好的教學成效,離不開多元豐富實踐教學內容及教學手段的有力支持。開放實驗室的重點在于“開放”,學生可以根據自己的學習計劃,預約實驗時間和實驗項目。實驗室的開放說起來簡單,實現卻十分困難,諸如預約管理制度、開放時間,實驗人員身份認證等問題,令國內外高校十分頭痛。目前的門禁系統,大多是校園信息卡、指紋、人臉識別等,沒有辦法進行預約,因此,非常有必要借助互聯網+的環境,利用信息和電子技術,采用瀏覽器/服務器模式(B/S 模式)[1-2],設計一個符合本校實際的開放實驗室預約系統來解決這些問題,保障開放實驗室的有序運行。
QR Code 碼,是由日本Denso 公司于1994 年9 月研制的一種矩陣二維碼符號,可通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理,是矩陣式二維條碼的典型代表[3]。本設計將根據用戶預約信息生成的二維碼當作“鑰匙”,只有遇到正確的“鑰匙”,門禁端才會打開門鎖,允許進入實驗室。系統主要由在線網站、數據庫和門禁端硬件設備兩部分組成,在線網站用于預約及生成二維碼,門禁端硬件設備用于實驗人員的身份認證。其中門禁端硬件設備主要包括ESP8266 模塊和GM65 二維碼識別模塊,ESP8266 是一款超低功耗UART-WiFi 透傳模塊,專為移動設備和物聯網應用設計,可將用戶的物理設備連接到Wi-Fi 無線網絡上,系統的電路如圖1 所示。

圖1 電路圖
基于二維碼的開放實驗室預約系統可以實現在線預約使用實驗室,其工作流程如圖2 所示。用戶訪問網站,預約成功后,使用智能手機獲取門禁授權二維碼。用戶在預約時間到達實驗室,通過門禁端的二維碼識別模塊GM65 掃描手機二維碼,二維碼信息將通過ESP8266 模塊發送到服務器端,與數據庫中的預約信息進行驗證。最后,門禁端根據返回的驗證結果判斷是否打開由ESP8266 驅動的門閘,同時OLED 顯示屏會顯示相應的提示信息。如果預約二維碼信息正確,則OLED 顯示屏顯示“預約信息正確”,閘機打開,如果二維碼信息錯誤,顯示屏顯示“無此預約”。二維碼只能使用一次,成功掃碼后,服務器端會在預約記錄表中將進入標志位flag 置零,令該預約信息失效。用戶完成實驗后,從另一側門禁掃碼離開,這時只需判斷是否有該預約信息,標志位flag 是否為零,系統記錄用戶離開實驗室時間。

圖2 系統工作流程
線上網站主要實現用戶注冊登錄、提交預約、預約記錄、個人信息維護、以及實驗室管理員審核預約等功能,網站功能結構圖如圖3 所示。用戶登錄系統平臺,查看可開放的實驗室,選擇預約時間段,確認預約信息后提交申請。實驗室管理員登錄系統,根據申請人提交的時間、實驗室現狀等綜合情況,決定是否同意預約申請,如審核通過,用戶則獲得門禁授權二維碼;另外,實驗室管理員還可根據系統存儲預約信息進行預約實驗的監管、查詢和導出實驗室進入記錄,當出現預約爽約時,系統自動記錄,作為該用戶的預約優先等級信用;最后實驗室管理員還可以根據實驗室的排課和使用情況,發布預約時間和信息。

圖3 功能結構圖

圖4 網站二維碼
網站選用靈活、輕便、安全的Flask 框架來實現,后臺數據庫選用SQLite 數據庫,它占用資源非常低,處理速度更快[4]。服務器使用的是阿里云服務器,運行環境為CentOS+Python3+Gunicorn+Nginx[5-6]。網站支持手機瀏覽器、傳統PC Web 頁面兩種訪問方式,用手機掃圖4 的二維碼可以直接登錄本系統的主頁進行預約,使用起來非常方便。系統沒有設計App,這樣可以避免下載安裝、占用手機內存等諸多麻煩。用戶提交的預約申請中包含預約時間,實驗室管理員可通過這些信息和實驗室的實際使用情況決定是否同意預約。如果實驗室管理員同意預約,則服務器調用第三方庫qrcode 來生成二維碼,然后把生成的二維碼圖片文件名存入到用戶預約記錄表中record 字段中,當用戶查看預約記錄時,前端頁面就會顯示相應的二維碼圖片,二維碼信息包含用戶+預約實驗室名稱+預約時間段三部分內容,圖5 為手機瀏覽器獲取的二維碼,用戶憑該二維碼到預約實驗室掃碼通過門禁。
數據庫設計在系統開發中發揮著至關重要的作用。一個設計良好的數據庫不但可以有效地存儲的數據,而且還可以提高系統的運行效率,以及有利于系統開發和后期維護。結合本系統的實際功能需求分析,設計了6 張表,這6 張表分別為管理員信息表、普通用戶信息表、預約記錄表、預約信息表、實驗室信息表、系統消息表。管理員信息表(admin)用來存儲管理員的相關信息,普通用戶信息表(users)用來存儲普通用戶的相關信息。預約記錄表(book_record)用來存儲預約記錄的相關信息。如圖6 所示,id 字段是主鍵,具有唯一性,類型是integer 型,存儲的是數據在表中的序號。record 字段的約束為非空,類型為string 型,存儲的是用戶預約申請通過后,用來生成二維碼的信息。用戶在門禁端掃碼后傳過來的二維碼信息,就是要與record字段存儲的信息作比較,驗證是否有這個預約。預約信息表(book_info)用來存儲普票用戶提交的預約申請的相關信息。實驗室信息表(lab_info)用來存儲實驗室的相關信息。系統消息表(sys_mess)用來存儲管理員發布的消息的相關信息。

圖5 系統生成的二維碼

圖6 預約記錄表
門禁端硬件設備主要包括ESP8266 模塊和GM65二維碼識別模塊,這部分在Arduino IDE 環境下進行研發[7]。它們主要完成兩個功能:一是二維碼識別;二是在Wi-Fi 狀態下與服務器通信,將二維碼信息上傳至數據庫進行驗證,從而控制門禁的開關。
(1)門禁端識別二維碼信息
用戶預約成功后,就可以使用手機在預約記錄中得到一個包含預約信息的二維碼,按照預約的時間到達預約的實驗室掃碼就可以進入實驗室。實驗室門禁端使用GM65 二維碼識別模塊來識別二維碼的信息。GM65 掃描設備模塊功耗低,工作電流小于150mA,一體化設計,體積?。恢С諸TL232 和USB(中文免驅)接口;支持所有通用一維條碼及常用二維碼,可直接識別手機屏幕中的二維碼。將GM65 模塊與ESP8266 模塊通過串口通信方式連接,就可以把二維碼信息傳給ESP8266 模塊。
(2)門禁端與服務器進行通信
門禁端識別二維碼后還得把二維碼信息上傳到網站服務器端進行驗證,根據服務器端回傳的驗證結果來決定閘機的開關狀態,這就要使門禁端與網站服務器端之間能夠進行通信。本設計使用HTTP 協議和ESP8266-12E 模塊來實現它們之間的通信。ESP8266-12E 模塊是ESP8266-12 的增強版,支持HSPI、UART、I2C、I2S,不僅帶有Wi-Fi 模塊可以實現聯網還可以拓展外圍電路,控制相關外設。每個門禁端都是與對應的實驗室綁定的,當ESP8266-12E 模塊接收到GM65二維碼識別模塊傳過來的二維碼信息時,會在這個信息前加上當前實驗室的名稱,然后才會把這個合并后的信息通過HTTP 協議上傳到網站服務器端進行驗證。使用HTTP 協議實現這一通信的部分代碼如下所示:

add_data 為合并后的信息。ESP8266-12E 模塊通過post[8]方法將add_data 變量發送到網站的“/from_esp”這一URL,在這個URL 中會先對這個信息進行編碼格式的轉換,因為使用HTTP 協議上傳時原信息的編碼
格式已經改變了。然后把add_data 變量中的信息拆分為合并前的樣子,即分為綁定的實驗室名稱和二維碼信息這兩部分,然后就可以對二維碼信息進行驗證了。在數據庫預約記錄表中查找是否有這個二維碼信息的部分代碼如下所示:
(3)門禁端的響應
門禁端是根據服務器端返回的驗證結果而做出相應的響應的。在門禁端與服務器端之間定義一個簡單的通信協議:R 表示預約信息正確,E 表示非預約時間,I 沒有這個預約,B 表示非預約實驗室。網站服務器端返回的驗證結果將存到flag 變量,即flag 變量的值為R、E、I、B 中的一個,ESP8266 模塊根據flag 的值決定是否打開閘機以及驅動oled 顯示屏顯示什么信息。門禁端響應的部分代碼如下所示:

本文實現了基于二維碼的開放實驗室預約系統,能為實驗室的開放提供強有力的支撐,為開放實驗室的管理提供一種新的思路,該系統具有:①多樣快捷的訪問方式,支持手機瀏覽器、傳統Web 頁面兩種訪問方式;②在線預約與門禁授權聯動,實現實驗室預約使用者身份的智能認證;③實現了實驗室智能化監管,門禁系統有效記錄開放實驗室使用信息。本系統利用二維碼作為實驗室授權使用的“鑰匙”,再結合“互聯網+”技術,實現開放實驗室預約的在線管理,破解了進入開放實驗室的身份認證難題。基于二維碼的開放實驗室預約系統的使用,能夠使高校實驗室在互聯網、智能裝備的引導下發生質的飛躍,實現實驗室的現代化、智能化管理,為高校師生的工作和學習提供更大的方便。