パート3.スマートフォンを車に接続する方法-データを読む

車の車載システムへの接続方法に関する一連の記事を継続し( パート1パート2を参照)、今日はデータの読み取り方法を説明します。



現時点では、OBD-II規格を満たす診断コネクタ、お気に入りのモバイルデバイス(ラップトップ、スマートフォン、タブレット)、およびマシンとモバイルデバイスを接続できるELM327ベースのアダプターを備えたマシンがあると想定されています。



前の部分で述べたように、モバイルデバイスとアダプター(Bluetooth、Wi-Fi、USB)間の論理レベルでの通信の種類に関係なく、これはシリアル接続です。 ソフトウェアレベルでは、既存の低レベル接続の上にあるコンピューターとアダプターの間のソケット接続を開く必要があります。 実用的なソフトウェアの実装は、オペレーティングシステムと接続の種類によって異なります。お気に入りのプログラミング言語の例はたくさんあります。 基本的な例として、BluetoothまたはTCP \ IPのチャットプログラムの例で接続の実装を行うことができます。 この記事では、このような接続の実装については説明しません。実験のために、Telnetのような利用可能なプログラムの機能を十分に備えています.AndroidおよびiOSの実験のために、 OBD Car Doctorアプリケーションに簡単なコマンドコンソールを構築しました。



そのため、アダプターとのシリアル接続を確立し、マシンと通信するためのコマンドラインを提供できるプログラムをダウンロードしてインストールします。





プログラムをダウンロードしてインストールしたら、コンピューター(スマートフォン)、アダプターを取り、車に進みましょう。 この記事のリストはどちらも傷つけません。






最も一般的で普及しているタイプのアダプターとして、Bluetoothアダプターとの通信について説明します。




Windows:



[デバイス]セクションで、新しいデバイスを検索し(一部のアダプターではボタンをクリックしてデバイスを検出する必要があります)、デバイスを検出してPINコードを入力すると、デバイスが一般リストに表示されます。



プロパティ、[ハードウェア]タブを確認します



これでシリアルポートのプロパティ。



シリアルBluetooth接続がCOM3ポートにマップされていることを確認しました。 必要に応じて、別のポートに変更します。 次に、Puttyを実行し、前の手順で定義されたCOMポート(COM3の例)で動作するようにプログラムを構成します。



したがって、COMポートの名前、速度9600を入力し、シリアルと入力し、[開く]をクリックしてターミナルウィンドウを開きます。



Android:



1. Bluetoothアダプターを車のOBD-IIコネクターに接続します( 第2部でその位置と位置について書きました)。 アダプターのライトが点灯していることを確認してください。

2.車のエンジンを始動します

3.スマートフォンのBluetooth環境に移動します:「設定」> Bluetooth、Bluetoothデバイスの検索を開始し、OBD IIアダプターを見つけます。デバイスのリストに「scantool」、「obdkey」、「plx ...」、「cbt」として表示されます。 'または同様のもの。 アダプターを選択します。 彼はデバイスの活用を提案します。

4.デバイスをペアリングします。 デバイスは秘密のペアリングコードを要求します。通常は1234または0000です。

5.スマートフォンでOBD Car Doctorアプリに移動します。

6. BT接続項目の設定で、以前にペアリングしたアダプターの名前を選択します。

7. [ テスト ]セクションの[設定]で、 [ コンソール ]オプションを確認します。 メインページに戻り、[ 接続 ]をクリックし、 接続に成功したら 、[ コンソール]項目を選択します( この機能は、OBD Car Doctor Android 2.22バージョンから使用できます )。



iOS:



1. OBD-II Wi-Fiアダプターを車のOBD-IIコネクターに接続します。 車のエンジンを始動し、Wi-Fiアダプターの緑色のライトを待ちます。

2. iPhoneで[設定]に移動し、[Wi-Fiネットワークへの接続]を選択します。 Wi-Fiに接続したら、詳細設定に移動してインストールします。

Wi-Fiに接続するデバイスの名前を選択します。 設定を終了します。

3. OBD Car Doctorアプリ>設定に移動し、以下を設定します。



4.エンジンを始動します。

5.スマートフォンでOBD Car Doctorアプリに移動します。 [ テスト ]セクションの[設定]で、[ コンソール ]オプションを確認します。 メインページに戻り、[ 接続 ]をクリックし、 接続に成功したらコンソールアイテムを選択します( この機能は、近日リリース予定のOBD Car Doctor iOS 1.3以降で使用可能です )。



説明された手順が完​​了すると、コマンドを入力し、車両の診断システムから回答を受け取る準備が整います。 当然、移動中にコンソールを操作することは、乗客にとっても非常に便利ではなく、安全でもありません。 そのため、私たちは傷の実験を提供していますが、便利な駐車した車です。



チームは、 アダプター制御コマンドとOBD-IIコマンド自体の 2つのタイプに分けられることを前述しました 。 通常、制御コマンドはATシーケンスで始まりますが、OBD-IIコマンドは16進数のみで構成されます。



だから、私たちの最初のチーム:


