Home > Auto > | CAN > | Device > | OBD > | Programming > | Technology > CANUSBを使ってRX-8の各種データを取り出してみる

CANUSBを使ってRX-8の各種データを取り出してみる

rx-8_gear_snip-2.jpg

前回のエントリまで使っていたELM327チップですが、どうも全てのデータのログを取ろうとするとバッファが溢れてしまうようで...。ただせっかく乗りかかった船なので、CANUSBという代物を購入してRX-8のデータをリアルタイムに取り出してみることにしました。

上記の画像においてグラフの意味は以下の通りです。

  • 赤 線:車速
  • 青 線:エンジン回転数
  • 紫 線:ラジエータ水温
  • 水色線:エアインテーク温度
  • 黄色線:アクセル開度
  • 赤領域:フットブレーキを踏んでいる
  • 青領域:クラッチが切れている
  • 緑領域:(高さに合わせて)ギアポジション

CANはまぁここでは車内LANのようなものだと考えておけばいいと思います。自動車内のコンピュータとその他センサや計器類との間で情報をやり取りするときのプロトコルなのですが、特徴の一つはブロードキャストだということです。 なので、OBD-IIのようにポーリングしてデータを取り出すのと違い、ネットワーク内を流れているデータであれば「盗み聞き」することができるため、車内コンピュータへの負荷が(おそらく)ありません。 コンピュータに負荷がかかった場合にもおそらくフェイルセーフが働くとは思いますが、心理的な負担がこちらのほうが少ないですね。

CANUSBは、LAWICEL社が販売している、CANデータアクセス用のケーブルです。コンピュータからはFTDI社のUSBシリアル変換コネクタが刺さっているように認識され、実際にシリアル接続でデータを取り出すのでMac、Windows、Linuxのどれからでもデータを取り出すことができます(LAWICEL社のページにはWinとLinuxしかドライバへのリンクがありませんが...)。 日本ではcompass lab.で取り扱っているようで、海外で買うのと値段も変わらなかったためこちらを利用しました。

ただこのCANUSB、車へ接続する側のコネクタが、いわゆるシリアル通信で用いるD-SUB9ピンで、実際のOBD互換のコネクタと合いません。そのためコネクタを購入あるいは自作する必要があります。

OBD2CABLES.COMでは片側がOBD-II端子、片側がD-SUB9ピンのケーブルを売っています(たとえばこれとか)。 値段は10ドル程度で、一般的なシリアルケーブルなどとたいして変わらないのですが、これを日本へ送ってもらおうとすると送料が30ドルくらいかかってしまい馬鹿馬鹿しいです。

そのため、自分はこちらのページを参考に自作しました。ただ、こちらもなんだかんだいって2000円くらいかかってしまうので、複数本数を同時に買うのであれば海外から取り寄せた方が安いかもしれません。

さて、ケーブルをつなげば後はシリアル通信なのでデータを解析するだけの簡単なお仕事です。海外には奇特な方がいて、これらのデータを既に解析して公開してくださっている方がいました。 これを先に見つけていたので、ケーブルが自作できれば後は余裕だろうと思っていたのですが...。なんと、自分の車に流れているパケットと雰囲気が違う様子。向こうの車がAT車だからなのか、それとも海外仕様だからなのか分かりませんが、結局自分で全部解析する必要にかられました...。

ま、そんなこんなですが、一応上記のグラフのようなものが書き出せるまでになりました(3日かかってしまった...)。 なお、上記のうちギアに関しては、エンジン回転数と車速から割り出しているものです。こちらもデータが取れるだろうと思っていたのですが、どうも見当たらなかったため、計算によって推定しています。

以下、もしかして自作したい人がいるかもしれないのでメモ(ただし、当然ですがこれを参考に自作アプリを作って、最悪車が暴走しても自分は責任負いませんのであしからず...)。

  • RPMは、ID 0x201の(data[0] * 256 + data[1]) / 4
  • Vehicle Speedは、ID 0x201の(data[4] * 256 + data[5] - 10000) / 100
  • Accel Throttle Positionは、ID 0x201の data[6]
  • Hand Brakeは、ID 0x212の(data[4] & 0x40)
  • Foot Brakeは、ID 0x212の(data[5] & 0x08)
  • Declutchingは、ID 0x231の(data[0] & 0xf0) //4ビット全部立つ
  • Engine Coolant Tempは、ID 0x240の data[3] - 40
  • Intake Air Tempは、ID 0x250のdata[3] - 40

他にもハンドルの回転角度が分かったりすると面白いのですが(海外のものだと分かっているのですが)、右側に舵を切っているか、左側に舵を切っているかは分かりそうなのですがそれ以上に詳しい角度などはちょっと分かりません。あっても良さそうですけどねぇ。

上記の図だといまいち温度まわりの動きが分かりにくいかもしれませんが、エンジンをかけ始めてログをとり、ぐるっと走って戻ってくるまでのデータをグラフにすると、次のようになります(上の図は、その最後の部分)。

rx-8_gear_all-2.jpg

この図を見ると、水温がぐんぐん上がっていっているのが分かります。また、スピードを出すと微妙にエアインテークエアの温度が下がり、それによって水温もちょこっと下がることがある、というのも見て取れます。

はてさて、これをどのように加工して使うか、それが問題だ。

Comments:0

Comment Form

Trackbacks:1

TrackBack URL for this entry
http://blog.hiroaki.jp/mt/mt-tb.cgi/454
Listed below are links to weblogs that reference
CANUSBを使ってRX-8の各種データを取り出してみる from Hirolog
CANで盗め!! from また脱輪してもた・・・ 2010-02-23 (火) 23:29
mixiを徘徊してたら、おもしろいものを見つけました。 キャンバスに接続して、いろんなデータを取る方法です。 っというか、これ超欲しいんですが(笑...

Home > Auto > | CAN > | Device > | OBD > | Programming > | Technology > CANUSBを使ってRX-8の各種データを取り出してみる

Search
Feeds

Return to page top