プロモーション画像180x120

【長文注意!この文章、時系列がちょっと違ったりもしますがw、内容は事実です!?(;´∀`)】

このブログを辿ると分かる?と思いますが、ず~っと前からOBDのアプリを作るために色々とやってきました。
2011年の夏からですから、かれこれ2年半!ビックリですね。(^_^;)
で、なぜ!?完成までに時間が掛かったかと言うとOBDが意外と奥が深かったと言う事と、Androidの開発が面倒でWindows Phoneに浮気をしていたから(笑)。(まぁ時間も無かったのですが…)
途中、Windows PhoneでGPS Logger-san!と言うGPSのロギング&メーターアプリを作って、GPSおよび距離、各種単位(時速、秒速、キロ、マイル等々)などを学んで、Nexus7の発売と同時にAndroidに舞い戻りOBDアプリを作りつづけました。
それで、OBDの何が?大変だったのか?ぶっちゃけ言うと全部ですw
最初は、OBDコマンドを掲載しているWikiを見て、ただの通信じゃん!簡単ジャン!と思っていたのですが、間違いでした。

まず、これらを制御する代表的なチップELM327を習得することが必要だったのです。
幸いな事にこのELM327チップは、データシートが公開されており英語さえ分かれば!どうにかなります。

ただし、、、このELM327って中国産(など)のパチ物が多く出回っており、そのパチ物を使ったELM327デバイス(ドングルってやつね)が、ほぼ全てなんですw
pic01 pic04
※↑こう言うのね。同じ見た目でも中身が違うのがあるのよ

そして、それらが微妙に違っていたりするんですよね。ちょっとした通信のタイミングで動作したりしなかったり。さらにちょっと間違ったコマンドを送ると機器が壊れたりw(2つ壊しました)。それと同じパッケージデザイン(商品)でもそのパチ物ELM327が違っていたりするんですよ。このデバイス前に動作したじゃん!って思っても動かなかったりするんですね。
まずは、その互換性を維持するのが大変だったんです。よってELM327デバイスを売っているamazonのレビューで動かない!とかってコメントが結構あったりしますが、そもそも使ったアプリでぶっ壊したか、アプリの互換性が無いかだと思います。(怖わ~~~~~)

そしてその次に、動かない原因は、、、OBDの通信規格が一つだけじゃないって事!
OBDは規格として一つなんですが、その通信が通常のものと、日本車などで独自に定義しているK-LINEだったり、その他もろもろだったり、するわけです。そのK-LINEですら、トヨタ、ダイハツ、スズキとメーカー別に多種多様・・・。これらの情報は、ネット上には多分どこにも出ていないと思います。各メーカーごとの極秘情報だったりするんでしょうね。(^_^;)
とりあえず、天下のトヨタに電話して教えてください!と言ってみた事もありますが、NGでしたwww

で、どうしたか?と言うと、、、秘密です。(;´Д`)
え~~~~、何で!と言われそうですが、地道な調査&解析と、知り合いの知り合いなど、伝手をたどって一部情報を教えてもらったりと、とっても大変な作業でした。(まさかレーシングカーを作っている方を紹介してもらえるとは思ってもいませんでしたが・・・)
こんなにも大変だった情報をハイそうですか!って教えるわけには行きませんし、そもそも他の人から教えてもらった情報を教えるわけにもいきません。それらを加味してご了承ください。
※スズキのK-LINE通信だけは、あまりにも他規格と違いすぎて、対応しきれませんでした。スズキの旧車種をお持ちの方、申し訳ないです。要望が多ければ対応しない事もないけど、、、たぶん居ないだろうなぁ~。

