玩轉車聯網3---通訊方式和通訊協議


閱讀下文前,建議對OBD有初步了解,可閱讀下面兩篇:

玩轉車聯網1---初識OBD和行車助手

玩轉車聯網2--汽車內部通訊和車聯網整體架構

上一篇博文提到了汽車內部的通訊方式,但是我們的程序是如何與OBD之間進行通訊的呢?

這里就涉及到兩個問題:通訊方式和通訊協議。先上一張OBD安裝在蒙迪歐致勝上的效果圖:

1. 通訊方式

對於大多數的OBD硬件來說,多采用藍牙、WIFI、串口等幾種方式。

下面看看幾種模式在實際使用場景中,對於普通消費者的優缺點:

  優點 缺點
藍牙 可與智能手機連接,不占用智能手機網絡信道 因為大部分用戶的藍牙功能是關閉的,用戶可能會上車后可能忘記打開藍牙
WIFI 可與智能手機連接,用戶一般情況下會打開手機WIFI功能 由於智能手機連接OBD后,相當於構成個車內局域網,因此占用手機網絡信道,不能上外網
串口 非常穩定, 適合作為檢測設備 不可與智能手機連接

  

  根據利弊分析,作為消費級的產品,采用串口作為通訊方式肯定是不行的。藍牙和WIFI相比較,藍牙模塊的成本更低,更加穩定,因此優先選擇藍牙模塊。我相信這也是為什么大多數的可穿戴設備選擇藍牙的原因。當然,在軟件設計上,可以將藍牙和WIFI虛擬成一個ICommunication接口,方便程序的擴展。本文不作重點講述,以后會在Android藍牙自動重連章節着重展開。

2. 市面上的OBD

  上文中對於OBD的通訊方式有了簡要介紹,再進行通訊協議之前,我們先說說市面上的OBD吧。

  

      市面上有眾多OBD產品,最常用的是Elm327(便宜,淘寶上40幾塊,藍牙的),當然還有EST527, XTool,國外還有好多,從幾十到上千不等。為什么會有價格差別?

1.產品質量,所謂一分價錢一分貨

2.軟件支持,其他廠商的可以配合他們自己的硬件實現特有的軟件服務,例如將OBD同保險和汽車維修服務掛鈎。

3.硬件支持,其他廠商會增加GPS/GPRS/3G等模塊,不需要智能手機,可以通過OBD硬件直接將數據傳到后台。

      但是我想做的是一個相對通用的開發者平台,盡量支持市面上的OBD硬件。一個廠商或者一個開發者的能力是有限的,降低開發門檻,提供最基礎的SDK服務,發揮廣大人民的想象力,開發出更多更實用的應用。

      那么是否有這種可能性呢?答案是可能的。因為大部分的硬件廠商都是在Elm327上進行擴展,我們只要把Elm327吃透,支持一種新的設備也是很迅速的事情。

 

3. 通訊協議

回歸正題,那么OBD的通訊協議時怎樣的呢,這里只做簡單介紹。

3.1 OBD能提供的服務

OBD主要有下面九種服務,每一種服務都可以延伸很多東西,我們先着重關注服務1(Mode1)。

Mode 1: 請求動力系當前數據(發動機轉速、速度、水溫、油耗等數據)
Mode 2: 請求凍結禎數據
Mode 3: 請求排放相關的動力系診斷故障碼
Mode 4: 清除/復位排放相關的診斷信息
Mode 5: 請求氧傳感器監測測試結果
Mode 6: 請求非連續監測系統OBD測試結果
Mode 7: 請求連續監測系統OBD測試結果
Mode 8: 請求控制車載系統,測試或者部件(中國市場開發的OBD系統不支持該模式)
Mode 9: 讀車輛和標定識別號

即使Mode1下真正能讀取的數據遠遠不止下面這些,暫且說幾個最常用的吧。

      油耗系:讀取動力系數據(瞬時油耗、當前油量)

      引擎類(速度、發動機轉速)

      溫度系(水溫等數據)

      故障碼類(故障碼個數,故障碼詳細,清除故障碼等)。

 

3.2. OBD數據協議格式

   這里是基礎的基礎,我們以CAN總線的OBD數據格式為例,其中ELM327也是采用這種數據格式。

       ID表示CAN總線的ID;

       PCI表示協議控制的信息數;

       7 data bytes非常關鍵,表示Mode+PID,例如,如果是車速,那么這里就應該是01(Mode1) + 0D(車速)

       Checksum:校驗碼

 

3.3. 最簡單的OBD消息交互---獲取水溫

       以獲取水溫為例:

       發送:>01 05 (Mode1:01 動力系, PID:05 水溫)

       返回:41 05 7B  

       下面是返回的解釋:

       41=40+01,具體40是什么有點忘了,表示是從01 <Mode1返回的,05表示是PID05

       7B轉換成10進制為7*16 + 11 = 123 (華氏溫度),

       即123-40 = 83攝氏度

 

哎哎,終於寫完了,比較討厭寫這種純技術類的文章,好累。

最后發一張正在開發的Android車機界面原型圖,鼓勵自己.

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM