概要
ESP32-C6-GEEK(Waveshare)を使い、BLE (NimBLE) または Bluetooth Classic 経由で ELM327 に接続して走行ログを取得・表示・SDへ保存するプロジェクトです。
解説動画
特徴
- LCD リアルタイム表示 — 走行データを表示
- ファイル保存 — SDカードに1秒毎のログを保存(CSV)
ハードウェア
| 部品 | 型番 / 備考 |
|---|---|
| マイコン | Waveshare ESP32-C6-GEEK |
| LCD | ST7789(基板内蔵 135×240px) |
| I/F | ELM327(Bluetooth Classic) |
簡易接続例(実際のピン配置はボード資料を参照してください):
- LCD (ST7789): ボード内蔵 SPI(MOSI/MISO/SCLK/CS/DC/RESET)
- SDカード: VSPI / SDMMC(本プロジェクトではSPI経由を想定)
- ELM327: Bluetooth Classic 接続 (ESP32標準使用時)
ソフトウェア要件
| ツール | バージョン |
|---|---|
| ESP-IDF | v5.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