2016年4月12日火曜日

ODB2 + Bluetoothで、車から各種情報を取り出すことが可能

まだ備忘録ですが。
※2014年あたりに実施した記事が下書きのまま残ってたのですがここにきて公開。
※価格等は当時のものです。

カーナビやデジタルタコメータなど、車から発信される各種信号を元に
データとの組み合わせで製品を構成しているものは多々あります。

そんな情報を、自分で思うように取り出してみよう。と思いました。


【用意したもの】

1) OBD2 の信号をBluetoothで取り出せるアダプタ (ELM327内蔵)
2) Androidスマートフォンおよびタブレット (いずれもAndroid 4.x系)
3) 車 (1台だとおもろくないので2台)
4) パソコン(Windows8搭載、Windows7のブートも可能) および、Bluetoothアダプタ

【結論】
・結構簡単にできます。
・車のメーカー、車種、販売開始時期により、取得できるデータはバラバラ。
・Bluetooth通信は、ペアリングでうまくいかないときがあるので、
 PCとかで通信を試みるなら、有線ものがお勧め。(USBとか232Cとか)


【詳細】

・使ったアダプタについて
 複数用意しました。
 これは、各方面いろいろ情報を調べていると、「壊れやすい」「当たりはずれがある」「同梱CDにはウィルスがある」など不安定、不確定要素満載だったためです。


 左から 1,000円、1,000円、4,500円 いずれもAmazonです。 obd2で検索すればヒットすると思います。
 最後のだけ高いのは、日本の会社から出荷、アプリがセット、到着までが早い。(1日でした)という理由で、残りの2つは海外からの直送、到着までに10~20日ほどかかるというのが理由です。

 また、ウィルスがどうこう言われているもの、海外直送の安いものです。(私の所では検出しませんでしたので時期にもよるのかも ⇒ 複数のウィルスソフトで検出なし)


・Bluetoothで接続 (Android編)

 先述のとおり、Android4.x系です。
 まずはアプリ同梱の製品を試してみました。
 ・ステップワゴン (DBA-RK1) ⇒ ほぼ OK
 ・カローラ (型忘れました 初年度登録 2004年) ⇒ ほぼNG

 使ったアプリは、OBD InfoSan! というものですが、ステップワゴンでは各種情報が画面へ出てきたのに対し、カローラではほぼ無応答でした。(唯一バッテリー情報が取れたので接続はできたのだと思います)

 他の無料アプリもいろいろ試したのですが同様でした。
 どうやら、カローラでは検証できないようです。

 ちなみに、この記事を書いている時点で、ステップワゴン + 他のODB2機器の組み合わせは試せていません。


・Bluetoothで接続 (PC編)

 PCとBluetoothでペアリング。そして、PCで使えるアプリを幾つか入手して試してみました。
 現在継続中ではありますが、入手可能なアプリはバージョン違いによって動かなかったり、
 アプリが動いても [ELM327が正規品ではないですよ」というメッセージが出たり(ScanTool.net for Windows v1.21)
 ダウンロードまではできたけども、英語で、かつライセンスを求められて挫折したりと、

 結果、入手可能なアプリはいずれも今現時点動いていません。
 
 そのなかにWindows7じゃないと起動すらしない。ってものもあったりして、結果
 PCにおける検証はほぼWindows7でやっていました。

 たぶんWin8でも行けるんでしょうけどね。

 メインであれこれ検証していたのがカローラ。ってのもあって、なかなか進まない。
 とはいえ進めないといけないので、えいや。とアプリを作ってみる事にしました。


・アプリを作ってみる。

 今回使っているハードウェアの仕様としては

 PC (またはAndroid) <-> ELM327 <-> CANインターフェース (OBD2プロトコル)

 という構成のため、ELM327のコマンドを理解すれば良さそうです。

 ELM327は、データシートが公開されてます。これを理解すればOK
 http://elmelectronics.com/DSheets/ELM327DS.pdf

 また、ELM327の一部では、ODB2プロトコルを直接使えるとの事なので、以下を使えばOK
 http://en.wikipedia.org/wiki/OBD-II_PIDs#Standard_PIDs


 結果、PCアプリとして簡単に機器と通信できるものを作成して、以下のことまでは
 できるようになりました。
 スクリーンショットなど、いいものは用意してませんでした。。。


 ※先述の、カローラでの試行状況です。

・Bluetoothインターフェースを経由して、機器への接続 ⇒ OK
 ・[AT Z]コマンドを投げて、結果をもらう。 ⇒ ELMのバージョンが返ってきます。 OK
 ・[AT RV] コマンドを投げて、ボルテージを返してもらう ⇒ OK
 ・OBD2コマンド を投げて、[CAN ERROR] が返ってくる ⇒残念

 結果、全ては試せていませんが、ELMのコマンドは受け付けたようです。
 OBD2コマンドは、数値2桁 + 数値2桁で投げるようですが、間にはスペース要です。
 また、CRが必要です。


遊びでやるにしても、なかなか時間がかかりそうです。

暫く継続しそうなので続報あればまた纏めたいと思います。



0 件のコメント: