• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

kz1000a1の愛車 [マツダ ロードスター]

整備手帳

作業日:2025年3月13日

RaceChrono DIY デバイス

他の整備手帳を見る 他の整備手帳を見る

目的 修理・故障・メンテナンス
作業 DIY
難易度

初級

作業時間 30分以内
1
RaceChrono の DIY デバイスを調べていたら、esp32 向けのソースコードを公開している方がいらっしゃいました。

https://github.com/joeroback/racechrono-canbus

BMW F/G シリーズ向けらしいのですが、NC ロードスター向けのソースコードを追加すれば使えそうなので試してみました。
2
NC ロードスターの CAN データを RaceChrono へ取り込むための情報はこちらにまとめてくれています。

https://github.com/timurrrr/RaceChronoDiyBleDevice/blob/master/can_db/mazda_mx5_nc.md

CAN フレームをそのまま BLE で転送する仕組みっぽいので以下の CAN ID を転送する設定とした。

0x081, 0x085, 0x200, 0x201, 0x240, 0x4B0

BMW 用のソースコードに倣い 10msec 間隔で送信されている CAN フレームは間引いて3回に1回転送することとした。

<3/26 追記>
BRZ / 86 では CAN ID 0x241 でシフトポジションが取れるようだ。羨ましいので車速とエンジン回転数からシフトポジションを計算して CAN ID 0x231 の 2 byte 目あたりを使って取れるようにしてみたい。

<3/27 追記>
RaceChrono で CAN ID 0x201 に対し下記の方程式(6速向け)で簡易的にギアを得る事が出来た。CAN からクラッチとニュートラルの状態を得られるので、それを加味すればより正確なシフトポジションを得ることができるけど、車種依存の汚いソースコードにしてまでする必要はないかと思い直しました。

(0.004<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))+(0.010<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))+(0.015<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))+(0.021<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))+(0.026<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))+(0.032<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))-(0.040<(((bytesToUint(raw,4,2)/100.00)-100)/(bytesToUint(raw,0,2)/4.00)))*6
3
開発から年数が経っているせいなのか、最新版の Arduino IDE に esp32 パッケージでは TWAI(CAN) コントローラが動作しなかったので twai ドライバーのソースを参考に修正し ESP32 dev module を使用して RaceChrono で情報が取れることを確認しました。

https://github.com/kz1000a1/racechrono-canbus

<3/21 追記>
このプログラムは、2つある ESP32 のコアのうちコア 0 で BLE によるデータ転送タスクを実行し、コア 1 で CAN コントローラーの割り込みハンドラを実行するという構成です。esp32 でもシングルコアの esp32-c3 等ではビルドができるように修正はしたものの正常には動作しないと思われます。
割り込みハンドラ中で、受信した CAN フレームが BLE で転送する対象かどうかを判定し、転送する CAN フレームだけをキューを介してコア 0 のタスクに渡すという転送性能を追求(?)した作りになっています。
espressif 社の TWAI ドライバーの割り込みハンドラーを使わず上記のハンドラーを使うために、TWAI ドライバーの I/F を使わずに実装されています。
そのため、互換性の問題から SoC によっては、src/canbus/controller.cpp を修正しないと動作しないかもしれません。
4
<3/13 追記>
M5STACK の Atom CAN 用の定義を追加し動作することを確認しました。LED の点灯には対応していません。

https://docs.m5stack.com/ja/atom/atom_can

CAN フレームを 175[フレーム/秒] 送信していて 8フレーム分のキューのうち最大で 4フレーム分しか使用していないようなので、Atom Lite でも性能は間に合っているようです。
5
<3/14 追記>
以下の情報を参考に VN レヴォーグ用のソースコードを追加しました。CAN フレームを解析してブースト圧や空燃比等とれれば面白そうですが、解析する意気地がありません。

https://github.com/timurrrr/ft86/blob/main/can_bus/gen2.md

<3/25 追記>
VN レヴォーグ用として 2代目 BRZ / 86 のサブセットを作りましたが、どうせなら BRZ / 86 用として完全なものにしておこうということで、CAN ID 0x13A と 0x241 を追加しました。以下の CAN ID を BLE に転送します(テストはこれから)。

0x040, 0x138, 0x139, 0x13A, 0x13B, 0x241, 0x345, 0x390, 0x393

<5/9 追記>
ドアがオートロックされる速度が約 22km/h だったので、そのときの CAN の生データから速度の係数を求めると 0.01717 となった。VN5 のメーター表示に合わせて求めた係数なので、86/BRZ では 0.015694 を使うのが良いのだろうと思う。

<5/10 追記>
ブースト圧(インマニ圧)を見つけてくれた方がいらっしゃいました。
https://minkara.carview.co.jp/userid/3717805/car/3726920/8214739/note.aspx
RaceChrono だと CAN ID 0x345、方程式 F * 2 - 100 となる。
6
<3/18 追記>
別の車種を追加したい場合は、src/canbus/decoder_xxxxx.cpp を追加します。
RaceChrono へ転送したい CAN ID、何回に 1回転送するかを ID の若い順に記述し、転送する CAN ID を受信するに適したフィルターの設定を記述します。

https://github.com/kz1000a1/racechrono-canbus/blob/trunk/src/canbus/decoder_mazdancec.cpp

フィルターの設定方法はこの整備手帳に書きました。

https://minkara.carview.co.jp/userid/3569195/car/3486727/7676904/note.aspx

最適なフィルターの設定は以下のプログラムで計算できます。ESP32 の場合は計算されたマスクの()内の値とします。

https://minkara.carview.co.jp/userid/3569195/car/3486727/8024314/note.aspx

使用する decoder_xxxxx の設定と新しいハードウェアの追加は src/racechrono-canbus.hpp に define します。

https://github.com/kz1000a1/racechrono-canbus/blob/trunk/src/racechrono-canbus.hpp

イイね!0件




関連コンテンツ

関連整備ピックアップ

エンジンがかからないーその後

難易度: ★★

エアコン再修理、オイル交換

難易度:

RX-8純正 間欠ワイパースイッチ取付 

難易度:

デジタルルームミラーカメラの埋め込み(ロド編)

難易度: ★★

トランクオープナースイッチ取り付け

難易度:

バックアラームにサイレントモードを追加(SACLAM始動音対策💦)

難易度:

関連リンク

この記事へのコメント

コメントはありません。

プロフィール

kz1000a1です。よろしくお願いします。
みんカラ新規会員登録

ユーザー内検索

リンク・クリップ

WRXフェンダー換装参考価格 
カテゴリ:その他(カテゴリ未設定)
2025/07/30 23:25:53
[ロータス エリーゼ]自作 Racechronoを活用したデータロガー概要 
カテゴリ:その他(カテゴリ未設定)
2025/07/05 09:38:43
[スバル レヴォーグ] CVTシフトノブの交換方法 
カテゴリ:その他(カテゴリ未設定)
2025/04/19 01:52:16

愛車一覧

マツダ ロードスター マツダ ロードスター
税金が高くなる年式になりました
スバル レヴォーグ スバル レヴォーグ
家族がレヴォーグに乗っています。
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation