梁鈞瑋
← Projects

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 與渲染分核,避免畫面卡住時掉封包

三代願景

  1. Gen 1(現在):單車款 OBD2/CAN 即時儀表,驗證硬體堆疊與 UI 架構
  2. Gen 2:加 IMU、GPS、儲存,從即時顯示變成事後分析的記錄器
  3. Gen 3:多車款、多協定、賽道四輪,通用平台化

Trade-off

  • ESP32-S3 而不是 Raspberry Pi:開機秒亮、鎖頭電斷電不怕檔案系統壞、功耗低。代價是算力與 UI 自由度,LVGL 剛好夠用
  • Waveshare 現成板而不是自製 PCB:Gen 1 要驗證的是軟體架構,不是硬體設計。先讓它跑起來
  • ESP-IDF 而不是 Arduino / PlatformIO:要碰 TWAI 和雙核 FreeRTOS 的細節,Arduino 層包太多。踩過安裝的坑,但值得