陳霖凱, 秦會斌, 胡煒薇
(杭州電子科技大學 新型電子器件與應用研究所,浙江 杭州 310018)
目前全國各地現有的公共車位主要由城市管理部門或相關企業管理[1],其中較為先進的模式為用戶根據車位上的數字編號在線繳費,車位的計時計費需要人工來監管。效率比較低下,且無法實現實時計費,同時時常遇到被違規占用的問題[2]。
較少的公共車位確需要較多的人力資源來管理,造成了很多中小型停車場的管理成本高,且盈利困難,隨著人力成本的逐年增加,該問題愈發凸顯[3]。
本文提出了一種停車位解決方案,依托自己搭建的云服務器,實現了遠程預約使用車位鎖。在使用的過程中,車主只需通過移動端的App(自主研發),就可以快速找到周邊的空閑停車位,精確計時計費,并且在線支付停車費,高效解決臨時停車難問題。
車位鎖管理系統的總體設計框架如圖1所示,主要由自主研發的App、自主搭建的云服務器、WiFi模塊、路由器、STM32主控、物理鎖六個部分組成。

圖1 系統總體設計
用戶通過手機中的App發送開鎖命令,數據經過自主搭建的云服務器傳送給WiFi模塊(事先先讓WiFi模塊與路由器相連接),繼而通過串口傳送到STM32主控當中,MCU控制繼電器來控制直流減速電機對物理鎖進行開關功能[4]。
用戶在App中可以查看到空閑的車位,并選擇預約時段,當預定成功之后,App會給出用戶到達車位的最近路線,從很大程度上解決停車難的問題。
系統的硬件部分分成WiFi模塊,STM32主控模塊、繼電器控制模塊和電源模塊四部分組成。這些都集成在物理鎖的內部。其中WiFi模塊負責數據的接收和發送,STM32主控模塊負責數據的分析及處理,繼電器模塊負責驅動直流減速電機來控制車鎖的升降。
本系統所采用的WiFi模塊為ESP8266模塊,它是低功耗并且具有高集成度的WiFi芯片,結構圖如圖2所示。設計過程中有2種方案:MCU控制和SOC片上系統設計。本系統采用的是第一種MCU控制方案,它和單片機以USART方式連接。在使用的過程中,現用AT指令將模塊設置為STA無線接入點模式,并將其加入到局域網之中。再通過AT指令將模塊設置成TCP客戶端模式加入到自主研發的TCP公網服務器當中,等待接收由App端發來的指令。待接收到開鎖命令時,便把指令通過USART發送給STM32主控當中,由MCU分析處理。

圖2 ESP8266結構
在本系統中設計的用到的MCU型號為STM32F103C8T6,屬于STM32F103x中加強型的芯片,選用的是高性能的ARM32位的CortexTM—M3位的RISC內核,這種微處理器的優點是即使不帶外部晶振時正常使用。同時內部還自帶實時時鐘、中斷控制器以及擁有豐富的輸入輸出端口,來滿足系統的需求。相比較其他的產品這個型號的功耗也是最低的。主控制的外圍電路如圖3所示[5]。
當MCU通過USART傳輸的方式接收到數據后,判斷是否為對應的開鎖密匙(為了保證數據的可靠性,本系統有自己特定的通信協議)。如果是,則將開鎖指令通過GPIO口傳到繼電器模塊,由繼電器模塊執行開鎖功能。

圖3 STM32主控模塊外圍電路
繼電器模塊在本系統中采用歐姆龍生產的G2R—2—5 V系列,最大的性能優勢在于點負載可以達到10 A/250 VAC,低電平有效。信號輸入的電壓范圍在0~5 V,滿足單片機GPIO口的輸出。系統通過2個GPIO口來控制電機的正反轉向[6]。其模塊結構圖如圖4所示。

圖4 繼電器模塊
由于本系統電機驅動的電壓需要6 V,單片機供電需要3.3 V,WiFi模塊供電需要5 V,整體由6 V的干電池供電[7]。所以需要一個降壓模塊來給系統各部分提供有效的電壓。
本系統采用的降壓芯片為LM1117芯片,屬于低壓差電壓調節器系列,通過2只外部電阻器可實現1.25~13.8 V輸出電壓范圍,系統將6 V電壓轉換到3.3 V供單片機供電。
單片機部分的代碼主要利用WiFi模塊接收由服務器端發送過來的信息,并且經過MCU分析處理之后,通過GPIO口控制繼電器來完成對物理鎖的控制。其主要的流程圖如圖5所示。

