陳泓昌,喻家明,李慶霖,黃鎮建
(韓山師范學院物理與電子工程學院,潮州521000)
隨著汽車的普及,很多城市往往會出現“一位難求”的情況,因此非常有必要開發一款接入互聯網的小型智能設備,滿足人民群眾出行的停車的需求。
本系統設計的基于加密二維碼的智能停車系統,可以實現網上預約停車。用戶在線預約停車后,即可獲可用智能手機獲得加密二維碼,該二維碼具有時效性。在規定時間內,用戶憑獲得的加密二維碼至停車場刷碼停車,用戶停車完畢后,刷碼結算。車輛離開后,云端數據庫增加一個停車位。一位難求已成為“城市的痛”,系統可應用到大型公共停車場,實現車位的在線智能化管理,用戶完全可“按需”駕車出行。
停車場管理方只需購買本作品設計的智能設備,并在網上注冊綁定即可使停車場處于無人值守的管理狀態。這既節省了人力,還可以實時共享停車數據,從而改善人們的出行體驗。
二維碼(2-Dimensional Bar Code),是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息[1]。目前,最流行的莫過于QR Code,QR 表示Quick Response 即快速響應,QR Code 碼具有全方位(360°)識讀特點,QR Code 碼的超高速識讀特性使它能夠廣泛應用于工業自動化生產線管理等領域,因此QR Coded 在很多領域得到廣泛應用。
目前,國內外市場上,也出現了很多二維碼門禁,廣泛應用于酒店房間,住宅等,但并沒有將二維碼技術應用到智能停車系統的門禁系統開發中,實現預約和結算功能,并且大多數應用并沒有注意到QR Code 由于其開源特性,容易被篡改、假冒,因此本文對QR 碼進行了加密處理。基于加密二維碼的智能停車預約系統開發成功后,將其適當修改,還可應用于電梯門禁、門診預約、車站、地鐵的驗票、大型賽事集會的簽到等領域,應用十分廣泛。該“鑰匙”很容易分發,制作成本也極低廉,如獲得資金支持,可滿足社會公共事業建設的需要,為智慧城市的建設添磚加瓦。
目前,QR 二維碼已經在很多領域得到大量應用。本文將在線生成的二維碼的信息當做“鑰匙”,只有遇到正確的“鑰匙”,智能停車系統的門禁設備才會啟動,允許停車。系統的實施分為線下硬件設備、MQTT 協議服務器控制腳本和線上網站三部分。
硬件部分使用ESP8266+Arduino+GM65 圍繞MQTT 協議來開發。在物聯網大肆發展的今天,樂鑫的ESP8266 模塊,能快速實現物聯網領域的多種實踐,逐漸在嵌入式領域占據了領先地位[2]。
服務器控制端使用Python 語言,接收設備發送過來的數據,解密,與用戶存儲在數據庫中的信息做比對,正確才發送開門信號給設備。
Web 頁面使用Python 的Flask 框架搭建,給注冊用戶提供生成加密二維碼的預約頁面[3]。管理員則可以通過后臺管理頁面操作數據,實現停車場數據的增刪改查,以及對用戶進行管理。
系統的設計及實現包括以下三部分:
(1)線下停車場硬件設備,主要實現用戶二維碼信息的傳輸給服務器,接收服務器回傳結果并做出相應的處理;
(2)線上網站。提供用戶注冊、信息存儲、停車場信息展示、后臺管理等功能;
(3)MQTT 協議服務器控制腳本,主要接收線下停車場硬件設備發送過來的信息,并進行比對,將結果回傳給對應的硬件設備[4]。
本作品硬件設備包括兩大部分,一部分屬于通信設備,為主設備;另一部分為控制設備,為從設備。主設備ESP8266 模組通過MQTT 協議與服務器通信,處理服務器回傳的數據,控制從設備Arduino UNO[5-6]從而做出相應的動作,其工作流程如圖1 所示。
ESP8266 模塊是樂鑫公司生產的32 位Tensilica處理器。CPU 時鐘速度最高可達160MHz,支持實時操作系統(RTOS)和Wi-Fi 協議棧,可將高達80%的處理能力留給應用編程和開發。
GM65 掃描模塊功耗低,工作電流小于150mA,一體化設計,體積小;支持TTL232 和USB(中文免驅)接口;支持所有通用一維條碼及常用二維碼,可直接識別手機屏幕。

圖1 硬件流程圖
Arduino UNO 通過串口接收到ESP8266 發送過來的命令信息,進而控制舵機開啟閘門,接著,通過超聲波測距模塊判斷車輛是否完全進入,從而使舵機放下閘門,完成車輛進入停車場的程序,硬件部分的電路如圖2 所示。

