2016/04/22

R1200GSのCAN BUSデータ読み出しツール作成

Arduino(マイコンボード)を使って、自分のバイクのCANバスを流れるデータを読み取るツールを製作しました。

ノートPCを繋げて16進数としてのデータをさせるところから始めて、、その後、小型のTFT液晶ディスプレイにデータの意味も含めて表示させるところまで出来ました!


動画でどうぞ。 (字が小さいのである程度大きな画面表示でご覧下さい。十分に高い解像度でアップしてあります。)

以下、上記 動画からの切り出し画像が中心ですが、、、

バイク(BMW R1200GS)の基幹CANバスのコネクタから信号線を引き出します。
コネクタのピン配置はこうなってます。



Arduinoマイコンの自作プログラムで CANのデータをリアルタイムに読み取ります。

表示は 2.2インチの小さなTFT液晶ディスプレイです。

こんな感じで、CANデータを読み取って表示させています。

ハードウェア的なデータ読み取り処理はリアルタイムですが、使っている液晶ディスプレイの描画速度が遅いため、表示のところで小細工しているので、使わずに捨てているデータもあります。(^^;


具体的な表示項目を一覧にするとこんな感じ。
Throttle スロットル開度 0-100% RPM エンジン回転数 rpm
Clutch クラッチ ON / OFF Kill SW キルスイッチ KILL / RUN
Stand サイドスタンド UP / DOWN Brake ブレーキ F / R / Non
ABS SW ABSスイッチ ON / OFF ABS ABSモード ACT / INACT
Light ハイビーム LOW / HIGH Turn ウインカー L / R / HZRD
Front 前輪速度 km/h Trvl 前輪走行距離 m
Rear 後輪速度 km/h Trvl 後輪走行距離 m
Gear ギヤポジション 1,N,2,3,4,5,6      
Fuel 燃料残量 0-100% Info SW INFOスイッチ ON / OFF
G Heater グリップヒーター OFF / L / H Od オドメーター km
Clock システムクロック sec Ambient 周囲明るさ DARK / LIGHT
Air 吸気温度 Eng. エンジン温度


CANデータの解析とプログラムのデバッグ用として、CANバスを流れるデータを16進数で表示させる「ダンプモード」を作り込んであります。
というか、このモードを先に作って、それぞれのデータの意味付けを解析したわけです。

海外のBMWバイク愛好家のforumや GitHub上の情報、および自身によるデータ解析の結果、ウインカーやギヤポジショ­ンなどの簡単で分かり易い情報はバッチリ読み取りに成功しましたが、、、
実は、何を表しているか不明なデー­タもいろいろ見えています。

また、きっと流れているはずなのに、どのデータがそれを示しているか発見できていないものもあります。

ちなみに、このArduinoマイコン側から CANに任意のデータ(コマンド)を流し込むことも簡単にできるのですが、、、どんなコマンドがどのような意味を持つのか、という情報を、今のところ一切持ち合わせていないので、まったく実験していません。
ランダムに試すような実験はとても怖いので。。。

もし、送出コマンドに関する情報が得られれば、試してみたいとは思っていますが。(^^;;;


2 件のコメント:

  1. こんにちは。
    私もDucatiでCANをモニターしようとしているのですが、うまくいきません、、、
    車ではモニターできたのですが、バイクで取得できないのはビットレートが違うからでしょうか。
    ビットレートはオシロで確認するしかないのでしょうか?
    ちなみに私は、ラズパイとmcp2515でやっています。

    返信削除
  2. Saludos desde España, gracias por hacer algo así me ha demostrado que yo también puedo. He seguido su conexión eléctrica y mi modelo 1200 gs 2007, cuenta con la conexión eléctrica gnd 12v invertida. por si a alguien mas le puede valer esta información. Un saludo

    返信削除

コメントやチャチャ入れ大歓迎です!