Racing Logger 賽車數據記錄器
給自己的 DRG 裝的 ESP32-S3 OBD2/CAN 即時儀表,是通用車載數據記錄平台的第一代。
- 期間
- 2026 –
- 角色
- 個人專案
- 技術
- ESP-IDFESP32-S3LVGLCAN / TWAIOBD2FreeRTOS
- 連結
- GitHub ↗
問題
想知道自己的車在跑什麼:轉速、水溫、油門、CAN bus 上還有什麼。市售儀表要嘛貴、要嘛封閉。這台車是自己的,可以自由拆線、接 OBD2、做實測,壞了也是自己承擔。
架構
機車 OBD2 port(CAN 2.0B @ 500 kbps)
│ ESP-IDF TWAI
▼
ESP32-S3(Core 0:CAN 接收 + OBD2 解析)
│ queue
▼
ESP32-S3(Core 1:LVGL 渲染)
│ RGB565 雙緩衝 PSRAM framebuffer
▼
4.3 吋 800×480 觸控 LCD(street / track / diag 三種 UI)
供電由機車鎖頭電經 DC-DC 12V → 5V。
我做了什麼
- CAN 層:TWAI 驅動、OBD2 PID 請求與解析、CAN sniffer 模式看未知封包
- 顯示層:LVGL 8.4 雙緩衝,三種畫面模式,觸控切換
- 雙核分工:CAN 與渲染分核,避免畫面卡住時掉封包
三代願景
- Gen 1(現在):單車款 OBD2/CAN 即時儀表,驗證硬體堆疊與 UI 架構
- Gen 2:加 IMU、GPS、儲存,從即時顯示變成事後分析的記錄器
- Gen 3:多車款、多協定、賽道四輪,通用平台化
Trade-off
- ESP32-S3 而不是 Raspberry Pi:開機秒亮、鎖頭電斷電不怕檔案系統壞、功耗低。代價是算力與 UI 自由度,LVGL 剛好夠用
- Waveshare 現成板而不是自製 PCB:Gen 1 要驗證的是軟體架構,不是硬體設計。先讓它跑起來
- ESP-IDF 而不是 Arduino / PlatformIO:要碰 TWAI 和雙核 FreeRTOS 的細節,Arduino 層包太多。踩過安裝的坑,但值得