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

hir015の愛車 [マツダ CX-3]

整備手帳

作業日:2024年1月6日

DPF関連表示システムの車載(M5Stack + RaspberryPi + OBDLink EX)

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

目的 チューニング・カスタム
作業 DIY
難易度

中級

作業時間 12時間以上
1
これまではTorqueProスマホを車載してDPF関連の情報を表示させていました。いつ頃DPF再生されそうか、タイミングを見るのに重宝していました。

一方でバッテリーを搭載しているので万が一発火したりするのではないかと最悪の事態を想定して心配していました。車に載せっぱなしでも問題ないシステムを検討していましたが、この度M5Stackとラズパイ、OBDLink EXを使ったシステムが構築できましたので、車載しました。

かなり時間がかかってしまいましたが、画像のようなシステムを作ることができました。
2
従来のTorqueProスマホになります。今回のシステムを作ってみて、TorqueProは素晴らしいアプリだなと改めて感じました。
3
システムを作るにあたって、TorqueProアプリ内で見られるPIDのリストと計算式などの情報を記録し、欲しい情報を厳選しました。

RaspberryPi内のPythonプログラムで利用したいので、dict形式で定義しておきました。

以下は現行システムより古い情報かもしれませんが、Excelシートで作成したものになります。

can_data = {
"Coupling Solenoid Duty Cycle":{ "command_arbitration_id":"761","response_arbitration_id":"769","response_match_pattern":"04621E7A","command_data":"03221E7A00000000","unit":"%","formula":"A*100/255","label":"COUP_SOL"},
"Battery Estimated State of Charge":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"04624028","command_data":"0322402800000000","unit":"%","formula":"A","label":"BATT_SOC"},
"Battery Fluid Temperature":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"04624029","command_data":"0322402900000000","unit":"℃","formula":"A-40","label":"-"},
"DPF Lamp Count":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"05620433","command_data":"0322043300000000","unit":"-","formula":"A*256+B","label":"-"},
"DPF PM Accumulation":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"0562042C","command_data":"0322042C00000000","unit":"g/l","formula":"(A*256+B)*100/65536","label":"DPF_PM_ACC"},
"DPF PM Accumulation Desired":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"0562044B","command_data":"0322044B00000000","unit":"g/l","formula":"(A*256+B)*100/65536","label":"-"},
"DPF PM Generation":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"0562042D","command_data":"0322042D00000000","unit":"g/l","formula":"(A*256+B)*100/65536","label":"DPF_PM_GEN"},
"DPF Regeneration Count":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"05620432","command_data":"0322043200000000","unit":"-","formula":"A*256+B","label":"DPF_REG_CNT"},
"DPF Regeneration Distance":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"07620434","command_data":"0322043400000000","unit":"km","formula":"(B*65536+C*256+D)*100/65535","label":"DPF_REG_DIST"},
"DPF Regeneration Status":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"07620380","command_data":"0322038000000000","unit":"ON/OFF","formula":"DPF Regeneration Status","label":"DPF_REG_STAT"},
"Oil Change Distance":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"05620519","command_data":"0322051900000000","unit":"km","formula":"(A*256+B)*4","label":"-"},
"Total Distance":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"0662DD01","command_data":"0322DD0100000000","unit":"km","formula":"A*65536+B*256+C","label":"-"},
"Fuel Level (From Engine ECU)":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"03412F","command_data":"02012F0000000000","unit":"%","formula":"A*100/255","label":"FUEL"},
"Intake Air Temperature":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"03410F","command_data":"02010F0000000000","unit":"℃","formula":"A-40","label":"-"},
"Engine Oil Temperature":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"03415C","command_data":"02015C0000000000","unit":"℃","formula":"A-40","label":"-"},
"Engine RPM":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"04410C","command_data":"02010C0000000000","unit":"rpm","formula":"(A*256+B)/4","label":"-"},
"Ambient air temp":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"034146","command_data":"0201460000000000","unit":"℃","formula":"A-40","label":"-"},
"Speed (OBD)":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"03410D","command_data":"02010D0000000000","unit":"km/h","formula":"A","label":"-"},
"Voltage (Control Module)":{ "command_arbitration_id":"7E0","response_arbitration_id":"7E8","response_match_pattern":"044142","command_data":"0201420000000000","unit":"V","formula":"(A*256+B)/1000","label":"VOLTS"},
"Lock Up":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"04621E24","command_data":"03221E2400000000","unit":"ON/OFF","formula":"Lock Up","label":"-"},
"Torque Actual":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"05621EE4","command_data":"03221EE400000000","unit":"N・m","formula":"(SIGNED(A)*256+B)/50","label":"-"},
"Torque Desired":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"05621EC7","command_data":"03221EC700000000","unit":"N・m","formula":"(SIGNED(A)*256+B)/50","label":"-"},
"Transmission Fluid Temperature":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"05621E1C","command_data":"03221E1C00000000","unit":"℃","formula":"(SIGNED(A)*256+B)/16","label":"-"},
"Run time since engine start":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"04411F","command_data":"02011F0000000000","unit":"s","formula":"A*256+B","label":"-"},
"Engine Coolant Temperature":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"034105","command_data":"0201050000000000","unit":"℃","formula":"A-40","label":"-"},
"Engine Load":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"034104","command_data":"0201040000000000","unit":"%","formula":"A*100/255","label":"-"},

