[劉銘 李聽聽 陳劉偉]
本系統(tǒng)包括了車位鎖、車位共享智慧控制系統(tǒng)、充電裝置、無線中繼器四部分。其中車位鎖被安裝在車位,由鋰電池供電,并通過藍(lán)牙實(shí)時(shí)的向車位共享智慧控制系統(tǒng)發(fā)送鋰電池狀態(tài)信息,包括電量、溫度等,當(dāng)車位鎖狀態(tài)發(fā)生變化時(shí)(打開或者關(guān)上),觸發(fā)向中央管理系統(tǒng)發(fā)送狀態(tài)切換信息。中央電源管理系統(tǒng)接到車位鎖發(fā)來的信息后,內(nèi)部進(jìn)行解析并顯示屏上顯示各類狀態(tài)。當(dāng)車位鎖鋰電池電量不足時(shí),中央管理系統(tǒng)顯示“電量低”,這時(shí)管理人員駕駛充電車或者手持充電裝置對(duì)車位鎖進(jìn)行充電或更換鋰電池。本系統(tǒng)采用藍(lán)牙5.0 低功耗通信技術(shù),在支持功率控制,有助于在保持連接的情況下降低傳輸功耗,并提高傳輸穩(wěn)定性。
作為一種包含了計(jì)算、網(wǎng)絡(luò)、物理實(shí)體的復(fù)雜系統(tǒng),賽博物理系統(tǒng)有機(jī)融合了3C 技術(shù),通過人機(jī)交互接口實(shí)現(xiàn)物理進(jìn)程的交互,實(shí)現(xiàn)了賽博空間遠(yuǎn)程、可靠、實(shí)時(shí)、安全、協(xié)作和智能化的操控物理實(shí)體的目標(biāo)。
本文將車位鎖這一具有物理實(shí)體屬性的機(jī)械產(chǎn)品與控制系統(tǒng)、藍(lán)牙通信技術(shù)、單片機(jī)等技術(shù)相結(jié)合,將停車位、車位鎖、計(jì)算模塊、藍(lán)牙模塊、鋰電池、車輛等物理實(shí)體抽象為虛擬資源并實(shí)現(xiàn)有機(jī)協(xié)作,構(gòu)建賽博虛物理系統(tǒng)[1]~[3],如圖1 所示。
圖1 車位共享賽博物理系統(tǒng)
整個(gè)車位共享智慧控制系統(tǒng)的物理空間主要由以下幾個(gè)部分所組成:
(1)停車位:車輛停泊的物理空間,狀態(tài)分為占用和空置兩類。
(2)車位鎖:考慮停車場(chǎng)車位數(shù)量多,電纜布設(shè)難度大等額問題[4],采用電池供電。車輛進(jìn)入自動(dòng)識(shí)別車輛信息并完成落鎖,支持藍(lán)牙模塊通過串口與計(jì)算實(shí)體連接,通過AT 指令設(shè)置之后藍(lán)牙模塊間支持?jǐn)?shù)據(jù)透?jìng)鬓D(zhuǎn)發(fā)。
(3)繳費(fèi)控制器:車輛識(shí)別與產(chǎn)生費(fèi)用支付。
(4)停車場(chǎng)門禁:進(jìn)出停車場(chǎng)的門禁系統(tǒng),進(jìn)場(chǎng)識(shí)別自動(dòng)開啟,出場(chǎng)繳費(fèi)完成后自動(dòng)。
本次采樣的藍(lán)牙模塊為5.0 版本的硬件模塊,是一種低功耗的藍(lán)牙模塊,如圖2 所示。由于車位鎖本身需要長(zhǎng)期放在車位上,是需要長(zhǎng)時(shí)間續(xù)航的。藍(lán)牙模塊采用的標(biāo)準(zhǔn)是藍(lán)牙5.0,相較之前版本更安全,成本更低,延遲更低,且傳輸距離更長(zhǎng),而且能最大程度的防止干擾。藍(lán)牙5.0支持星型拓?fù)涞囊粚?duì)多連接,同時(shí)可以根據(jù)實(shí)際需求調(diào)整發(fā)射功率,可大幅降低傳輸功耗。
圖2 藍(lán)牙模塊實(shí)物
藍(lán)牙模塊的引腳定義如表1 所示。藍(lán)牙模塊工作電壓為3.3~5 V,為了使其功耗更低,使用3.3 V 作為工作電壓。將其連接在開發(fā)板上的5 V 轉(zhuǎn)3.3 V 電源PIN 腳上。
表1 藍(lán)牙模塊引腳定義
賽博物理系統(tǒng)的信息處理主體是集運(yùn)算、儲(chǔ)存、控制于一體的單片機(jī),總的來說就是一臺(tái)微型電腦[5]。單片機(jī)作為嵌入式開發(fā)的工具,其發(fā)展非常迅速,功能也在不斷增強(qiáng),且單片機(jī)應(yīng)用范圍也越來越廣泛。
本系統(tǒng)采用意法半導(dǎo)體(ST)公司所推出的STM32 F103ZET6 大容量芯片,芯片內(nèi)核為Cortex-M3,集成了定時(shí)器、UART、ADC、USB、I2C 等多種功能,如表2所示。STM32F103ZET 包含有3 個(gè)ADC,每個(gè)ADC 的轉(zhuǎn)換速率為1 MHz,也就是1μs。STM32 將ADC 分成了兩個(gè)通道,分別為規(guī)則通道組和注入通道組。
表2 軟件各層級(jí)模塊定義
STM32 中ADC 的規(guī)則通道組可以包含最多16 個(gè)轉(zhuǎn)換,而注入通道組只包含4 個(gè),所以STM32 中的ADC 可以進(jìn)行很多不同的轉(zhuǎn)換模式,但車位鎖中的電池電量檢測(cè)只需要執(zhí)行規(guī)則通道的單次轉(zhuǎn)換。
2.4.1 軟件程序架構(gòu)設(shè)計(jì)
系統(tǒng)軟件架構(gòu)分為3 個(gè)層次,分別為底層(驅(qū)動(dòng)層),中間層和應(yīng)用層。其中,驅(qū)動(dòng)層與硬件緊密相連,設(shè)置相關(guān)的GPIO 口以及對(duì)應(yīng)的定時(shí)器,UART 的串口設(shè)置和對(duì)應(yīng)的中斷設(shè)置,CLOCK 模塊的設(shè)置等,并且包括了各個(gè)模塊的初始化。中間層主要是對(duì)串口接收到的數(shù)據(jù)進(jìn)行解釋。應(yīng)用層主要是根據(jù)串口接收到的信息來驅(qū)動(dòng)顯示器顯示對(duì)應(yīng)的信息,而用戶根據(jù)顯示器可以了解到車位目前的狀況。
2.4.2 UART 通信
UART 使用的是異步、串行通信。其中,串行通訊指的是使用一條數(shù)據(jù)線將,每個(gè)字符一位一位的按順序進(jìn)行傳輸。特點(diǎn)是較并行傳輸簡(jiǎn)單,一條線纜就可以實(shí)現(xiàn)通訊,成本低,適用于遠(yuǎn)距離通信,對(duì)于傳輸速度無要求的場(chǎng)合。而異步通信指的是通信中的兩個(gè)字符的時(shí)間間隔是不固定的,而在一個(gè)字符內(nèi)的各位的時(shí)間間隔是固定的,一個(gè)字符通常為8 位。
2.4.3 UART 通信協(xié)議
UART 是異步串行通信協(xié)議的一種,這代表著傳輸數(shù)據(jù)會(huì)將每一個(gè)字符一位接著一位的傳輸,如圖3 所示。以下是各位的功能。
圖3 UART 的數(shù)據(jù)傳輸格式
起始位:首先發(fā)出一個(gè)邏輯“0”,代表了開始傳輸數(shù)據(jù)。
數(shù)據(jù)位:起始位之后,便是代表字符的位,可以是5~8為的邏輯“0或“1”,構(gòu)成一個(gè)字符。本文使用ASCII碼,也就是7 位。從最低位開始傳輸。
校驗(yàn)位:在數(shù)據(jù)位后加上這一位,可以使數(shù)據(jù)流中“1”的位數(shù)為偶數(shù)(即偶校驗(yàn))或者奇數(shù)(即奇校驗(yàn))。
停止位:這一位代表了一個(gè)字符數(shù)據(jù)傳輸結(jié)束。可以是1 位、1.5 位、2 位的高電平。
空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路中沒有數(shù)據(jù)傳輸。
2.4.4 STM32上的串口設(shè)置
串口是MCU 的重要外部接口,也是調(diào)速軟件的必要手段,如今的所以MCU基本都會(huì)帶有串口,STM32 也不例外。
STM32 的串口非常豐富,其功能也相當(dāng)?shù)膹?qiáng)悍。但是在使用STM32 的串口之前,必須在軟件端進(jìn)行設(shè)置,一般來說,串口的設(shè)置分為以下幾步。
(1)串口時(shí)鐘使能,GPIO 時(shí)鐘使能
(2)串口復(fù)位
(3)GPIO 端口模式設(shè)置
(4)串口參數(shù)初始化
(5)開啟中斷并初始NVIC(如果需要開啟中斷才需要這個(gè)步驟)
(6)使能串口
(7)編寫中斷處理函數(shù)
2.4.5 電池狀態(tài)及動(dòng)態(tài)管理
電池的放電和充電是有規(guī)律的,鋰電池的充電可以分為4 個(gè)階段[6],分別為:涓流充電、恒流充電、恒壓充電以及充電中止,充電電壓變化如圖4 所示。
圖4 鋰電池充電曲線
鋰電池充電時(shí),先是保持電流恒定,這個(gè)時(shí)候的電流達(dá)到最大,電池電壓隨著恒流充電逐步升高[7]。當(dāng)電池電壓接近4.2 V 時(shí),電流大小開始降低,直到電壓達(dá)到4.2 V 時(shí),電壓保持不變,這時(shí)被稱為恒壓充電,這個(gè)時(shí)候的電流會(huì)持續(xù)減少。當(dāng)充電電流減少到0.02 C至0.07 C 時(shí),停止充電。
上面的充電曲線并不包括鋰電池過放和鋰電池過充的過程,如果鋰電池過放(電池電壓已經(jīng)低于3 V),需要進(jìn)行恢復(fù)性充電,直到電池電壓達(dá)到3 V 以上,才會(huì)進(jìn)行正常充電流程中的恒流充電。而為了防止過充,一般采用兩種方法,一種如上所示,在充電電流低于0.02 C 至0.07 C 之間時(shí),停止充電。另一種在恒壓充電開始時(shí)計(jì)時(shí),持續(xù)充電2 小時(shí)后終止充電過程。鋰電池保護(hù)芯片一般采用前種方法。
電池在剛開始使用時(shí),電壓會(huì)快速下降,放電的倍率月大,電壓便會(huì)下降的越快[8]。之后,電池電壓會(huì)進(jìn)入一個(gè)較為平緩但仍在下降的階段,這時(shí)被稱為電池的平臺(tái)區(qū),同樣的,放電倍率越大,平臺(tái)區(qū)持續(xù)時(shí)間越長(zhǎng),平臺(tái)電壓越低,電壓下降的越緩慢。當(dāng)電池的電量接近放完時(shí),電池的負(fù)載電壓開始急劇下降直至達(dá)到截止電壓。
另外,鋰電池的過放對(duì)于電池的損害很大,并且容易造成設(shè)備無法重新啟動(dòng),所以應(yīng)該保證電池電壓不低于3V。
但是STM32 單片機(jī)的PIN 口僅支持3.3 V 以下的電壓輸入,所以不能將5 V 電壓直接輸入,否則會(huì)燒壞單片機(jī)的主芯片。需要接入電阻降壓或者利用單片機(jī)自帶的降壓DC/DC 轉(zhuǎn)換器,將5 V 降到3.3 V。
之后將電壓連接到PIN 口,進(jìn)行ADC 采樣,通過得到的數(shù)值進(jìn)行計(jì)算即可得到鋰電池的電壓,然后根據(jù)放電曲線就可以得到目前電池的剩余容量。
在流程啟動(dòng)前需做好系統(tǒng)整備工作,包括了硬件準(zhǔn)備,需要的物品如下。
(1)PC 機(jī)一臺(tái)安裝有MDK5、XCOM 以及下載器J-link 的驅(qū)動(dòng)
(2)5V 鋰電池一個(gè),STM32 開發(fā)板與一個(gè)相同芯片的STM32 核心板,J-link 下載器一個(gè)。
(3)代碼通過編譯以后通過J-link 將HEX 文件下載至集成電路中的MCU 中。
(4)單片機(jī)2 通過ad 采樣獲得外部電源的電壓,將百分比對(duì)應(yīng)的字符和鎖的狀態(tài)對(duì)應(yīng)的字符發(fā)送到單片機(jī)1,單片機(jī)1 的LCD 可以顯示電源百分比和車位鎖狀態(tài)。
將所有模塊連接完成之后,則進(jìn)入工作模式,啟動(dòng)共享車位智慧控制流程。
(1)各車位的狀態(tài)信息和車位鎖信息經(jīng)車位鎖的低功耗藍(lán)牙模塊實(shí)時(shí)上傳至車位共享智慧控制系統(tǒng)的賽博信息存儲(chǔ)空間;
(2)有車輛進(jìn)入停車區(qū)域后,系統(tǒng)識(shí)別該車輛類型和所需停車位大小等信息,根據(jù)車位、車位鎖的實(shí)時(shí)狀態(tài)信息,規(guī)劃停車位,并通過路徑規(guī)劃最短路徑發(fā)送至車輛導(dǎo)航[9],引導(dǎo)車輛尋找停車位;
(3)車輛離開停車位,判斷車輛是否使離,若離開,則將車位狀態(tài)變化信息上報(bào)至系統(tǒng),系統(tǒng)在門禁處進(jìn)行費(fèi)用結(jié)算。
本文基于賽博物理系統(tǒng)構(gòu)建了車位共享智慧控制系統(tǒng),使用低功耗藍(lán)牙、分布式計(jì)算等技術(shù),實(shí)現(xiàn)車位共享的動(dòng)態(tài)控制。對(duì)車位鎖的共享模式和控制流程進(jìn)行改進(jìn),使用云-邊協(xié)同的控制系統(tǒng),契合了賽博物理系統(tǒng)的理論,可以大幅改善用戶停車體驗(yàn)及簡(jiǎn)化車位管理復(fù)雜度。同時(shí),本文也是基于賽博物理系統(tǒng)對(duì)物理空間和虛擬空間創(chuàng)新性結(jié)合的一次探索,可為后續(xù)更多關(guān)于傳統(tǒng)產(chǎn)品和系統(tǒng)的智能化研究提供實(shí)踐支撐。