2015/01/25

FITでCAN・OBD2通信してみた(ELM327)

せっかくコネクタが出ているので、OBD2で色々つないでみることにしました。

いきなり自作に走るのも何なので、市販品を調べてみるとELM327という製品(チップ?)がよく出ているようです。アマゾンで1000円前後で買えますので、まあ失敗しても痛くはないということでポチってみました。



bluetooth版もありますが、PCに繋ぎたかったのでUSBにしておきました。

ELM327で検索すると「OBD2テスター」みたいな言われ方をしていますが、元々はチップの名前なのだそうで、ELM electronicsというところから発売されているようです。データシートもここにあります。

ネットで色々調べていたら、ELM327、実は中身はただのPICで、それにプログラムを書き込んだものをELM327チップとして売っているようです。凄い商売ですね。

1.PCと繋いでみる

まず実車には繋がずに、PCとELM327を繋いでみます。
このELM327は、上のデータシートを読むとわかりますが、ATコマンドのようなプロトコルでホスト・デバイス間で通信します。今回のUSB版のやつは、ホストとの間はUSBシリアルで接続されていて、シリアルポートでおしゃべりすることができます。

atz
atl1

などのATコマンドが通ったので、まずは大丈夫そう。アマゾンのレビューには「動かない」「壊れた」というコメントが多数登録されているので、少し心配でしたが。
ボーレートはデフォルトでは38400bpsなので、9600で話そうとすると文字化けします。

2. 実車とつなぐ

実車で繋いでみました。
TeraTermで接続しています。
atz/atl1を入力して、リセット・line feed onにしています。atrv(read voltage)で電圧を読むと12.1Vと帰ってきています。

ここで、おもむろに0100(Mode=1、PID=0)を入力してみました。
このPIDは、「サポートされているPID一覧を返却する」というものです。


SEARCHING...と出た後になんか帰ってきました!
ゴミでも読んでるのかとちょっと不安になりますが、41の4は「返却値」であることを示していて、次のバイト(00)は送ったものがそのまま帰ってきて構わないので、おそらく正しく応答されているのでしょう。データはBE 3F A8 03となっていますが、これも大体妥当そうです。

ただ、二行帰ってきていて結果が違っています。
これは後で色々調べたところ、FITの場合、複数の装置から二重に返却値が返ってくるようで、それで二つの結果が得られている、ということのようです。

詳しくは、pullup.netさんのページにいろいろ情報があります、というかこのページがなかったら、多分まともに使えてなかったような気がします。

3. アプリで見てみる

ELM327の添付CDには、ウィンドウズ用のアプリが色々ついてきます。ただ、キージェネレータがしれっと添付されていたり、怪しさ爆発です。アマゾンのレビューにも、ウィルスがいただのなんだの喧しいので、恐る恐るインストールしてみました…。

が、結論から言うと、どのアプリも全然ダメでした。
どうも正規版チェックに引っかかってエラーになったりと散々なことになってしまったので(今回購入したELM327は、どうも中華製のパチもんのようなのですが)、ウィンドウズ上のアプリで操作する方向はとりあえず放棄しました。


0 件のコメント: