陳霖凱, 秦會斌, 胡煒薇
(杭州電子科技大學 新型電子器件與應用研究所,浙江 杭州 310018)
目前全國各地現(xiàn)有的公共車位主要由城市管理部門或相關企業(yè)管理[1],其中較為先進的模式為用戶根據(jù)車位上的數(shù)字編號在線繳費,車位的計時計費需要人工來監(jiān)管。效率比較低下,且無法實現(xiàn)實時計費,同時時常遇到被違規(guī)占用的問題[2]。
較少的公共車位確需要較多的人力資源來管理,造成了很多中小型停車場的管理成本高,且盈利困難,隨著人力成本的逐年增加,該問題愈發(fā)凸顯[3]。
本文提出了一種停車位解決方案,依托自己搭建的云服務器,實現(xiàn)了遠程預約使用車位鎖。在使用的過程中,車主只需通過移動端的App(自主研發(fā)),就可以快速找到周邊的空閑停車位,精確計時計費,并且在線支付停車費,高效解決臨時停車難問題。
車位鎖管理系統(tǒng)的總體設計框架如圖1所示,主要由自主研發(fā)的App、自主搭建的云服務器、WiFi模塊、路由器、STM32主控、物理鎖六個部分組成。
圖1 系統(tǒng)總體設計
用戶通過手機中的App發(fā)送開鎖命令,數(shù)據(jù)經(jīng)過自主搭建的云服務器傳送給WiFi模塊(事先先讓WiFi模塊與路由器相連接),繼而通過串口傳送到STM32主控當中,MCU控制繼電器來控制直流減速電機對物理鎖進行開關功能[4]。
用戶在App中可以查看到空閑的車位,并選擇預約時段,當預定成功之后,App會給出用戶到達車位的最近路線,從很大程度上解決停車難的問題。
系統(tǒng)的硬件部分分成WiFi模塊,STM32主控模塊、繼電器控制模塊和電源模塊四部分組成。這些都集成在物理鎖的內(nèi)部。其中WiFi模塊負責數(shù)據(jù)的接收和發(fā)送,STM32主控模塊負責數(shù)據(jù)的分析及處理,繼電器模塊負責驅(qū)動直流減速電機來控制車鎖的升降。
本系統(tǒng)所采用的WiFi模塊為ESP8266模塊,它是低功耗并且具有高集成度的WiFi芯片,結構圖如圖2所示。設計過程中有2種方案:MCU控制和SOC片上系統(tǒng)設計。本系統(tǒng)采用的是第一種MCU控制方案,它和單片機以USART方式連接。在使用的過程中,現(xiàn)用AT指令將模塊設置為STA無線接入點模式,并將其加入到局域網(wǎng)之中。再通過AT指令將模塊設置成TCP客戶端模式加入到自主研發(fā)的TCP公網(wǎng)服務器當中,等待接收由App端發(fā)來的指令。待接收到開鎖命令時,便把指令通過USART發(fā)送給STM32主控當中,由MCU分析處理。
圖2 ESP8266結構
在本系統(tǒng)中設計的用到的MCU型號為STM32F103C8T6,屬于STM32F103x中加強型的芯片,選用的是高性能的ARM32位的CortexTM—M3位的RISC內(nèi)核,這種微處理器的優(yōu)點是即使不帶外部晶振時正常使用。同時內(nèi)部還自帶實時時鐘、中斷控制器以及擁有豐富的輸入輸出端口,來滿足系統(tǒng)的需求。相比較其他的產(chǎn)品這個型號的功耗也是最低的。主控制的外圍電路如圖3所示[5]。
當MCU通過USART傳輸?shù)姆绞浇邮盏綌?shù)據(jù)后,判斷是否為對應的開鎖密匙(為了保證數(shù)據(jù)的可靠性,本系統(tǒng)有自己特定的通信協(xié)議)。如果是,則將開鎖指令通過GPIO口傳到繼電器模塊,由繼電器模塊執(zhí)行開鎖功能。
圖3 STM32主控模塊外圍電路
繼電器模塊在本系統(tǒng)中采用歐姆龍生產(chǎn)的G2R—2—5 V系列,最大的性能優(yōu)勢在于點負載可以達到10 A/250 VAC,低電平有效。信號輸入的電壓范圍在0~5 V,滿足單片機GPIO口的輸出。系統(tǒng)通過2個GPIO口來控制電機的正反轉向[6]。其模塊結構圖如圖4所示。
圖4 繼電器模塊
由于本系統(tǒng)電機驅(qū)動的電壓需要6 V,單片機供電需要3.3 V,WiFi模塊供電需要5 V,整體由6 V的干電池供電[7]。所以需要一個降壓模塊來給系統(tǒng)各部分提供有效的電壓。
本系統(tǒng)采用的降壓芯片為LM1117芯片,屬于低壓差電壓調(diào)節(jié)器系列,通過2只外部電阻器可實現(xiàn)1.25~13.8 V輸出電壓范圍,系統(tǒng)將6 V電壓轉換到3.3 V供單片機供電。
單片機部分的代碼主要利用WiFi模塊接收由服務器端發(fā)送過來的信息,并且經(jīng)過MCU分析處理之后,通過GPIO口控制繼電器來完成對物理鎖的控制。其主要的流程圖如圖5所示。
圖5 車鎖驅(qū)動軟件流程
在單片機程序當中,通過自帶的RTC時鐘系統(tǒng)來為管理系統(tǒng)提供計時收費的功能。
3.2.1 公網(wǎng)IP的使用
本系統(tǒng)的服務器由自主研發(fā)完成,首先在網(wǎng)上租借一個公網(wǎng)IP,其IP地址如圖6所示。再通過SOCKET網(wǎng)絡編程技術,在公網(wǎng)上搭建一個云服務器作為車鎖控制系統(tǒng)的服務器。
圖6 云服務器
3.2.2 云服務器的設計
考慮到如果將該系統(tǒng)推出市場,其用戶量會激增,在服務器設計過程中,運用到了多進程&多線程的技術,來增加服務器的并發(fā)處理能力。目前整個系統(tǒng)傳輸?shù)男畔⒅挥袑ξ锢礞i的開關功能,所以只需用字符串如‘upup’,‘down’之類的字符,就可作為密匙完成物理鎖升降的功能,在設計的過程中還要盡量減少進程切換和減少使用不必要的鎖來增加服務器的穩(wěn)定性。
采用TCP協(xié)議來傳輸數(shù)據(jù)時,因為該協(xié)議是面向流的協(xié)議,很容易出現(xiàn)粘包的問題。所以系統(tǒng)采用了給字節(jié)流加上自定義固定長度報頭,報頭中包含字節(jié)流長度,然后一次發(fā)送到對端,對端在接收時,先從緩存中取出定長的報頭,然后再取真實數(shù)據(jù)的方法。發(fā)送時先發(fā)報頭長度,再編碼報頭內(nèi)容發(fā)送,最后發(fā)送真實內(nèi)容來確保消息的準確性。如果有需要還可以再應用層上加入數(shù)據(jù)校驗。
客戶端和服務器端之間的通信一般需要穿越多個中間節(jié)點。為了讓服務器能一直穩(wěn)定的工作,防止中途掉線,在云服務器設計過程中,還加入了心跳包的設計。心跳包由客戶端發(fā)出,像心跳一樣每隔固定時間利用socket.send UrgentData(0xFF)函數(shù)發(fā)送一個很小的包給服務器,告訴服務器其在處在連接狀態(tài),如果服務器接收到其掉線的信息,服務器端會按照相應的客戶端斷開邏輯進行處理。在設計過程中,為了保證通信協(xié)議的一致性,心跳包只是用來檢測socket的連接狀態(tài),并不會作為socket的通信內(nèi)容。
車主在App中預定了車位之后,信息會通過云服務器傳送客戶端即WiFi模塊當中,再由WiFi模塊通過USART串口傳到MCU當中。當車主到達車鎖附近時,即可通過App中的開鎖按鈕打開車鎖,進行停車服務。
手機客戶端作為用戶體驗的一部分在整個系統(tǒng)中必不可少,其App界面圖如圖7所示。
圖7 App界面
App部分的主要功能有控制物理鎖、GPS定位、客服反饋以及充值付費。其系統(tǒng)功能劃分如圖8所示。
圖8 App功能劃分
系統(tǒng)由6 V干電池供電,經(jīng)過6 V轉3.3 V的開關電源,給WiFi模塊供電。再由3.3 V轉5 V的線性電源給單片機供電[8]。在電路中都采用了輸入濾波電泳和輸出濾波電容來減少輸出電壓的紋波。用示波器檢驗經(jīng)轉化過的5 V直流電壓和3.3 V直壓電壓顯示為4.98 V和3.28 V基本滿足實驗要求。
為了測試車位鎖控制系統(tǒng)的整體功能[9],分別選擇3個地點作為遠程控制點,距物理鎖位置為10,200,2 000 m。分別測試50次,其測試的成功次數(shù)分別為50,49,46次。
在實驗距離的增加之后,App成功操作車鎖的次數(shù)有所降低,考慮到由于云服務器端的穩(wěn)定程度以及WiFi模塊的接收信號等一些因素之后,該結果屬于正常范圍之內(nèi)。通過這些實驗統(tǒng)計數(shù)據(jù)可以得出用戶在離車鎖200 m范圍內(nèi)使用App來控制物理鎖,物理鎖均能正常使用。
利用自主搭建的云服務器來管理車位鎖,在一定程度上可以解決用戶出行找不到車位,付費模式復雜的現(xiàn)實情況。目前,由于服務器是自己搭建的,在可支持用戶數(shù)量上還達不到市場的需求,后續(xù)還需調(diào)用數(shù)據(jù)庫,利用LAMP開發(fā)模式搭建一個高效、穩(wěn)定的云服務器,提高服務器的并發(fā)處理能力,來滿足日益增長的客戶量。在物理鎖附近,目前是利用已用的路由器搭建一個局域網(wǎng)來供WiFi模塊接入,在之后的改善過程中,計劃用樹莓派搭建一個網(wǎng)關,更好地為車位系統(tǒng)服務。本系統(tǒng)可以應用于智能家居和智慧城市解決方案,改善交通服務業(yè),造福社會。