董曉璐,金 鵬
(北方工業(yè)大學(xué) 電氣與控制工程學(xué)院,北京 100144)
目前移動(dòng)終端與車(chē)的數(shù)據(jù)直接進(jìn)行通信的產(chǎn)品或者應(yīng)用還處于開(kāi)發(fā)階段,汽車(chē)監(jiān)控產(chǎn)品只能顯示部分位置、定位等的基本數(shù)據(jù),將設(shè)備放置在車(chē)上專(zhuān)用于定位監(jiān)控。而本設(shè)計(jì)是基于移動(dòng)終端上的研究,可方便車(chē)主全面地了解汽車(chē)狀態(tài),實(shí)時(shí)地更新數(shù)據(jù),甚至能用移動(dòng)設(shè)備控制車(chē)輛。另一方面,方便管理和監(jiān)控,保護(hù)了車(chē)主的隱私,當(dāng)打開(kāi)移動(dòng)終端的客戶軟件和控制器時(shí),實(shí)時(shí)通信;當(dāng)關(guān)閉軟件和控制器,并不傳播無(wú)線信號(hào),保證車(chē)輛信息的安全。這樣,汽車(chē)通過(guò)與移動(dòng)終端的互動(dòng),就能分享汽車(chē)本身的基本信息,如位置、油量、里程等,而無(wú)需增加成本安裝GPRS 或者中控臺(tái),做到資源的最大化利用和管理[1]。
系統(tǒng)選取藍(lán)牙模塊實(shí)現(xiàn)數(shù)據(jù)的無(wú)線傳輸,利用藍(lán)牙芯片的硬件電路設(shè)計(jì)和軟件編寫(xiě)協(xié)議轉(zhuǎn)換,實(shí)現(xiàn)實(shí)時(shí)通信;移動(dòng)終端的上層應(yīng)用在安卓平臺(tái)下實(shí)現(xiàn),Java編寫(xiě)相關(guān)程序,生成的apk 安裝在移動(dòng)終端上,藍(lán)牙上傳的數(shù)據(jù)可保存,通過(guò)移動(dòng)終端的蜂窩數(shù)據(jù)網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)傳輸?shù)娇刂浦行摹?S 店、分享中心等。
圖1 系統(tǒng)總體流程圖
本文選取飛思卡爾X 系列單片機(jī)MC9S12XF512,集成CAN 控制器,SCI/SPI 接口,雙通道FlexRay,方便日后連接汽車(chē)線控轉(zhuǎn)向系統(tǒng)。CTM8251 是一款帶隔離的通用CAN 收發(fā)器芯片[2],CAN 模塊設(shè)計(jì)框圖如圖2 所示。
圖2 CAN 模塊設(shè)計(jì)框圖
藍(lán)牙模塊,采用CSR 主流藍(lán)牙芯片,藍(lán)牙V2.0 協(xié)議標(biāo)準(zhǔn),工作電壓3.3 V,可通過(guò)SCI/SPI/USB 等接口連接外圍電路,有效傳輸范圍10 m。根據(jù)藍(lán)牙模塊的實(shí)際大小畫(huà)出原理圖和封裝,其中原理圖如圖3 所示。
圖3 藍(lán)牙模塊原理圖
電源電路設(shè)計(jì)采取兩種供電方式,由汽車(chē)上的供電電源(24 V/12 V)或USB 供電,當(dāng)距離較遠(yuǎn)不能連接汽車(chē)電源時(shí),使用備選USB 接口充電,充電電源由移動(dòng)電源或者電腦USB 口提供。設(shè)計(jì)電源電路時(shí),根據(jù)模塊工作電壓需要提供5 V 給單片機(jī)供電,3.3 V 給藍(lán)牙模塊供電,保障模塊的正常供電和反接保護(hù)。
底層軟件設(shè)計(jì)采用前后臺(tái)式控制,整體采用模塊化的軟件設(shè)計(jì)方法,將系統(tǒng)功能分解為多個(gè)子模塊。系統(tǒng)首先進(jìn)入初始化,完成之后,即進(jìn)入主循環(huán)。在主程序被引導(dǎo)后,第一步執(zhí)行軟硬件初始化任務(wù),申請(qǐng)需要的軟件資源,配置硬件參數(shù),如時(shí)鐘、定時(shí)器、IO 口、串口、CAN 等,并使能相關(guān)外設(shè)。第二步進(jìn)入主循環(huán),包括電源管理、CAN 數(shù)據(jù)采集及故障診斷、SCI 通信、發(fā)送任務(wù)管理等子模塊。其中采用中斷接收SCI 接口的數(shù)據(jù)和CAN 總線的數(shù)據(jù),設(shè)定中斷優(yōu)先級(jí),數(shù)據(jù)傳輸時(shí)的優(yōu)先級(jí)最高,保證數(shù)據(jù)的完整性,提高數(shù)據(jù)傳輸?shù)恼_性。數(shù)據(jù)通信的處理過(guò)程:在數(shù)據(jù)傳送過(guò)程中,使用自定義的數(shù)據(jù)幀[3]。所以單片機(jī)接收到CAN 幀時(shí),要處理數(shù)據(jù),讀取CAN 幀中的有用數(shù)據(jù),通過(guò)單片機(jī)的TXD 發(fā)送出去;同理,單片機(jī)接的RXD 接收到數(shù)據(jù),也要處理數(shù)據(jù),還原成CAN 幀。這樣,數(shù)據(jù)通過(guò)加前后校驗(yàn)和標(biāo)識(shí),上層通過(guò)判斷這些標(biāo)識(shí)來(lái)確定汽車(chē)的基本信息,也可保障安全性。底層軟件的設(shè)計(jì)流程圖如圖4 所示。
圖4 軟件流程圖
在底層軟件設(shè)計(jì)過(guò)程中,最重要的是CAN 總線通信的設(shè)置。當(dāng)CAN 總線上的一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),其以報(bào)文形式廣播給網(wǎng)絡(luò)中所有節(jié)點(diǎn)。對(duì)每個(gè)節(jié)點(diǎn)而言,無(wú)論數(shù)據(jù)是否是發(fā)給自己的,均對(duì)其進(jìn)行接收[4]。在同一系統(tǒng)中標(biāo)識(shí)符是唯一的,當(dāng)幾個(gè)站同時(shí)競(jìng)爭(zhēng)總線讀取時(shí),要設(shè)置總線的標(biāo)識(shí)符,可通過(guò)配置CANIDARX 和CANIDMRX 實(shí)現(xiàn)ID 濾波,這種配置,節(jié)約了時(shí)間和空間,將不需要的ID 濾除,只保留有效ID,大幅提高了運(yùn)行速度[5]。當(dāng)要發(fā)送數(shù)據(jù)時(shí),汽車(chē)上的控制器將要發(fā)送的數(shù)據(jù)和自身的標(biāo)識(shí)符傳送給CAN 控制器,并處于準(zhǔn)備狀態(tài);當(dāng)其收到總線分配時(shí),轉(zhuǎn)為發(fā)送報(bào)文狀態(tài)。CAN 芯片將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報(bào)文格式發(fā)出,這時(shí)處理器處于接收狀態(tài),判斷這些報(bào)文是否是發(fā)給自己的,以確定是否接收。由于CAN 總線是一種面向內(nèi)容的編址方案,因此很容易建立控制系統(tǒng)并靈活地進(jìn)行配置,在CAN 總線中加進(jìn)一些新的接收站而無(wú)需在硬件或軟件上進(jìn)行修改[5]。
系統(tǒng)在調(diào)試時(shí)使用周立功的CANTest 工具[6]模擬汽車(chē)的CAN 總線發(fā)送和接收數(shù)據(jù);藍(lán)牙適配器與藍(lán)牙模塊配對(duì)連接,藍(lán)牙模塊的數(shù)據(jù)通過(guò)藍(lán)牙適配器上傳到虛擬串口。這樣,CANTest 與串口助手的數(shù)據(jù)能直觀地反映通信過(guò)程[7]。調(diào)試結(jié)果如圖5 所示,虛擬串口的數(shù)據(jù)與CAN 總線的數(shù)據(jù)一致,系統(tǒng)能夠?qū)崿F(xiàn)實(shí)時(shí)通信。當(dāng)控制器與藍(lán)牙適配器的距離在8 m 以內(nèi)時(shí),傳輸速率9 600 bit·s-1,通信正常;距離>8 m 時(shí),由于環(huán)境的干擾和藍(lán)牙本身的距離約束,數(shù)據(jù)傳輸會(huì)發(fā)生錯(cuò)誤,無(wú)法保證通信。
圖5 通信調(diào)試結(jié)果圖
系統(tǒng)上層應(yīng)用選擇在開(kāi)發(fā)的安卓操作系統(tǒng)下進(jìn)行,安卓系統(tǒng)廣泛用于移動(dòng)終端設(shè)備,適用性強(qiáng)。采用流行的開(kāi)發(fā)工具Eclipse,安裝ADT(Android Development Tools),Java 編寫(xiě)程序[8]。
上層軟件首先通過(guò)請(qǐng)求獲得藍(lán)牙的響應(yīng)權(quán)限,來(lái)操作移動(dòng)終端上的藍(lán)牙模塊,配置本地的藍(lán)牙,打開(kāi)、關(guān)閉、名稱(chēng)、密碼等。然后移動(dòng)終端通過(guò)自帶的藍(lán)牙模塊去搜索訪問(wèn)主控制板上的藍(lán)牙芯片,建立連接通信,讀寫(xiě)數(shù)據(jù),進(jìn)行數(shù)據(jù)操作[9]。上層應(yīng)用程序使用這些數(shù)據(jù)做成相關(guān)的應(yīng)用,圖形化曲線、報(bào)警、優(yōu)化、控制操作等。最終生成Android 安裝包,移動(dòng)終端可以安裝更新,用戶可根據(jù)需要下載相關(guān)的應(yīng)用[10]。
本文從應(yīng)用的角度介紹了滿足用戶體驗(yàn)的無(wú)線監(jiān)控系統(tǒng),并給出了系統(tǒng)的硬件和底層軟件設(shè)計(jì)以及上層軟件的實(shí)現(xiàn)方法。開(kāi)發(fā)過(guò)程證明,在本設(shè)計(jì)中硬件方面選用實(shí)用性強(qiáng)的藍(lán)牙協(xié)議芯片HC-05 和高性能的微處理器MC9S12XF512MLM,滿足系統(tǒng)的要求并且將開(kāi)發(fā)過(guò)程進(jìn)行了簡(jiǎn)化,使產(chǎn)品具有更高的性價(jià)比和后續(xù)開(kāi)發(fā)的實(shí)用性。該部分的高效率應(yīng)用為系統(tǒng)的開(kāi)發(fā)奠定了基礎(chǔ)。雖該系統(tǒng)可較好地實(shí)現(xiàn)該功能,但仍需完善,比如本系統(tǒng)的上層軟件設(shè)計(jì)比較簡(jiǎn)單,希望今后在此基礎(chǔ)上開(kāi)發(fā)更多的應(yīng)用,讓用戶體驗(yàn)更多的功能。
[1] 劉峰.瀏覽器服務(wù)器結(jié)構(gòu)的車(chē)輛監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2007.
[2] 李偉.基于雙MsP430F149 單片機(jī)的車(chē)載監(jiān)控終端的設(shè)計(jì)[D].武漢:華中科技大學(xué),2006.
[3] 王嬋娟.基于CAN 總線的汽車(chē)車(chē)載遠(yuǎn)程終端監(jiān)控系統(tǒng)[J].機(jī)械制造與自動(dòng)化,2009(3):127-128.
[4] 張弘.基于CAN 總線的信號(hào)采集與處理模塊研究[D].南京:南京航空航天大學(xué),2007.
[5] 曹珊,于秀敏,高瑩,等.CAN 總線在混合動(dòng)力電動(dòng)公共汽車(chē)中的應(yīng)用[J].汽車(chē)技術(shù),2005(6):13-17.
[6] 呂京建,張宏韜.CAN 總線的淺析CANopen 協(xié)議[J].電子產(chǎn)品世界,2002(9A):24,26-27.
[7] 鄭海燕.基于GPS 的車(chē)輛監(jiān)控調(diào)度系統(tǒng)設(shè)計(jì)研究[J].數(shù)字技術(shù)與應(yīng)用,2013(3):148.
[8] Venkat Subramaniam,薛笛.Java 虛擬機(jī)開(kāi)發(fā)編程[M].北京:機(jī)械工業(yè)出版社,2013.
[9] 史雅云.車(chē)載導(dǎo)航終端數(shù)據(jù)處理系統(tǒng)的研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2007.
[10]王盟,馬艷崢,徐曉輝,等.一種無(wú)線數(shù)據(jù)采集及遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(1):30-32.