[劉銘 李聽聽 陳劉偉]
本系統包括了車位鎖、車位共享智慧控制系統、充電裝置、無線中繼器四部分。其中車位鎖被安裝在車位,由鋰電池供電,并通過藍牙實時的向車位共享智慧控制系統發送鋰電池狀態信息,包括電量、溫度等,當車位鎖狀態發生變化時(打開或者關上),觸發向中央管理系統發送狀態切換信息。中央電源管理系統接到車位鎖發來的信息后,內部進行解析并顯示屏上顯示各類狀態。當車位鎖鋰電池電量不足時,中央管理系統顯示“電量低”,這時管理人員駕駛充電車或者手持充電裝置對車位鎖進行充電或更換鋰電池。本系統采用藍牙5.0 低功耗通信技術,在支持功率控制,有助于在保持連接的情況下降低傳輸功耗,并提高傳輸穩定性。
作為一種包含了計算、網絡、物理實體的復雜系統,賽博物理系統有機融合了3C 技術,通過人機交互接口實現物理進程的交互,實現了賽博空間遠程、可靠、實時、安全、協作和智能化的操控物理實體的目標。
本文將車位鎖這一具有物理實體屬性的機械產品與控制系統、藍牙通信技術、單片機等技術相結合,將停車位、車位鎖、計算模塊、藍牙模塊、鋰電池、車輛等物理實體抽象為虛擬資源并實現有機協作,構建賽博虛物理系統[1]~[3],如圖1 所示。

圖1 車位共享賽博物理系統
整個車位共享智慧控制系統的物理空間主要由以下幾個部分所組成:
(1)停車位:車輛停泊的物理空間,狀態分為占用和空置兩類。
(2)車位鎖:考慮停車場車位數量多,電纜布設難度大等額問題[4],采用電池供電。車輛進入自動識別車輛信息并完成落鎖,支持藍牙模塊通過串口與計算實體連接,通過AT 指令設置之后藍牙模塊間支持數據透傳轉發。
(3)繳費控制器:車輛識別與產生費用支付。
(4)停車場門禁:進出停車場的門禁系統,進場識別自動開啟,出場繳費完成后自動。
本次采樣的藍牙模塊為5.0 版本的硬件模塊,是一種低功耗的藍牙模塊,如圖2 所示。由于車位鎖本身需要長期放在車位上,是需要長時間續航的。藍牙模塊采用的標準是藍牙5.0,相較之前版本更安全,成本更低,延遲更低,且傳輸距離更長,而且能最大程度的防止干擾。藍牙5.0支持星型拓撲的一對多連接,同時可以根據實際需求調整發射功率,可大幅降低傳輸功耗。

圖2 藍牙模塊實物
藍牙模塊的引腳定義如表1 所示。藍牙模塊工作電壓為3.3~5 V,為了使其功耗更低,使用3.3 V 作為工作電壓。將其連接在開發板上的5 V 轉3.3 V 電源PIN 腳上。

表1 藍牙模塊引腳定義
賽博物理系統的信息處理主體是集運算、儲存、控制于一體的單片機,總的來說就是一臺微型電腦[5]。單片機作為嵌入式開發的工具,其發展非常迅速,功能也在不斷增強,且單片機應用范圍也越來越廣泛。
本系統采用意法半導體(ST)公司所推出的STM32 F103ZET6 大容量芯片,芯片內核為Cortex-M3,集成了定時器、UART、ADC、USB、I2C 等多種功能,如表2所示。STM32F103ZET 包含有3 個ADC,每個ADC 的轉換速率為1 MHz,也就是1μs。STM32 將ADC 分成了兩個通道,分別為規則通道組和注入通道組。

表2 軟件各層級模塊定義
STM32 中ADC 的規則通道組可以包含最多16 個轉換,而注入通道組只包含4 個,所以STM32 中的ADC 可以進行很多不同的轉換模式,但車位鎖中的電池電量檢測只需要執行規則通道的單次轉換。
2.4.1 軟件程序架構設計
系統軟件架構分為3 個層次,分別為底層(驅動層),中間層和應用層。其中,驅動層與硬件緊密相連,設置相關的GPIO 口以及對應的定時器,UART 的串口設置和對應的中斷設置,CLOCK 模塊的設置等,并且包括了各個模塊的初始化。中間層主要是對串口接收到的數據進行解釋。應用層主要是根據串口接收到的信息來驅動顯示器顯示對應的信息,而用戶根據顯示器可以了解到車位目前的狀況。
2.4.2 UART 通信
UART 使用的是異步、串行通信。其中,串行通訊指的是使用一條數據線將,每個字符一位一位的按順序進行傳輸。特點是較并行傳輸簡單,一條線纜就可以實現通訊,成本低,適用于遠距離通信,對于傳輸速度無要求的場合。而異步通信指的是通信中的兩個字符的時間間隔是不固定的,而在一個字符內的各位的時間間隔是固定的,一個字符通常為8 位。
2.4.3 UART 通信協議
UART 是異步串行通信協議的一種,這代表著傳輸數據會將每一個字符一位接著一位的傳輸,如圖3 所示。以下是各位的功能。

