TOOLS★つれづれ出張所♪プログラム開発情報(主にWindowsPhone!)を発信していま~す。́∀`)】このブログを辿ると分かる?と思いますが、ず~っと前からOBDのアプリを作るために色々とやってきました。2011年の夏からですから、かれこれ2年半!ビックリですね。Phoneに浮気をしていたから(笑)。Logger-san!と言うGPSのロギング&メーターアプリを作って、GPSおよび距離、各種単位(時速、秒速、キロ、マイル等々)などを学んで、Nexus7の発売と同時にAndroidに舞い戻りOBDアプリを作りつづけました。それで、OBDの何が?大変だったのか?ぶっちゃけ言うと全部ですw最初は、OBDコマンドを掲載しているWikiを見て、ただの通信じゃん!簡単ジャン!と思っていたのですが、間違いでした。これらを制御する代表的なチップELM327を習得することが必要だったのです。幸いな事にこのELM327チップは、データシートが公開されており英語さえ分かれば!どうにかなります。このELM327って中国産(など)のパチ物が多く出回っており、そのパチ物を使ったELM327デバイス(ドングルってやつね)が、ほぼ全てなんですw※↑こう言うのね。同じ見た目でも中身が違うのがあるのよそして、それらが微妙に違っていたりするんですよね。した通信のタイミングで動作したりしなかったり。間違ったコマンドを送ると機器が壊れたり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関連をやって行こうかと思っております。playで公開しています。18:36車検ついでに、ELM327でトラブルログが見れないか調査。11:14初めまして。OBDアプリ完成おめでとうございます。がんちさんのOBDアプリ完成待っていました。インストールしました。but、2003年型エブリイワゴンでは針が動きませんでした。(わかっていながら過度な希望をいだいてしまいました)今後も、アプリ・ソフトの作成頑張ってください。これからもブログ楽しみに拝見させて頂きたいと思います。16:19どうもこんにちわデス!2003年でもスズキ車は、K-LINEなんですね・・・(>_<)う~ん、どうしよう。スズキのK-LINEはプロトコルが特殊すぎて対応できてないです。23:40わざわざ有り難うございます。無理なさらなくてもいいですよ。少数派ですので・・・ちなみに、自分も同じメーカーのデジタルテスター使ってますよ。02:10少数派とは、、、なんか逆に恐縮です・・・。おうちは、どちら!?埼玉に近ければ、調べに行きますよ!)テスター同じメーカーで5~6年は使えてるんですね。良かった!で、本当に安くなりましたよね。09:12残念ながら、北海道でした。・゚・(ノД`)・゚・。(コメントダブってたら削除お願い致します。14:58はじめまして。OBD2で調べていたら、こちらに辿り着きました。私のクルマも残念ながらスズキのKeiなんで、最初は自分で作ったろかい!(一応Androidアプリの開発をやっているんで)とか思っていたのですが、この記事を拝見して、こりゃ無理だなと...、勉強になりました!しかしよく作りましたね〜執念の力作だと思います。いつの日かスズキ車にも対応されることを切に願っております...。00:56どうもこんばんわデス!Androidの開発やっているのでしたら、ぜひアホな仲間入りを・・・(^^;)で、、、Keiも比較的新しいと思っていましたが、K-LINEだったんですか!?むむむ・・・。意外とスズキ車は、最近までK-LINEなんでしょうかね。́Д`)う~ん、もうちょっと暇になったら対応考えますわ。気長にお待ちください。あ~んど、やることになったらその時には、協力お願いします。16:22がんちさん返信ありがとうございます。仲間入りしたいところですが、私のレベルでお役に立てるかどうか...。どこかで見た記憶で恐縮ですが、SUZUKIは2008年あたりからようやく標準化対応されたらしいので、かなり後発ではないかと思います。私も北の最果てにおりますので、お目にかかったりは難しいですが、もし協力できることがありまたら、是非お声かけヨロシクお願いします~。23:25ども!返事遅くなってスミマセン。(^^;)で、仕事でAndroidの開発をなさっておられるので凄いです。こっちは四苦八苦しながらやっていますよ。(>_<)それでdai-papaさんも北の方にお住まいとは、、、ちょっと気軽にはお願いし辛いですなぁ~。00:03こんにちは。一つ疑問なのですが、開発当時自分はELM327そのものが車が採用しているプロトコルに対応していないと通信出来ないという結論に達したのですが、この記事を読んでいると、どうやらプロトコルがELM327で対応していなくても、ソフトウェアにプロトコルを実装できるということなのでしょうか。23:25どうも、こんにちわ。書き込みありがとうございます。詳しくは書けませんが(^_^;)、ELM327の仕様書を良く読んでくださいね。ELM327は、デバイスに配線がされていればデータを取得できますので・・・。あとはいかにELM327を設定してデータを取得するのかって問題です。その取得したデータは、それぞれのプロトコルに依りますがね。言う事で、こんな返事しかできずに申し訳ないです。13:37どうもです!想定外の車両での動作報告ありがとうございます!(^O^)/まさかLPGの特殊車両で動作するとは思ってもいませんでした。このアプリが役に立っているとの事で作った甲斐がありました。要望等もありがとうございます。開発資金ねん出のため(^_^;)に現在国際化対応を進めています。これがひと段落して開発費が溜まったら!?バージョン2を作ろうかと思っています。11:59OBD2で検索してたどり着きました。Info-san!購入して接続しました。燃料メータが「-」のままで、何も表示されません。カムリハイブリッドです。ホワイトバージョン「JAN4582442140156」です。車種によっては対応していないようですが、何か設定が必要でしょうか。ご教示頂けると助かります。さまへ遅い返答スミマセン。古いエントリーのブログの書き込みで気づきませんでした。残燃料は車両側が対応していないと、どう頑張ってもアプリでは表示できません。その点は、ご了承くださいね。アプリのメイン画面から「OBDサポートコマンド表示」を選んでください。そこの0x2FがOK(サポート)されているか見てみてください。N/Aですと、お乗りの車両ではサポートされていません。