ATZと入力して、Enter(または[送信]ボタン)を押します。 アダプタに電力があり、アダプタとの通信が確立されている場合、応答行が表示されます。

ELM 327 v1.3a >





または、使用されているコントローラーとアダプターのファームウェアバージョンに応じて、同様の何か。 ATZ-初期化コマンドであり、アダプターを再起動します。



•次のコマンドはプロトコルインストールコマンドである可能性があります。ATSP0コマンドを入力します。

ATSP0 OK >





ATSP0コマンド 、アダプターと車両間の相互作用のプロトコルを直接確立するのでなく、アダプターを設定してプロトコルを自動的に決定する特別なコマンドです。 通信を直接検索して確立するには、OBD-IIコマンドを送信する必要があります。



•コマンド0100 (MODE 01、PID 00を表します)を送信します。成功した場合、次のような結果が得られます。

0100 Searching…





41 00 XX XX XX XX >





Xは任意の16進数です。





ここでは、いくつかの点に注意を払います。


•チームと応答の両方でスペースを無視できます。 応答内のスペースの有無は、個別のATS{0|1}



コマンドATS{0|1}



によって制御されATS{0|1}





•応答にエコーが存在する場合と存在しない場合があります(つまり、上記の例のようにコマンドを繰り返します)。 応答内のスペースの有無は、個別のATE{0|1}



コマンドATE{0|1}



によって制御されATE{0|1}





•コマンド自体への応答には、コマンドの変更された値、つまり(mode + 0x40)(PID)が含まれます。 コマンド0100に対する肯定応答は4100で始まるはずです。



失敗した場合の答えは次のとおりです。


0100 SEARCHING...





UNABLE TO CONNECT >





または

0100 SEARCHING...





NO DATA >





...

同様の回答は、アダプタが自動車との通信プロトコルを自動的に決定できなかったことを意味します。



プロトコルを自動的に検索する代わりに、プロトコル番号を明示的に設定できます; 1からCまでの16進数がサポートされています。

1 - SAE J1850 PWM





2 - SAE J1850 VPW





3 - ISO 9142-2





4 - ISO 14230-4 KWP (5 baud init)





5 - ISO 14230-4 KWP (fast init)





6 - ISO 15765-4 CAN (11 bit, 500 Kbaud)





7 - ISO 15765-4 CAN (29 bit, 500 Kbaud)





8 - ISO 15765-4 CAN (11 bit, 250 Kbaud)





9 - ISO 15765-4 CAN (29 bit, 250 Kbaud)





A - SAE J1939 CAN (29 bit, 250 Kbaud)





B - USER1 CAN (11 bit, 125 Kbaud)





C - USER2 CAN (11 bit, 50 Kbaud)







たとえば、ISO 9142-2プロトコルを使用して明示的に通信を確立するには、ATSP3コマンドを入力し、ATSP3 OK>を取得します。

そして、チーム0100の有効性をチェックします。成功した場合は、

0100 Searching…





01 00 41 00 XX XX XX XX >







他の何かを見たら

0100 BUS INIT:





…ERROR





意味-このプロトコルでの通信は確立されていません。



通信プロトコルのテストと確立には、OBD-IIビークルでサポートされているコマンドを使用できますが、標準に従ってメーカーがサポートする必要があるため、正確に0100を使用することをお勧めします。 このコマンドは、MODE 01の01〜20のPIDサポート情報を返す必要があります。



MODE 01は、車両の動的パラメーター(速度、速度、温度など)をリアルタイムで読み取ることに注意してください。 したがって、0100への回答を読んだ後、01から20(16進数)のPIDのどれがサポートされているかに関する情報が含まれています。 復号化の場合、ビット位置(上位から下位)がPID番号(01から20)に対応している間に、数値の16進表現をバイナリに変換する必要があります。

たとえば、80 00 00 00 = 1000 0000 0000 0000 0000 0000を含む応答。

単一のPID、つまり01のサポートを意味します。



これで、0100コマンドに対する車の応答を読み取り、車でサポートされているすべてのチーム(PID)の数を調べることができます。 0120コマンドがサポートされている場合、それを送信することで、21〜40などの範囲でサポートされているPIDの数を読み取ることができます。 0100、0120、...01D0。MODE01でサポートされているすべてのコマンドの数を決定します。



得られた知識を統合するために、別の簡単なコマンドを実行して結果を解析することを提案します。 コマンド0100の応答をデコードし、PID 0Cがサポートされていることを受け取った場合、コマンド010C(エンジン速度)を送信します。答えは次の形式である必要があります。

01 0C 41 0C 0B B8 >





1分あたりの回転数で値を取得するには、答え(0B B8 = 3000)を4で割る必要があります。 750 rpmを取得します。

サポートされている標準のコマンドと変換式のリストは、 ここにあります



さまざまなコマンドの送信、および値の受信とデコードの実験中に、次のパートを準備します。このパートでは、いくつかのオンボードコントローラーでの作業の問題、コマンドヘッダーについて知っておくべきこと、エラーの読み取りとリセットなどを使用します。 MODE、「Almost OBD-II」、およびその他の興味のあるトピック。



All Articles