ESP32 BLE ELM327 SD

ESP32-C6-GEEK Carlogger

ESP32-C6-GEEK を用いて ELM327 経由で走行ログを取得・表示・SDへ保存するプロジェクト。

概要

ESP32-C6-GEEK(Waveshare)を使い、BLE (NimBLE) または Bluetooth Classic 経由で ELM327 に接続して走行ログを取得・表示・SDへ保存するプロジェクトです。

解説動画

特徴

  • LCD リアルタイム表示 — 走行データを表示
  • ファイル保存 — SDカードに1秒毎のログを保存(CSV)

ハードウェア

部品型番 / 備考
マイコンWaveshare ESP32-C6-GEEK
LCDST7789(基板内蔵 135×240px)
I/FELM327(Bluetooth Classic)

簡易接続例(実際のピン配置はボード資料を参照してください):

  • LCD (ST7789): ボード内蔵 SPI(MOSI/MISO/SCLK/CS/DC/RESET)
  • SDカード: VSPI / SDMMC(本プロジェクトではSPI経由を想定)
  • ELM327: Bluetooth Classic 接続 (ESP32標準使用時)

ソフトウェア要件

ツールバージョン
ESP-IDFv5.4.1

セットアップ

以下は本リポジトリをプロジェクトルートに置いた前提の手順(例)。環境によってパスを読み替えてください。

1. Bluetooth 認証情報を用意

ELM327 の接続に必要な MAC アドレスと PIN は、現在 main.cpp 内にハードコードされています。実機に合わせて値を変更してください。将来的には設定ファイルで外部化することを推奨します。

[ELM327]
mac=AA:BB:CC:DD:EE:FF
pin=1234

2. 開発環境の準備とビルド

# ESP-IDF の環境スクリプトを読み込む
source /home/kusa/esp/esp-idf/export.sh

# プロジェクトルートへ移動(例)
cd ~/ドキュメント/eSp32/carlog

# ターゲットを設定(必要な場合)
idf.py set-target esp32c6

# ビルド
idf.py build

ヒント: 依存パッケージ(Python の requirements 等)がある場合、python -m pip install -r requirements.txt を実行してください。

3. デバイスへフラッシュ

# シリアルデバイス名は環境依存です(例: /dev/ttyACM0, /dev/ttyUSB0)。
idf.py -p /dev/ttyACM0 flash

ログ保存形式(SDカード)

保存はCSVを想定しています。日時ではなく、電源ONからの経過時間を出力します。ヘッダ例:

elapsed_ms,latitude,longitude,speed_kmh,rpm,engine_load,throttle_pos,voltage

サンプル行:

123456,35.6895,139.6917,48.2,2200,12.3,8.1,12.6

注意事項 / トラブルシュート

  • ELM327 とペアリングできない場合は、ELM327 側の電源とシリアル設定(ボーレート)を確認してください。
  • SD カードが認識されない場合は、ファイルシステムが FAT32 でフォーマットされているか確認してください。

ライセンス

MIT License(リポジトリに LICENSE ファイルを追加することを推奨します)

謝辞

LovyanGFX — 高速グラフィックライブラリ

Resource

資料はGitHubで公開しています。個人の学習や小規模なプロジェクトでの再利用を歓迎します。

View on GitHub