基于OBD協(xié)議的Android平臺(tái)汽車虛擬儀表設(shè)計(jì)
摘 要: 提出了一種基于OBD協(xié)議的Android平臺(tái)汽車虛擬儀表設(shè)計(jì)方法。該裝置以連接器硬件和解析OBD數(shù)據(jù)軟件為核心,連接器硬件讀取OBD接口實(shí)時(shí)數(shù)據(jù),軟件解析相關(guān)參數(shù)值,最后在Android平臺(tái)設(shè)備上進(jìn)行圖形化虛擬儀表顯示。在分析OBD協(xié)議關(guān)鍵技術(shù)后,具體闡述了Android SDK開發(fā)環(huán)境下軟件的設(shè)計(jì)方案。按該方案設(shè)計(jì)的汽車虛擬儀表已經(jīng)實(shí)現(xiàn),工程實(shí)測(cè)證明:此種設(shè)計(jì)方案高效可靠,能夠達(dá)到監(jiān)測(cè)汽車運(yùn)行參數(shù)的預(yù)期目的。
關(guān)鍵詞: 車載診斷系統(tǒng); 安卓; 汽車; 虛擬儀表
OBD(On Board Diagnostics)即“車載診斷系統(tǒng)”[1],裝載OBD協(xié)議的汽車能夠自動(dòng)監(jiān)測(cè)汽車各項(xiàng)運(yùn)行參數(shù),具有很高的安全性。但是受到OBD儀表高額制造成本的制約,絕大部分汽車只支持OBD協(xié)議并提供OBD接口,但是未設(shè)置OBD車載檢測(cè)儀表,因此OBD的各項(xiàng)功能未得到有效發(fā)揮。
Android是一款基于Linux平臺(tái)的開源移動(dòng)通信終端操作系統(tǒng),由Google公司研發(fā),目前全球長(zhǎng)期使用的Android平臺(tái)設(shè)備約有1 300萬(wàn)臺(tái)。
本文介紹一種能夠應(yīng)用在Android設(shè)備平臺(tái)的OBD汽車虛擬儀表設(shè)計(jì)方案。
1 系統(tǒng)整體設(shè)計(jì)
1.1 需求分析
OBD系統(tǒng)能夠輸出汽車電子控制單元ECU(Electronic Control Unit)通過車載傳感器獲得的燃油系統(tǒng)、溫度系統(tǒng)、點(diǎn)火系統(tǒng)、動(dòng)力系統(tǒng)以及廢氣控制輔助裝置系統(tǒng)運(yùn)行狀態(tài)數(shù)據(jù),在發(fā)生故障的情況下則輸出故障碼。
基于OBD協(xié)議的Android平臺(tái)汽車虛擬儀表需要實(shí)現(xiàn)的功能是擴(kuò)展OBD接口功能,與OBD接口通信,解析相關(guān)報(bào)文數(shù)據(jù)流,將解析結(jié)果以圖形化的方式顯示,如動(dòng)力監(jiān)控界面能夠顯示發(fā)動(dòng)機(jī)狀態(tài)、發(fā)動(dòng)機(jī)轉(zhuǎn)速、當(dāng)前時(shí)速、剩余油量、發(fā)動(dòng)機(jī)溫度等。
1.2 整體設(shè)計(jì)
用系統(tǒng)工程的方法劃分虛擬儀表設(shè)計(jì)工作,參照模塊化軟件開發(fā)規(guī)范,按照以下步驟實(shí)現(xiàn)汽車虛擬儀表:
(1)分析OBD接口,設(shè)計(jì)硬件連接器,將電平轉(zhuǎn)換到Android平臺(tái)設(shè)備可接受的范圍;
(2)虛擬儀表軟件初始化連接器,讀取輸入信號(hào),解析OBO信號(hào)報(bào)文并以圖形化的方式顯示。系統(tǒng)子模塊圖如圖1所示。
2 OBD接口
根據(jù)ISO DIS 15031-3規(guī)范,OBD接口被定義為雙排16針插座,有A、B兩種外形規(guī)范,A用于小型乘用車,B用于載重汽車[2]。A型接口一般位于轉(zhuǎn)向柱和汽車中線之間。16個(gè)引腳信號(hào)定義如下。
如圖2,插座的02、06、07、10、14 和15號(hào)引腳用于傳輸不同的汽車通信協(xié)議,通常用其作為診斷通信接口。因?yàn)橐粋€(gè)型號(hào)的汽車只使用一種協(xié)議,所以同一型號(hào)的汽車,只需要使用其中的一個(gè)接線柱。插座01、03、08、09、11、12 和13 未做分配,由車輛制造廠商自行定義。如第4節(jié)工程實(shí)測(cè)中使用的長(zhǎng)城CC7130SM00 汽車,將11 腳定義為發(fā)動(dòng)機(jī)防盜信號(hào)、12定義為ABS(Anti-locked Braking System)車輪防抱死信號(hào)、13腳定義為安全氣囊信號(hào)。
3 硬件連接器設(shè)計(jì)
3.1 連接器設(shè)計(jì)
連接器的作用是將OBD接口輸出信號(hào)轉(zhuǎn)換為Android平臺(tái)設(shè)備能夠識(shí)別的信號(hào)并輸入。此處選用ELM電子生產(chǎn)的OBD轉(zhuǎn)RS232專用芯片ELM327作為連接器主控芯片,連接器一端連接OBD插座,OBD接口16號(hào)引腳為芯片供電,OBD信號(hào)通過芯片轉(zhuǎn)換后從數(shù)據(jù)收發(fā)口RXD、TXD輸出?;贓LM327的連接器組成框圖如圖3所示。
3.2 電平轉(zhuǎn)換
Android平臺(tái)設(shè)備一般采用無(wú)線藍(lán)牙、WLAN或有線USB端口進(jìn)行數(shù)據(jù)通信,這里選擇USB端口作為信號(hào)輸入端口。ELM327輸出的信號(hào)范圍是0 V~12 V,Android平臺(tái)設(shè)備USB端口接收的信號(hào)范圍為0 V~5 V,兩者不匹配[3],設(shè)計(jì)以PL2303芯片為核心的轉(zhuǎn)換電路完成轉(zhuǎn)換,電路圖如圖4所示。
4 虛擬儀表軟件設(shè)計(jì)