ED BMSdiag – Arduino CAN-BUS & OBD-II 診断キット
部品と用品
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| SparkFun CAN-BUS Shield | 1 | |
| Male-Header 36 Position 1 Row Long (0.1") | 1 | SparkFun CAN-Bus Shield用 |
| SparkFun OBD-II to DSUB-9 ケーブル | 1 | 海外メーカー向け |
| OBD-II to DSUB-9 ケーブル | 1 | ドイツ/欧州メーカー向け |
| CANdiy-Shield v2 CAN-Bus Shield | 1 | IO電圧 3.3V/5V 切替可能、3.3Vボードでも使用可 |
| Arduino用ケース | 1 | Arduinoストアでは在庫切れ、一部ディストリビュータで入手可能 |
アプリとオンラインサービス
- Arduino IDE
このプロジェクトについて
目的
私は電気自動車(Smart fortwo electric drive)に乗っています。駆動用バッテリーの健康状態はバッテリーマネジメントシステム(BMS)によって維持され、充放電時に全93セルを監視し、電圧バランスを均等に保っています。通常、このECUから情報を読み取れるのはサービスツールのみです。
車両にはGSMモデムが搭載され、充電状態(SOC)、航続可能距離などの基本データにアクセスできます。一時的に拡張モードで診断情報を収集していたため、CANバスをスニッフィングして送信内容を調べました。
日産リーフなど他のEVで同様のプロジェクトに触発され、走行中や充電中のCANバストラフィックを全て記録しました。最初に取得したストリームには確かに診断データが含まれていましたが、どうデコードすればよいのでしょうか?
CANバスのスニッフィングとリバースエンジニアリングの詳細は、別記事で解説しています。
必要なもの
現代の車では物理層にCANバスが使われています。少なくとも2種類のCANバスシールドが入手可能です(部品リスト参照)。車両の診断ポート(OBDコネクタ)に接続するため、ケーブルを購入するか自作してください。注意:OBD-DSUB9ケーブルには2つの規格があります。正しい方を選んでください。 以下の写真を参照してください。




自作する場合、古いツイストペアLANケーブルを利用すると良いでしょう。対になった線の1組をCAN-HとCAN-Lに割り当てると信号品質が向上します。また、ケーブル長は1m以内に抑え、信号反射を最小限にしてください。
始め方
ステップ1:ハードウェアの準備とケースへの収納
ステップ2:ソフトウェアのダウンロードと書き込み
GitHubリポジトリからプロジェクトをダウンロードし、詳細なインストール手順に従ってください。コードをコンパイルしてArduinoに書き込みます。
ステップ3:車両への接続と診断開始
車両に接続し、電源を入れます。診断セッションを開始して、バッテリーパックの有用な情報を取得します。


ステップ4:データ分析
スプレッドシートソフトを使って相関データを見つけます。例えば、ダッシュボード表示のSOCとBMSからの実SOCを比較したり、セル電圧をプロットして充電時にどのセルが最初にカットオフ電圧に達し、パック全体を制限しているかを確認したりできます。


ステップ5:機能拡張と独自開発
コードを改良して自分なりのハックを加えてください。SparkFunシールドにはSDカードリーダーが搭載されているため、独自のCANバスロガーを構築できます。また、データを表示するフロントエンドやアプリを開発するのも良いでしょう。
このツールがお役に立てば幸いです。Enjoy!
コード
ED_BMSdiag Arduino ソフトウェア
https://github.com/MyLab-odyssey/ED_BMSdiag.git
回路図
SparkFun CAN-Bus Shield用
CANdiy-Shield用
製造プロセス
- ILI9341 2.4インチTFTタッチシールドでのビットマップアニメーション実装ガイド
- Web制御DMX照明システム:Arduino Megaマスターコントローラー
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- HSVクロック:Arduino愛好家向けの鮮やかでカスタマイズ可能な時計
- Android加速度センサーで操作するラジコン車両:Raspberry Pi・Arduino・モーターシールド連携
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作