"Gear":{ "command_arbitration_id":"7E1","response_arbitration_id":"7E9","response_match_pattern":"04621E12","command_data":"03221E1200000000","unit":"-","formula":"Gear","label":"Gear"},
}
4
ELM327とどのような通信をすればよいのかわからなかったので、Android上で開発者オプションを有効にして、Bluetoothスニファを有効にし、ELM327ドングルとの通信をキャプチャ、Wiresharkで解析しました。

最初はよくわからなかったのですが、Bluetooth経由でシリアル通信をしており、これがPythonプログラムを作る上で役に立ちました。

シリアル通信ならばと、有線接続のOBDLink EXを購入しました。

Bluetooth経由でELM327と通信しているようなネットの記事もあり、無線でもできそうですね。
5
RaspberryPiは好きで結構持っていたので、3Bを使うことにしました。基板用の防錆スプレーを吹いて、車載環境に耐えられるようにしました。

RaspberryPiとM5Stackは無線で接続することにします。ラズパイにはアクセスポイントになってもらいたいので、hostapdなど関係するアプリをapt経由で導入しました。ググって必要な情報を入手しました。

さらにデータの記録も行いたいので、USBメモリ内にEXT4領域を設けて、そこに保存するようにしました。EXT4であれば、ぶつ切りでも問題ないと判断しています。

きっちり動作することを確認したら、Overlayfsを有効にしてmicroSD側のシステムドライブもぶつ切りに耐えられるようにしました。
6
M5StackにはディスプレイとWiFiが付いていて、MQTTが使えそうだったので選びました。と言いますか、以前からM5Stackは知っていたので、今回のシステムの表示機能オンリーだったらできそうだなと思っていました。

Arduino IDEでコードを作成しました。データが更新されたら、画面外枠を緑に光らせて更新していることを知らせます。10秒間更新がなければ画面をブランクにして、RaspberryPiなどのシステムに問題が生じていることがわかるように作りました。

なお、車載のM5Stackはバッテリーを外しています。また、ラズパイと同様に防錆スプレーを吹いておきました。
7
最後に、Chatgptがなければ望むシステムがつくれませんでした。主にコードの生成で使いました。

この場を借りて御礼を申し上げます。そして、これからもお世話になります。

イイね!0件




タグ

関連整備ピックアップ

バーガンディ風

難易度:

レンチマークその他点灯

難易度:

マフラーカッターの取付け完了

難易度:

スカッフプレートの取付け

難易度:

ラジエーターキャップ取替

難易度:

レンチマークその他点灯

難易度:

関連リンク

この記事へのコメント

コメントはありません。

プロフィール

「[整備] #CX-30ハイブリッド 助手席側ドアの凹み修復(デントリペア) https://minkara.carview.co.jp/userid/2904827/car/3648762/8298468/note.aspx
何シテル?   07/13 22:39
よろしくお願いします。 車歴:ベリーサ→CX-3→CX-30

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

リンク・クリップ

フォグランプ取り付け 
カテゴリ:その他(カテゴリ未設定)
2025/07/02 23:21:07
純正 システムキャリアベース DGH9V3840 取付/取扱説明書 
カテゴリ:その他(カテゴリ未設定)
2025/04/19 15:33:14
エアコンフィルター交換&エバポ洗浄 
カテゴリ:その他(カテゴリ未設定)
2025/02/05 12:14:12

愛車一覧

マツダ CX-30 ハイブリッド マツダ CX-30 ハイブリッド
CX-3 1.5L ディーゼルから乗り換えです。 契約日 2024/09/23 到着日 ...
マツダ CX-3 マツダ CX-3
納車日:2017年7月30日 走行距離:2133km(納車時) ボディカラー:ジェットブ ...
マツダ ベリーサ マツダ ベリーサ
社会人1年目、親からベリーサを貰いました。 ルックス・乗り心地共に良く、気に入ってました ...
ヘルプ利用規約サイトマップ

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

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

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