《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于OBD協議的Android平臺汽車虛擬儀表設計
基于OBD協議的Android平臺汽車虛擬儀表設計
來源:電子技術應用2011年第12期
蔡 黎1, 代妮娜1, 鄧 明2
1. 重慶三峽學院 電子與信息工程學院, 重慶 404000; 2. 長安汽車研發中心系統所5室,重慶400023
摘要: 提出了一種基于OBD協議的Android平臺汽車虛擬儀表設計方法。該裝置以連接器硬件和解析OBD數據軟件為核心,連接器硬件讀取OBD接口實時數據,軟件解析相關參數值,最后在Android平臺設備上進行圖形化虛擬儀表顯示。在分析OBD協議關鍵技術后,具體闡述了Android SDK開發環境下軟件的設計方案。按該方案設計的汽車虛擬儀表已經實現,工程實測證明:此種設計方案高效可靠,能夠達到監測汽車運行參數的預期目的。
中圖分類號: TP274
文獻標識碼: A
文章編號: 0258-7998(2011)12-0083-04
Design of car virtual instrument based on OBD for Android
Cai Li1, Dai Nina1, Deng Ming2
1. Department of Electronic and Information Engineering, Chongqing Three Gorges University, Chongqing 404000, China; 2. Room 5 of System Department, Changan Automobile R&D Center, Chongqing 404000, China
Abstract: The car virtual instrument design using OBD protocol is developed for Android. The core of the device is including the hardware for connector and software for analyzing the OBD data. The connector reads the real-time data from the OBD interface, analyzes related parameters by its analysis module, and then displays by a graphical way in the device. The method to achieve the software in the android SDK development environment is elaborated specifically after analyzing the key technology of the OBD protocol. This design of the car visual instrument has been realized. The tests in practice have proved that it is efficient and reliable enough to achieve the desire of monitoring the vehicle operating parameters.
Key words : OBD; Android; car; virtual instrument


    OBD(On Board Diagnostics)即“車載診斷系統”[1],裝載OBD協議的汽車能夠自動監測汽車各項運行參數,具有很高的安全性。但是受到OBD儀表高額制造成本的制約,絕大部分汽車只支持OBD協議并提供OBD接口,但是未設置OBD車載檢測儀表,因此OBD的各項功能未得到有效發揮。
    Android是一款基于Linux平臺的開源移動通信終端操作系統,由Google公司研發,目前全球長期使用的Android平臺設備約有1 300萬臺。
    本文介紹一種能夠應用在Android設備平臺的OBD汽車虛擬儀表設計方案。
1 系統整體設計
1.1 需求分析

    OBD系統能夠輸出汽車電子控制單元ECU(Electronic Control Unit)通過車載傳感器獲得的燃油系統、溫度系統、點火系統、動力系統以及廢氣控制輔助裝置系統運行狀態數據,在發生故障的情況下則輸出故障碼。
    基于OBD協議的Android平臺汽車虛擬儀表需要實現的功能是擴展OBD接口功能,與OBD接口通信,解析相關報文數據流,將解析結果以圖形化的方式顯示,如動力監控界面能夠顯示發動機狀態、發動機轉速、當前時速、剩余油量、發動機溫度等。
1.2 整體設計
    用系統工程的方法劃分虛擬儀表設計工作,參照模塊化軟件開發規范,按照以下步驟實現汽車虛擬儀表:
    (1)分析OBD接口,設計硬件連接器,將電平轉換到Android平臺設備可接受的范圍;
    (2)虛擬儀表軟件初始化連接器,讀取輸入信號,解析OBO信號報文并以圖形化的方式顯示。系統子模塊圖如圖1所示。


2 OBD接口
    根據ISO DIS 15031-3規范,OBD接口被定義為雙排16針插座,有A、B兩種外形規范,A用于小型乘用車,B用于載重汽車[2]。A型接口一般位于轉向柱和汽車中線之間。16個引腳信號定義如下。
    如圖2,插座的02、06、07、10、14 和15號引腳用于傳輸不同的汽車通信協議,通常用其作為診斷通信接口。因為一個型號的汽車只使用一種協議,所以同一型號的汽車,只需要使用其中的一個接線柱。插座01、03、08、09、11、12 和13 未做分配,由車輛制造廠商自行定義。如第4節工程實測中使用的長城CC7130SM00 汽車,將11 腳定義為發動機防盜信號、12定義為ABS(Anti-locked Braking System)車輪防抱死信號、13腳定義為安全氣囊信號。


