文章總列表

ESP32(10) CAN Logger功能驗收

插在OBD2上的樣本二號像是平安符,注意,第三片小板子上去了。這篇是這系列的最後一篇了,我們來看看它的功能


[Put them together,功能確認]

先前比較少著墨軟體,這裡聊一下軟體設計

驗證部分我使用Linux的的CAN-Utils套件,他是Volkswagen Group Electronic Research編寫的(版權宣告),這一系列工具非常方便。下面的命令會間隔1ms灌包,封包數值會遞增,方便檢查有無掉封包

  • cangen can1 -g1 -L8 -Di

實驗完成,真的有檔案跑出來

第一個封包序號0x114,最後序號0x15934F,一共1413961封包,和圖二編輯器行號吻合,沒掉封包。連續錄送1500秒,大約1秒942發。CAN本身會塞一些stuffing bit,這大概125K CAN極速



本來在一個task收CAN和寫資料,加深CAN queue還會掉封包。開出專門寫SD卡的task,並且入口的queue放深一點,從此不掉封包

前一篇所述,電源供應元件有發熱問題,跑上面實驗會熱當,上車會掛。改buck不知道要多久,靈機一動:如果一枚LDO太燙,那就放兩顆吧。我果然是天才啊,立刻過關


[Configuration As Service]

這次編寫軟體有個新嘗試,把設定和RTOS相關資料結構塞入structure,取代一堆#define和全域變數。過往他們散在軟體裡不容易看出關聯,現在這樣是要花點記憶體,我感覺還不錯。既然能讀SD卡,也有機會開機讀取設定後,動態修改組態



[上車吧]

趁晚上涼快開車出來實驗,要搞車子,地下室有蚊子,白天又很熱,還是晚上好

很快發現不合用的地方:要等車子CAN封包停止,軟體才關檔。一輪實驗要10分鐘,直接關電檔案大小都是0什麼都沒有。在書桌上寫那麼爽,一出來立刻踩坑

果斷修改機制:檔案寫滿16000筆記錄,關檔開下一個檔案,搭配一顆LED,開新檔切換亮暗,用眼睛能判斷是否斷電。回去再多補上一顆按鈕,做完實驗按下立刻關檔


[CAN封包分析指南]

假如想分析CAN log,找到駕駛座車門打開或關閉的封包要怎麼做?想30秒再繼續看

我錄了一份log包含以下操作,用寫好的分析工具把log轉成報告,報告對所有封包作圖。比起閱讀log file,看圖舒服很多吧

  • 門開著,開始實驗
  • (關門1秒,開門3秒)* 5次

判斷開關門也麻煩,門開著的時間故意久一點,很容易就能判斷了


[CAN封包分析指南2]

偶爾我也用EXCEL分析封包,因為有上面的工具,後來比較少用

EXCEL能找到資料裡的unique set,可以計算他們出現的次數。假如錄兩份log,一份有某個操作另一份沒有,就可以觀測unique set找到這包特殊封包


[CAN封包分析指南3]

找到上述的110封包後,我會用Pi搭配candump直接看110封包,開關門看看他數值變化。逆向工程就是如樸實無華

  • candump can0 | grep 110


[下一步]

這篇是專題最後一篇了,已經做出logger雛形,能丟在車上玩了。今天玩了一下發現:要看記錄得拔卡有點麻煩,好想要無線傳輸,人懶真的沒藥醫啊!!!

接著要玩ESP32專屬的特異功能

我想用藍芽做遙控工具(比如按一下關檔),OTA韌體升級,或是放個SHELL在上面吃指令。藍芽傳輸速度大概不適合丟出log

有WiFi的時候,能自動上傳log,也可以在上面跑個webserver,能遠端管理log;這個cannelloni很有意思,他能把CAN封包透過UDP導向到遠端電腦!意思是只要有WiF,我也能在房屋裡,摸到地下室的CAN bus


留言

這個網誌中的熱門文章

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

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

CANON G3000 廢墨瓶改裝