圖3 UART 的數據傳輸格式
起始位:首先發出一個邏輯“0”,代表了開始傳輸數據。
數據位:起始位之后,便是代表字符的位,可以是5~8為的邏輯“0或“1”,構成一個字符。本文使用ASCII碼,也就是7 位。從最低位開始傳輸。
校驗位:在數據位后加上這一位,可以使數據流中“1”的位數為偶數(即偶校驗)或者奇數(即奇校驗)。
停止位:這一位代表了一個字符數據傳輸結束。可以是1 位、1.5 位、2 位的高電平。
空閑位:處于邏輯“1”狀態,表示當前線路中沒有數據傳輸。
2.4.4 STM32上的串口設置
串口是MCU 的重要外部接口,也是調速軟件的必要手段,如今的所以MCU基本都會帶有串口,STM32 也不例外。
STM32 的串口非常豐富,其功能也相當的強悍。但是在使用STM32 的串口之前,必須在軟件端進行設置,一般來說,串口的設置分為以下幾步。
(1)串口時鐘使能,GPIO 時鐘使能
(2)串口復位
(3)GPIO 端口模式設置
(4)串口參數初始化
(5)開啟中斷并初始NVIC(如果需要開啟中斷才需要這個步驟)
(6)使能串口
(7)編寫中斷處理函數
2.4.5 電池狀態及動態管理
電池的放電和充電是有規律的,鋰電池的充電可以分為4 個階段[6],分別為:涓流充電、恒流充電、恒壓充電以及充電中止,充電電壓變化如圖4 所示。

圖4 鋰電池充電曲線
鋰電池充電時,先是保持電流恒定,這個時候的電流達到最大,電池電壓隨著恒流充電逐步升高[7]。當電池電壓接近4.2 V 時,電流大小開始降低,直到電壓達到4.2 V 時,電壓保持不變,這時被稱為恒壓充電,這個時候的電流會持續減少。當充電電流減少到0.02 C至0.07 C 時,停止充電。
上面的充電曲線并不包括鋰電池過放和鋰電池過充的過程,如果鋰電池過放(電池電壓已經低于3 V),需要進行恢復性充電,直到電池電壓達到3 V 以上,才會進行正常充電流程中的恒流充電。而為了防止過充,一般采用兩種方法,一種如上所示,在充電電流低于0.02 C 至0.07 C 之間時,停止充電。另一種在恒壓充電開始時計時,持續充電2 小時后終止充電過程。鋰電池保護芯片一般采用前種方法。
電池在剛開始使用時,電壓會快速下降,放電的倍率月大,電壓便會下降的越快[8]。之后,電池電壓會進入一個較為平緩但仍在下降的階段,這時被稱為電池的平臺區,同樣的,放電倍率越大,平臺區持續時間越長,平臺電壓越低,電壓下降的越緩慢。當電池的電量接近放完時,電池的負載電壓開始急劇下降直至達到截止電壓。
另外,鋰電池的過放對于電池的損害很大,并且容易造成設備無法重新啟動,所以應該保證電池電壓不低于3V。
但是STM32 單片機的PIN 口僅支持3.3 V 以下的電壓輸入,所以不能將5 V 電壓直接輸入,否則會燒壞單片機的主芯片。需要接入電阻降壓或者利用單片機自帶的降壓DC/DC 轉換器,將5 V 降到3.3 V。
之后將電壓連接到PIN 口,進行ADC 采樣,通過得到的數值進行計算即可得到鋰電池的電壓,然后根據放電曲線就可以得到目前電池的剩余容量。
在流程啟動前需做好系統整備工作,包括了硬件準備,需要的物品如下。
(1)PC 機一臺安裝有MDK5、XCOM 以及下載器J-link 的驅動
(2)5V 鋰電池一個,STM32 開發板與一個相同芯片的STM32 核心板,J-link 下載器一個。
(3)代碼通過編譯以后通過J-link 將HEX 文件下載至集成電路中的MCU 中。
(4)單片機2 通過ad 采樣獲得外部電源的電壓,將百分比對應的字符和鎖的狀態對應的字符發送到單片機1,單片機1 的LCD 可以顯示電源百分比和車位鎖狀態。
將所有模塊連接完成之后,則進入工作模式,啟動共享車位智慧控制流程。
(1)各車位的狀態信息和車位鎖信息經車位鎖的低功耗藍牙模塊實時上傳至車位共享智慧控制系統的賽博信息存儲空間;
(2)有車輛進入停車區域后,系統識別該車輛類型和所需停車位大小等信息,根據車位、車位鎖的實時狀態信息,規劃停車位,并通過路徑規劃最短路徑發送至車輛導航[9],引導車輛尋找停車位;
(3)車輛離開停車位,判斷車輛是否使離,若離開,則將車位狀態變化信息上報至系統,系統在門禁處進行費用結算。
本文基于賽博物理系統構建了車位共享智慧控制系統,使用低功耗藍牙、分布式計算等技術,實現車位共享的動態控制。對車位鎖的共享模式和控制流程進行改進,使用云-邊協同的控制系統,契合了賽博物理系統的理論,可以大幅改善用戶停車體驗及簡化車位管理復雜度。同時,本文也是基于賽博物理系統對物理空間和虛擬空間創新性結合的一次探索,可為后續更多關于傳統產品和系統的智能化研究提供實踐支撐。