圖5 車鎖驅動軟件流程
在單片機程序當中,通過自帶的RTC時鐘系統來為管理系統提供計時收費的功能。
3.2.1 公網IP的使用
本系統的服務器由自主研發完成,首先在網上租借一個公網IP,其IP地址如圖6所示。再通過SOCKET網絡編程技術,在公網上搭建一個云服務器作為車鎖控制系統的服務器。

圖6 云服務器
3.2.2 云服務器的設計
考慮到如果將該系統推出市場,其用戶量會激增,在服務器設計過程中,運用到了多進程&多線程的技術,來增加服務器的并發處理能力。目前整個系統傳輸的信息只有對物理鎖的開關功能,所以只需用字符串如‘upup’,‘down’之類的字符,就可作為密匙完成物理鎖升降的功能,在設計的過程中還要盡量減少進程切換和減少使用不必要的鎖來增加服務器的穩定性。
采用TCP協議來傳輸數據時,因為該協議是面向流的協議,很容易出現粘包的問題。所以系統采用了給字節流加上自定義固定長度報頭,報頭中包含字節流長度,然后一次發送到對端,對端在接收時,先從緩存中取出定長的報頭,然后再取真實數據的方法。發送時先發報頭長度,再編碼報頭內容發送,最后發送真實內容來確保消息的準確性。如果有需要還可以再應用層上加入數據校驗。
客戶端和服務器端之間的通信一般需要穿越多個中間節點。為了讓服務器能一直穩定的工作,防止中途掉線,在云服務器設計過程中,還加入了心跳包的設計。心跳包由客戶端發出,像心跳一樣每隔固定時間利用socket.send UrgentData(0xFF)函數發送一個很小的包給服務器,告訴服務器其在處在連接狀態,如果服務器接收到其掉線的信息,服務器端會按照相應的客戶端斷開邏輯進行處理。在設計過程中,為了保證通信協議的一致性,心跳包只是用來檢測socket的連接狀態,并不會作為socket的通信內容。
車主在App中預定了車位之后,信息會通過云服務器傳送客戶端即WiFi模塊當中,再由WiFi模塊通過USART串口傳到MCU當中。當車主到達車鎖附近時,即可通過App中的開鎖按鈕打開車鎖,進行停車服務。
手機客戶端作為用戶體驗的一部分在整個系統中必不可少,其App界面圖如圖7所示。

圖7 App界面
App部分的主要功能有控制物理鎖、GPS定位、客服反饋以及充值付費。其系統功能劃分如圖8所示。

圖8 App功能劃分
系統由6 V干電池供電,經過6 V轉3.3 V的開關電源,給WiFi模塊供電。再由3.3 V轉5 V的線性電源給單片機供電[8]。在電路中都采用了輸入濾波電泳和輸出濾波電容來減少輸出電壓的紋波。用示波器檢驗經轉化過的5 V直流電壓和3.3 V直壓電壓顯示為4.98 V和3.28 V基本滿足實驗要求。
為了測試車位鎖控制系統的整體功能[9],分別選擇3個地點作為遠程控制點,距物理鎖位置為10,200,2 000 m。分別測試50次,其測試的成功次數分別為50,49,46次。
在實驗距離的增加之后,App成功操作車鎖的次數有所降低,考慮到由于云服務器端的穩定程度以及WiFi模塊的接收信號等一些因素之后,該結果屬于正常范圍之內。通過這些實驗統計數據可以得出用戶在離車鎖200 m范圍內使用App來控制物理鎖,物理鎖均能正常使用。
利用自主搭建的云服務器來管理車位鎖,在一定程度上可以解決用戶出行找不到車位,付費模式復雜的現實情況。目前,由于服務器是自己搭建的,在可支持用戶數量上還達不到市場的需求,后續還需調用數據庫,利用LAMP開發模式搭建一個高效、穩定的云服務器,提高服務器的并發處理能力,來滿足日益增長的客戶量。在物理鎖附近,目前是利用已用的路由器搭建一個局域網來供WiFi模塊接入,在之后的改善過程中,計劃用樹莓派搭建一個網關,更好地為車位系統服務。本系統可以應用于智能家居和智慧城市解決方案,改善交通服務業,造福社會。