OBD2調査-2 OBD2スキャンツール:ELM327
前回に続き、今回はOBD2から実際に情報を読み取る機器「OBD2スキャンツール」についてです。
OBD2から情報を読み取る機器はいくつか存在しますが、一番安く、使いやすく、かつ入手しやすいのが下記タイプの「ELM327 OBD2スキャンツール」です。
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シミュレータの電源を入れる。
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個壊れました。)
ネットを見ていてもいろいろ良くない噂も見られます。やはり「安かろう悪かろう」なのでしょうか。このあたりもう少し良い製品になれば嬉しいのですが。