ELM327 OBD2スキャンツール for Android & PC (Bluetooth)

OBD2調査-2 OBD2スキャンツール:ELM327
前回に続き、今回はOBD2から実際に情報を読み取る機器「OBD2スキャンツール」についてです。

OBD2から情報を読み取る機器はいくつか存在しますが、一番安く、使いやすく、かつ入手しやすいのが下記タイプの「ELM327 OBD2スキャンツール」です。

BD2スキャンツール:ELM327

ELM327自体はカナダのElm Electronics社が開発している「OBDインタプリタIC」で、”OBDポート<—>シリアル通信”の橋渡しをします。
これを用いることでOBD2を簡易的に扱うことが可能です。現在はこれにUSBやBluetoothモジュールを付加した形のアダプタが販売されており、安く手に入ります。
上の画像のものはBluetooth版(Android向け)で、価格は3,000円以下でAmazonにて購入可能です。
[ ELM327 OBD2スキャンツール for Android & PC (Bluetooth) ]

 

動作テスト

– OBD2シミュレータ(ECUsim2000, 車のOBD2の代わり)
– ELM327 OBD2スキャンツール Bluetooth版

上記が揃いましたので、早速OBD2の情報取得テストを行ってみます。
Bluetoothのクライアントには、ひとまずBluetooth機能付きのPCで試します。

< 手順 >
(0. Bluetooth機能付きPCを一台用意。teratermをインストール済。)
1. OBD2シミュレータのコネクタとELM327(BT版)を接続。
2. OBD2シミュレータの電源を入れる。

 

DSC_0262
3. PC側でBluetoothデバイスを検索。「OBDII」でデバイス表示されるので接続。
4. teratermを起動し、シリアルポート接続。
手元のトライでは、「COM3: Bluetooth リンク経由の標準シリアル」で繋がりました。
5. teratermの「設定」→「端末」の改行コードを、受信側はAUTO、送信側はCRで設定。
6. コマンド実行
(1) リセット (対:ELM327, コマンドは”AT Z”)
——————————-
>at z                   // 送信コマンド, 最後に「Enter」

ELM327 v1.5       // 受信内容
——————————-

(2) プロトコルをAutoにセット (対:ELM327, コマンドは”AT SP 0″)
——————————-
>at sp 0
OK
——————————-

(3) 現在の設定プロトコルを表示 (対:ELM327, コマンドは”AT DP”)
——————————-
>at dp
AUTO
——————————-

(4) 車速度の値を取得 (対:OBD2, コマンドは”010D”)
——————————-
>010D
SEARCHING…
41 0D 00
——————————-

(5) シミュレータ基板の車速度のノブを少し動かし、再度4を実施
——————————-
>010D
41 0D 2E
——————————-

上手く値を取得することができました。

< 説明 >
まず(1)~(3)にて、ELM327に対するコマンドを実行しています。(ELM327の設定)
ELM327へのコマンドは”AT”から開始されます(大文字/小文字関係なし)。コマンド一覧については下記参照。
[ ELM327 Data Sheet ]
http://elmelectronics.com/DSheets/ELM327DS.pdf
(P.9~)

(2)でAutoを設定することで、最初のOBD2コマンドを送信した際にプロトコルを自動検知してくれます。

次に(4)~(5)にてOBD2に対するコマンドを実行し、実際の値を取得しています。
送信コマンドはOBD2のPID(Parameter ID)そのままです。
(PIDについてはこちらを参照)
最初の2桁はModeを表し、’01’は「現在の値を表示」を意味します。
後ろの2桁はPIDそのものを表し、’0D’は「車速度」を意味します。

受信データの最初の2バイト(’41 0D’)は送信コマンドのエコーで、「Mode 1, PID 0D」を意味します。
次の1バイトが車速度値を表しています。’2E’は10進数で46。つまり46[km/h]です。

< 追加 >
続けて、他の4つの値もテストしました。(いずれもノブを適当に動かした状態)

(6) 冷却水温度の値を取得 (対:OBD2, コマンドは”0105″)
——————————-
>0105
41 05 46          // ’46’=70, 70-40=30[℃]
——————————-

(7) エンジン回転数の値を取得 (対:OBD2, コマンドは”010C”)
——————————-
>010C
41 0C 43 74     // ’43 74’=17268, 17268÷4=4317[rpm]
——————————-

(8) O2センサー電圧の値を取得 (対:OBD2, コマンドは”0114″)
——————————-
>0114
41 14 61 80      // ’61’=97, 97÷200=0.485[V]
——————————-

(9) エアフロセンサーの値を取得 (対:OBD2, コマンドは”0110″)
——————————-
>0110
41 10 7F 37      // ‘7F 37’=32567, 32567÷100=325.67[g/s]
——————————-

いずれも値の取得が確認できました。

ELM327総評

ELM327を利用するとかなり簡単に値取得可能なことがわかりました。
OBD2側のプロトコルをELM327が吸収し、ユーザ側にシンプルな形で通信を提供してくれます。
またBluetooth付きのものを使えば余計な配線も不要で、スマホ(Androidアプリ)でも値取得可能です。(この辺は次回。)
ユーザにとっては利用の幅が広がると思われます。

但し、いろいろ注意する点もあります。
そのうちの一つとしては、この「ELM327 OBD2スキャンツール」ですが残念ながら少し壊れやすいようです。。。
(特に変なコマンドを送ったりはしていないつもりだったのですが、先日1個壊れました。)
ネットを見ていてもいろいろ良くない噂も見られます。やはり「安かろう悪かろう」なのでしょうか。このあたりもう少し良い製品になれば嬉しいのですが。

アクティHA34年式キャブ車暖機後エンスト