圖2 硬件電路圖
服務器端開發語言為Python,程序基于MQTT 通信協議,將數據發送到云端服務器,且云端也能主動發消息到設備端。ESP8266 模塊通過串口接收GM65 掃碼模塊傳過來的二維碼信息,并將該加密信息加上駛入/駛出掃描設備自身的加密信息一同傳輸到服務器。服務器對信息進行解密,對比數據庫已有信息,從而做出判斷,并將結果加密,通過MQTT 協議發送給ESP8266。ESP8266 再將信息解密后通過串口控制從設備Arduino UNO 做出相應的動作。
Web 的開發框架是Flask,后臺的數據庫為MySQL,支持手機瀏覽器、傳統PC 兩種訪問方式。后臺的主要數據表有7 張,主要用于存儲管理員信息、用戶信息、用戶積分、用戶預訂信息以及用戶停車賬單、硬件設備、停車場信息等。服務器控制腳本一直在后臺運行著檢測預約情況。注冊用戶可看到停車場的情況,隨時隨地可根據自已的情況進行預約。Web 部分的結構圖如3 和圖4 所示。

圖3 普通用戶模塊功能結構圖

圖4 管理員模塊功能結構圖
系統使用Docker 技術打包本作品的Web 應用以及依賴包到一個輕量級、可移植的容器中,然后部署上線。服務器用的是阿里的云服務器,系統為Ubuntu Server 18.04,這些應用程序分別運行在不同的Docker容器中,相互隔離,使服務盡可能的安全運行。一共開啟三個容器,分別為:Python-Flask+uwsgi+Nginx 網站運行環境、MySQL 運行環境、MQTT 服務器運行環境。
在使用基于加密二維碼的智能停車場前,用戶必須通過網頁端注冊網頁帳號,填寫相應的資料,并且通過驗證為合法用戶之后才能使用本系統進行線下停車,注冊成功后會自動跳轉到用戶主頁(http://49.234.8.226)。主頁的側邊欄為導航欄,中間部分為各停車場信息頁面,分塊顯示,網站主頁界面如圖5所示。
點擊側邊導航欄的用戶→停車,可生成一個有時效性的經過加密的二維碼,并將相應信息存儲到數據庫,然后用戶將此二維碼于停車場掃碼設備識別,進而上傳到服務器進行對比,從而開啟停車場閘門,實現停車的功能。系統支持手機瀏覽器,用戶獲得的加密二維碼如圖6 所示。

圖5 網站主頁

圖6 用戶獲取二維碼停車界面
這里二維碼的加密算法使用的是愷撒加密方法。設備開機后會主動向服務器發送一條算子特定的加密信息,然后服務器將算子存儲到數據庫中,之后的加密通信都由此算子加密。
服務器端生成的加密二維碼為一段帶get 參數的URL,其中所帶的get 參數即為加密后的信息。門禁系統掃描設備接收到信息后只需在尾部拼接上自己的駛入/駛出加密信息,并發送給服務器即可。服務器再根據對應設備在數據庫找到相應算子來解密信息,并做出處理,其中算子會定時更新。此時,二維碼中加密信息包含如下字段內容。

表1
管理員登錄Web 后臺后顯示的主頁儀表盤信息界面如圖7 所示。后臺可以添加設備、添加停車場、刪除設備、刪除停車場、添加管理員、刪除管理員,其中添加新的停車場前需添加新的設備,一個設備只能屬于一個停車場。若能得到資金的支持,將每座城市分散的停車場接入互聯網,實現線上線下的停車數據同步,一定能夠為人民群眾出行提供更好的服務。

圖7 主頁儀表盤
目前,常見的停車系統大多還需要人工值守,或者刷卡通過門禁。部分高端設備即使能實現車輛自動識別,但沒辦法實現在線預約,用戶出行前根本不了解停車場車位狀況,“按需”出行沒有辦法實施,在線支付或者無感支付更是無從談起。也就是說,基于“互聯網+”思維,使用加密二維碼實現在線車位預約,而且還能在線支付結算的智能停車系統目前尚屬空白。此外,大多數停車場還處于分散經營,各自為政狀況,因而,公共部門無從獲取各停車場的停車數據,并對這些數據進行統計分析,為用戶的出行或停車場的經營提供建議。本系統如獲得資金的關注和支持,能夠將一座城市的所有停車場接入互聯網,實現停車數據的在線共享,用戶將獲得更好的出行體驗。尤其在節假日或出行高峰,公共管理部門可以對停車需求進行預警或通報,人們可以根據互聯網提供的數據“按需”出行,從而解決“一位難求”的城市痛點。