文章總列表

ELM327 OBD-II 心得 (2),ELM327底層介面

首先到Google Play搜尋ELM327 Terminal,不用太糾結,隨便一套都可以。如果真的有選擇困難,那就這套吧。因為他最近才更新過,而且介面看起來滿漂亮的



想辦法連上車後,輸入0902就可以讀取汽車的VIN碼(車子唯一的辨識碼)。這些PID(0902)是工業規格,每家車商都得實作,底下是幾個常見的code。所以抬頭顯示器(HUD)不需要區分廠牌,只要有OBD2接頭都可以用
  • 01 0D 車速
  • 01 0C 引擎轉速

底下是我車子回報的VIN碼,有興趣可以查一下文件,解看看 :-)
  • 7E8 08 01 14 49 02 01 59 56 41
  • 7E8 08 21 44 5A 41 38 42 44 48
  • 7E8 08 22 32 30 37 36 36 38 32
用Torque讀CANBUS的人很多,但是很少人看ELM327究竟做什麼。到ELM公司官網下載他們的AT command列表,這就是這顆IC所有的能力了,不同版本支援的能力也不大相同


可能是歷史因素,ELM327命令已經變成某種非正式標準,所有想寫手機和汽車打交道的軟體都會支援ELM327命令。反過來說,任何一個人想做車用OBD-II的讀取頭,只要照著ELM327命令實作,就能和現有的手機軟體互聯(即使他本質不是ELM327)

所以深圳的公司用8051刻了ELM327 1.5(或著就自己亂改),但是人家根本沒出過v1.5;想做手機讀取頭的公司,最好開出的軟體介面和ELM327命令相容,否則客人買回去不能接Torque,產品會賣不掉








手機軟體開發者會盡量少用一些特殊命令,這樣相容性才好。實務上讀引擎轉速,速度,讀錯誤碼,這些操作都不需要特殊命令,所以這類Probe其實接手機大概功能都會動。

如果您問我,哪個版本的ELM327可以買... 說實話我不是很確定,畢竟我手上也沒幾個。但是後面我會分享CANBUS如果有個爛掉的裝置,會對系統造成什麼傷害

留言

硬體工程師表示…
本職是硬體工程師, 最近覺得OBD是個有趣的介面
爬文爬到您的網站忍不住解這篇的謎題, 花了大半天找國外論壇
最後看原廠ELM327DS與ISO 15765-4:2005才有點概念
這樣解對嗎

7E8 08 01 14 49 02 01 59 56 41
7E8 = ECU #1回覆
08 = 後面有八個有意義byte
01 = 有一筆data item
14 = 這筆data item共20byte
4902 = 回覆PID 0902
59 56 41 = 車輛VIN ASCII

7E8 08 21 44 5A 41 38 42 44 48
21 = 延續的第一筆
7E8 08 22 32 30 37 36 36 38 32
22 = 延續的第二筆
lihgong寫道…
Hi, 希望讀這段文字有找到一些樂趣 :)

你的解讀正確, 並且我找到文章裡的一點錯誤, 因為這個錯誤, 有個byte無法翻譯, 更正如下
Before
7E8 08 **01** 14 49 02 01 59 56 41
7E8 08 21 44 5A 41 38 42 44 48
7E8 08 22 32 30 37 36 36 38 32
After
7E8 08 **10** 14 49 02 01 59 56 41
7E8 08 21 44 5A 41 38 42 44 48
7E8 08 22 32 30 37 36 36 38 32

配菜: https://en.wikipedia.org/wiki/ISO_15765-2

第一筆response
7E8 LEN=8 10 14 ...

正確的解析方法是這樣
byte0[bit7:4] = 0x1, First packet
byte0[bit3:0] + byte1[7:0] = length = 0x014 = 20bytes

所以第一筆response, 也許這樣看會更傳神一點, 另外也可以看到發明CAN bus的人, 他們心裡是這樣用的
7E8 LEN=8 TYPE=1 LEN=014

如果你手邊有ELM327藍芽版, 也拿去折騰自己的車吧 :)
硬體工程師表示…
感謝回應並提供配菜
修正後的值1=First frame與2=Consecutive frame的關係更好理解了
手邊是有顆OBDlink LX, 幾個主要的ANDROID APP蠻推荐他
有機會您也試試有沒有差 :P

這個網誌中的熱門文章

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

幼犬書桌椅選擇心得 升降桌 兒童桌椅

CANON G3000 廢墨瓶改裝