3 硬件連接器設計
3.1 連接器設計

    連接器的作用是將OBD接口輸出信號轉換為Android平臺設備能夠識別的信號并輸入。此處選用ELM電子生產的OBD轉RS232專用芯片ELM327作為連接器主控芯片,連接器一端連接OBD插座,OBD接口16號引腳為芯片供電,OBD信號通過芯片轉換后從數據收發口RXD、TXD輸出。基于ELM327的連接器組成框圖如圖3所示。

3.2 電平轉換
    Android平臺設備一般采用無線藍牙、WLAN或有線USB端口進行數據通信,這里選擇USB端口作為信號輸入端口。ELM327輸出的信號范圍是0 V~12 V,Android平臺設備USB端口接收的信號范圍為0 V~5 V,兩者不匹配[3],設計以PL2303芯片為核心的轉換電路完成轉換,電路圖如圖4所示。

4 虛擬儀表軟件設計

 


    軟件設計平臺選用Java JDK、Eclipse IDE for Java EE Developers和Android SDK共同構建的開發平臺[4]。采用模塊化的設計方法,將虛擬儀表軟件分為通信初始化模塊、OBD數據解析模塊、計算與顯示模塊。
4.1 通信初始化模塊
    通信初始化模塊功能是通過連接器實現OBD插座與Android平臺設備的互聯。
    (1)打開USB通用串行端口,代碼如下:
  Fd=open("/dev/ttyS0",O_RDWR);
  “/dev/ttyS0”為USB端口設備文件,O_RDWR表示可以對USB串端口進行讀寫。
    (2)設定串行通信參數,SAE J1979協議規定,工程實測中使用的長城CC7130SM00 汽車OBD工作波特率為9 600 Kb/s,每一幀數據由8位數據位和1位停止位組成,幀數據中無奇偶校驗位[5]。Android平臺將USB端口當做終端I/O文件管理,其參數設置使用Struct Termios結構體實現:
       Etispeed( ttys0_opt, B9600);          //設置波特率9 600
     Ttys0_opt.c_cflag|=CS8;              //設置8位數據位
     Ttys0_opt.c_cflag &= ~(PARENB|CSTOPB;
                                                        //設置1位停止位,無奇偶校驗位
4.2 OBD報文解析
    報文解析模塊是虛擬儀表的核心,以OBD報文組成為基礎定義其主要工作流程圖如圖5所示。

   (1)模式選擇: SAE J1979 定義了9診斷模式用以獲得不同類型的診斷報文數據,本設計只選用選擇模式2,即獲取動力系統監控數據模式。發送指令“PID$02”到OBD接口,可指定OBD工作在診斷模式2,將當前動力系統監控數據送出。
   (2) 發送詢問碼:虛擬儀表軟件通過USB端口發送命令到OBD接口用函數Write ( )實現,關鍵代碼如下:
    CMDbuf=PID$02;
    N= Write ( fd, CMDbuf,);
  以上代碼將命令變量CMDbuf中的數據從Android平臺設備輸出到汽車的OBD端口,返回讀取的字節數。運行后,汽車ECU接收數據,OBD接口工作在診斷模式2。
  (3)讀取信號數據:虛擬儀表軟件通過USB端口讀取OBD接口的數據用函數Read( )實現,關鍵代碼如下:
  N=Read(fd, Rsbuf, 8);
  以上代碼將汽車OBD端口Android平臺設備USB端口的數據讀入結果變量Rsbuf中待解析,返回讀取的字節數。
    (4)從虛擬儀表軟件的健康度考慮,將報文信號分為開關信號和流信號分別進行解析。
    開關信號報文內容為故障碼,對應的程序變量為Logic布爾型,首先建立動力系統的故障碼與主要故障碼映射簡表如表1所示。


    通過查表1實現報文的解析,如待解析的OBD報文中含有“P0196”故障碼,則通過查表可判定故障為發動機機油溫度傳感器線路電壓不正確[6],此時軟件將發動機故障狀態邏輯變量置1,即用紅色顯示發動機故障。關鍵代碼如下:
     if((EngStas=1)){
     MainFm.EngPIC.Color=#33FF00;}
     else{
     MainFm.EngPIC.Color=#FF0000;}
     流信號為數值數據,如發動機轉速。解析的主要工作是進行變量類型轉換:報文中的數值數據為String字符型,應先使用如下代碼轉換為INT整型變量后提交圖形顯示。
  Int i = Integer.parseInt([String]);
4.3  圖形顯示
    圖形顯示模塊的設計關鍵在于虛擬儀表指針動態顯示效果實現。先用圖像處理軟件Photoshop繪制儀表盤并保存為JPG圖像,添加JLabel控件引用圖像:
    Private URL;
     IURL=getClass().getResource("Rate.jpg");
     JLabel pic=new JLabel(new ImageIcon(IURL));
     指針需要呈現的隨相關變量的改變而改變的動態效果,調用AWT (Abstract Window Toolkit) 抽象窗口工具集實現[7]。用DrawLine指令繪制儀表指針,并預先將數值轉化為指針起點終點位置坐標數據。如繪制從起點(X1,Y1)到終點(X2,Y2)直線段的關鍵代碼如下:
    DrawLine(int X1,int Y1,int X2,int Y2);
5 工程實測
    選用Android平臺設備摩托羅拉ME722,軟件版本Android2.2.2,設置設備為UBS開發模式并預先用三方軟件取得系統Root權限,選用長城CC7130SM00轎車作為實測車輛。使用第3節中設計的連接器連接設備和OBD接口后,運行第4節設計的虛擬儀表軟件。
    虛擬儀表成功讀取汽車動力系統的發動機狀態、轉速、溫度、行駛速度、存油量等參數信息并顯示,顯示結果和汽車儀表盤完全一致,達到設計的預期目的。如圖6、圖7所示。

    基于OBD協議的Android平臺汽車虛擬儀表設計方法真實有效,其價格低廉,通用性好,實用性強,達到了預期的設計目標,可以直接用于小型載客汽車或在稍作改造后用于重型汽車或其他支持OBD協議的車輛。
參考文獻
[1] CAVALIER S. Meeting real-time constraints in CAN[C].IEEE Transactions on industrial informatics,2005,1(2):124-135.
[2] 尹玉梅. 基于CAN總線和MiniGUI的虛擬儀表設計[J].電子技術應用,2010,36(2):85-87.
[3] CARLOSENA A, MACUA C. Instrument for the Measurement of the instantaneous frequency[C].IEEE Transactions on Instrumentation and Measurement, 2000,1:1-4.
[4] App Inventor[EB/OL].http://appinventor.googlelabs.com,2010.
[5] 炫麗汽車使用手冊[M].保定:長城汽車股份有限公司,2008.
[6] BOSCH Company. CAN Specification Version2.0[EB/DL].http://www.bosch. Com. Germany.2011.
[7] 蔡體菁.嵌入式GPS/MIMU/磁羅盤組合導航系統[J].儀器儀表學報,2010(12):32-37.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
裸体素人女欧美日韩| 欧美激情在线观看| 亚洲精品视频在线观看免费| 亚洲欧美日韩一区二区三区在线| 亚洲九九爱视频| 激情欧美国产欧美| 国产一二精品视频| 国产精品社区| 国产精品入口| 国产精品久久毛片a| 欧美日韩在线免费观看| 欧美日韩成人综合天天影院| 欧美精品久久99| 美女主播一区| 欧美福利一区二区| 欧美激情视频一区二区三区在线播放| 欧美成人综合一区| 欧美国产精品劲爆| 欧美人与性禽动交情品| 欧美精品自拍| 欧美日本一道本| 欧美日韩精品一区| 国产精品swag| 国产精品美女久久久久aⅴ国产馆| 国产精品白丝jk黑袜喷水| 欧美视频中文一区二区三区在线观看 | 亚洲女人av| 亚洲欧美日韩在线观看a三区| 亚洲欧美在线视频观看| 亚洲欧美激情视频在线观看一区二区三区| 亚洲欧美另类中文字幕| 欧美与黑人午夜性猛交久久久| 欧美一区二区三区免费在线看| 欧美影院视频| 久久久久久电影| 免费一区视频| 欧美日韩国产小视频| 国产精品播放| 国产亚洲在线| 亚洲电影在线| 夜夜嗨av一区二区三区| 亚洲欧美电影院| 久久精品国亚洲| 日韩一区二区精品视频| 亚洲综合视频网| 久久久www| 欧美激情欧美激情在线五月| 欧美系列亚洲系列| 国产一级一区二区| 亚洲国产精品va| 亚洲视频免费在线| 欧美伊久线香蕉线新在线| 亚洲人成毛片在线播放| 亚洲一区一卡| 久久久久久日产精品| 欧美精品久久99| 国产精品综合久久久| 1769国产精品| 亚洲已满18点击进入久久| 亚洲成人在线视频播放 | 欧美日韩国产精品成人| 国产精品一香蕉国产线看观看| 影音先锋久久| 一区二区三区久久精品| 亚洲高清自拍| 亚洲一区国产精品| 蜜桃av一区二区| 国产精品wwwwww| 一区免费在线| 亚洲亚洲精品在线观看| 亚洲国产日韩一区二区| 亚洲一区二区免费| 麻豆精品视频在线观看| 国产精品乱码| 亚洲高清不卡| 欧美一级欧美一级在线播放| 在线视频亚洲| 老司机免费视频一区二区三区| 欧美体内she精视频| 狠狠噜噜久久| 亚洲免费影视| 一本在线高清不卡dvd | 欧美日韩在线观看一区二区三区 | 欧美区一区二| 国产亚洲精品自拍| 一本不卡影院| 亚洲激情校园春色| 久久成人精品视频| 欧美午夜视频在线| 亚洲国产精品传媒在线观看| 午夜在线播放视频欧美| 亚洲一区二区高清| 欧美精品一区二区三区久久久竹菊| 国产一区二区三区在线观看网站| 99精品视频免费全部在线| 亚洲国产毛片完整版 | 久久精品视频在线| 国产精品久久一级| 日韩网站免费观看| 亚洲日本无吗高清不卡| 久久狠狠一本精品综合网| 欧美偷拍另类| 亚洲精品久久久久久久久久久| 久久国产精品网站| 久久国产一区| 国产精品色午夜在线观看| 夜久久久久久| 亚洲少妇自拍| 欧美精品在线一区二区三区| 亚洲国产精品成人va在线观看| 亚洲国产婷婷香蕉久久久久久| 久久99在线观看| 国产精品久久看| 在线视频精品| 亚洲一区二区在线免费观看视频 | 美女性感视频久久久| 国产在线视频不卡二| 亚洲欧美国产视频| 午夜精品理论片| 国产精品嫩草99a| 一本色道久久综合一区| 亚洲天堂免费在线观看视频| 欧美精品一区在线发布| 最新中文字幕亚洲| 亚洲每日在线| 欧美伦理91| 亚洲精品在线看| 一区二区久久| 欧美三级视频在线播放| 夜夜嗨av色一区二区不卡| 亚洲素人一区二区| 欧美午夜久久久| 亚洲小说春色综合另类电影| 亚洲欧美日韩中文播放| 国产精品一区二区三区观看| 小黄鸭视频精品导航| 久久久久www| 黑人巨大精品欧美一区二区小视频| 欧美在线高清| 男人的天堂亚洲在线| 亚洲第一天堂无码专区| 亚洲精品在线视频观看| 欧美日韩dvd在线观看| 亚洲乱亚洲高清| 亚洲欧美另类国产| 国产一级精品aaaaa看| 亚洲国产精品久久久久秋霞蜜臀| 欧美成人一二三| 亚洲精品一区二区三区四区高清| 一区二区国产日产| 国产精品欧美日韩久久| 欧美一级播放| 免费亚洲电影| 99精品热视频| 欧美专区在线观看| 亚洲国产精品久久久久婷婷老年 | 欧美日韩国产123区| 亚洲视频网站在线观看| 欧美自拍偷拍| 亚洲电影免费在线| 亚洲免费人成在线视频观看| 国产欧美日韩免费| 亚洲电影第1页| 欧美精品在线免费播放| 亚洲欧美三级在线| 免费亚洲电影在线| 亚洲视频久久| 狼狼综合久久久久综合网| 亚洲精品之草原avav久久| 欧美亚洲午夜视频在线观看| 激情视频一区二区三区| 中国成人黄色视屏| 国产亚洲精品bt天堂精选| 亚洲三级网站| 国产精品久久久亚洲一区 | 国产真实精品久久二三区| 亚洲美女中文字幕| 国产精品日韩专区| 亚洲欧洲在线观看| 国产精品香蕉在线观看| 亚洲人成免费| 国产嫩草影院久久久久| 亚洲精品久久久蜜桃| 国产精品色一区二区三区| 亚洲日本欧美天堂| 国产精品一页| 99视频精品全国免费| 国产午夜久久| 中日韩美女免费视频网站在线观看| 国产欧美日韩一区二区三区| 999亚洲国产精| 国际精品欧美精品| 亚洲一区三区电影在线观看| 亚洲电影视频在线| 欧美中文字幕在线| 99re在线精品| 免费欧美电影| 午夜亚洲影视| 欧美午夜精品久久久久久浪潮| 最新亚洲激情|