2015年8月30日日曜日

ELM327を使ってArduinoをOBD2に繋いでみた。

だいぶ前に買ったOBD2 ScanっていうOBD2のBluetoothアダプタを改造してArduinoを繋いでみた。
裏側からBluetoothモジュールが透けて見える。HC-05かな?
このアダプタはELM327とBluetoothシリアル変換モジュールを組み合わせたもののよう。
ATコマンドでELM327のバージョンを調べるとv1.4bの模様。
最近はもっと小型のアダプタが出てて、バージョンも2.1らしいんだけど、対応車種減ってるとかで…

分解するには表面のシールを剥がす必要がある。カッターで軽く持ち上げてネジ4つを緩める。
結構ケーブルが雑…
裏面にはBluetoothモジュール、表面はELM327なんだけど実はPIC18F2480。さすが中華製。
BluetoothモジュールはHC-05もしくはHC-06かな?

Bluetoothモジュールはシリアル通信用なのでこいつをはがせばELM327と直接通信できる。
 BluetoothモジュールはVCCとGNDとTXとRXしかハンダ付けされてなかったのでさくっと外れた。ELM327は5V駆動でHC-05は3.3V駆動なのにレベルコンバーターがついてない…
5Vトレラントなのかな…
それはさておき、Arduinoと接続するために5VとGNDとRXとTXを取り出してみた。

ATコマンドなので比較的簡単にArduinoとやりとりできそうなんだけどELM327用のライブラリがあったので使わせてもらった。
というかFreematicsってところが出してるOBD-II Adapter for Arduino用のライブラリがそのまま使えた!
まぁModel Aは今回作ったものとほぼ同じものだろうし。ケースも同じっぽいし…

とりあえずArduinoにLCDモジュールを乗っけてテスト用に…
どうもFIT RS(GE8)で認識しない…
やはりライブラリはFreematicの製品専用なのかなーと思って眺めてみると中身はELM327と通信できるように作られてるだけでバージョン判定とかも全くしていない模様。
ELM327の方を疑ってみるとどうやらプロトコル自動判別が微妙らしい?
という情報を入手したのでプロトコルを手動選択にしてみた。
GE8はCAN 500Kbps/29bitのようなので、ATコマンドでATSP7で行けそう。
ATCVコマンドで電圧補正もかけといた。
とりあえずエンジン回転数を表示するテスト。
AndroidからBluetoothで接続してTorque使うより断然レスポンスが良い。
OBD2自体はだいぶ通信速度速いのねぇ(車種による
まぁOBD2につなぐ本格的なメーターも出てるぐらいだしね(すげー高いけど
ちなみに今回のOBD2のアダプタとArduinoとLCDで3k円ぐらい。
ELM327 v2.1(のパチモン)だとだいぶ安いけどどうなんだろう…

と、言うわけでひとまずArduinoでOBD2の情報読み出せるようになった
ELM327の自動認識微妙だなぁ
Arduino側で自動認識実装するしかないのかなぁ。
そういやELM327より高性能なSTN1110っていうICも出てきてるみたいなんだけど
高そう。

0 件のコメント:

コメントを投稿