それから、自分クルマを馬鹿みたいに2台も保有しておりますw
運が良かった!?のがその2台でOBDの通信が微妙に違っており、開発するのに比較が出来て非常に都合が良かったです。
最初は、開発の為に何時間もエンジンをかけっ放しにして燃料を無駄にしつつ、それから何百キロもテスト走行。何か用事があれば良いのですが、無い時は無駄?な走行をしてチェックと、最初のころは「何やってんだ」って思いながら作ってました。
(途中からクルマに接続しなくてもある程度は、開発出来るようなシステムを組みました!)
そしてこの2台に対応してから、ちょっとネットを徘徊してOBD関連で他のアプリ(某有名なtorqueですね)が動作しない方をピックアップして、テストを依頼お願いできないか?と連絡させてもらって、色々と実験して頂き本当に助かりました。個人じゃ何台もクルマ持っていませんからね。本当に有り難かったです。

と、、、ここまでが導入編(通信)です。
(取り留めのない話でスミマセン。勢いで書いてますw)


その後に機能を入れていくんですが、OBDのコマンドを見ても走行した距離や燃費などまったく定義されていません。
そう、その他いろんなコマンドを組み合わせて、燃費だったり距離だったりを計算していくんです。
こちらのサイトの方が、燃費を導き出す計算式をだしてもらっていますが、これだけじゃ正確な情報は取れませんでした。
その他にもエンジンの状態やアクセルの状態など、あれやこれやと色んな情報を加味しないとダメでした。
(ダメと言うよりは、正確じゃないって事ですが。ある程度の情報は上記URLの式で出ます)
更に一番重要なMAF値がサポートされていない車両が多いです。よってこの計算式の前提は大崩れしちゃうんですよ。

そして、接続する車両(メーカーではない!)によって、通信速度(反応)が違う事。コマンドをリクエストして戻ってくるまでに、とにかく速いのと遅いのが入り混じっている。速いのだと100msもせずに反応が返ってくるんだけど、遅い車両だと250ms以上!かかったりしする。それのどこが悪い?のかって事だけど、通常1秒間に10コマンド取得できるのが4つ位になっちゃうとタコメーターなどの反応が遅くてガックガク(ガタついた動作)になっちゃう。
※他のそれなりのOBDアプリのコメントで描画が遅い!とかってあるのは、繋いでる車両が悪い(遅い)から。。。アプリのせいじゃないですよ。車両のせいです!

ついでに燃費の計算もそれ(通信速度の差)を加味していかないと、だんだんとズレてきてしまいます。
※よってそれも大丈夫にする為に補正機能を付けました

で、見た目(描画)に戻って、それ(車両による通信時間差)をソフト的に補完する様な処理を入れられる様にしてはいるんだけど(オプションでON/OFF)AT車はそれなりに大丈夫?そうな見た目になるけどMT車はダメですね。粗が見えちゃいます。あと某Torqueは補完処理バリバリ入っています。よってMT車だとダメダメですわ。特にエンジンレスポンスの良い車両だと顕著ですw

それとですね、車両によりOBDのサポート外のコマンドを送信すると場合により暴走するのがありますw
特に通信速度の速い車両。たぶんエラー処理をきちんとやってないんでしょうね。その代償で速度が速い?と思ったりしています。
なので意味が分からずにELM327等のコマンドを送信するのはやめましょう。事故になったら本当にシャレになりませんよ。(*´Д`)


そんな感じで、色々と書いてみました。
OBDに関することはあまりネットに出ていませんが、色々と危ない事がある?んで知っている人は情報を出さないのかなぁ~って思ったりもしています。

と言う事で、個人の限界を大いに超えて作ったアプリ?何もかも根性で調べプログラムしていきましたw
互換性を無視すれば、それなりにすぐ出来たんですが、こだわりもあったので色々と根性出しました。
ただのプログラマー(クルマとは関係の無い業界)が、こんなにもクルマの制御に詳しくなってしまい自分でもビックリですが(笑)、これらの経験を生かして、もうちょっとOBD関連をやって行こうかと思っております。せっかく覚えた事ですからね。もったいないですw

PS.
自分に続く根性バカ!が出てきてほしいと思いつつ(笑)、このブログを書いてみました♪
OBDアプリ第2弾は、日本ではユーザーがほとんど居ないWindows Phone8版ですw w(^O^)w


CAP_20130106_173202

アプリは、こちらgoogle playで公開しています。
クルマ好きの方、宜しければインストールを!m(_ _)m