• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

satto.v11のブログ一覧

2024年04月27日 イイね!

N-ONE JG3のOBD-2をハックしてみる


今回新車でN-ONE JG3を購入しナビやETCの取付品が落ち着いたのでちょっとOBD2で遊んでみます。
6年前にもココでも遊んでいますが、N-ONEでもOBD2のデータが拾えるものかどうか試してみます。
最近の車はOBD2で規格化されたプロトコルで車両の診断や車両データをタイムリーに取得できます。通信はCAN通信を使ってECUとやりとりできるのが一般的です。
HONDA N-ONE JG3についてもOBD2のコネクタがついており自作回路を作成してハッキングしてやろうと目論んでいます。

今回こんな回路図を書いて…


ユニバーサル基板なので見栄えは悪いですが、こんな回路を作ってみました。
黒くて大きなコネクタがOBD2の一般的なコネクタでN-ONEは運転席左下にあります。


回路の概要としては…。
①マイコンを使って命令コマンドをCANコントローラーへ向けて発行します。
②CANコントローラーより返答のあった車両データをマイコンで処理してそのデータをBLEモジュールへ送信します。
③データを受け取ったBLEモジュールはiPhoneに向けてBluetoothに乗せて車両データをiPhoneに送信します。
④iPhoneは受け取ったデータをアプリで処理を行い画面表示します。

今回は簡単な自作iPhone用のアプリも作成していきます。

回路の構成は以下のようなチップで構成されています。
【CANコントローラー MCP2515】
マイクロチップ社のCANコントローラーでSPI通信を使ってさまざまなコマンド命令を行い車両と通信を行うためのチップです。これを中心にシステムを作っています。マイコンで命令コマンドSPI通信で送りその結果がSPI通信で帰ってきます。

【CANトランシーバー MCP2551】
マイクロチップ社のチップで車両とCANコントローラと物理バスの間のインターフェースデバイスです。回路と車両を繋げるためのチップって考えても良いと思います。MCP2515と組み合わせて使います。

【BLEモジュール RN4020】
マイクロチップ社のBluetoothモジュールです。今回は通信結果をiPhoneに表示させます。この回路とiPhoneはBluetoothを使った無線通信でデータを送ります。そのためのモジュールです。CANコントローラーから送られたデータをマイコンで受けこのモジュールにデータを送りひたすらデータをiPhoneに飛ばします。マイコンとの通信はUART通信というプロトコルでやりとりします。

【マイコン PIC32MX270F256B】
このマイコンでCANコントローラーへSPI通信で命令コマンドを送信。そして結果をRN4020のモジュールにUART通信で送信するのがこのマイコンの役割です。中身はレガシーなC言語でプログラムを書いています。実はこのぐらいの処理であれば32ビット級のマイコンは必要ありません。8ビットマイコンで十分ですが、今後なにか別のディスプレイに映すとかグレードアップした時に速いマイコンが必要かも?ってことで今回は高級な(?)マイコンを使っています。明らかなオーバースペックです。

裏はこんな感じです。手作りなので見栄えは悪いですが機能はします。


車両には運転席下のOBD2のコネクタに接続します。
電源はOBD2からも取れますが、常時電源で扱いにくいのでACCから取っています。iPhoneとはBluetoothの無線通信なのでどこに置いても良いです。


今回のために簡単なテスト用のiPhoneアプリを作りました。言語はApple公式のSwiftです。ただ送信されたデータを計算して表示するだけの簡単なアプリです。


今回はOBD2通信の中身を探るだけのアプリなのでそっけないものですが、
接続ボタンを押してBluetoothの通信接続を開始して1秒ごとにOBD2へのリクエストを命令して返答があったものをテープルへ表示するソフトです。



ここからはOBD2の処理を知る上でちょっとコアな部分です。
OBD2通信ではリクエストとして送信先のECUの指定はCAN IDと呼ばれる番号で指定します。これはISO規格で定められており、11ビット標準識別子か29ビットの拡張識別子に分かれています。前回AUDIのOBD2は11ビット標準識別子が使われていたのですが、ホンダ系のOBD2は29ビット拡張識別子が使われているようです。
29ビット識別子には0x18DB33F1という特別な29ビット拡張識別子があり、この識別子を送信するとリクエストが理解できるECUの全てから返答があります。
試しにこの識別子を送ると見事に0x18DAF110なるECUから返信があり、N-ONEの場合はこのECUと通信ができそうです。
このECUに対し1バイトで表されるPIDと呼ばれるIDを指定して取得したいデータを命令して返答を得ます。例えば0x01〜0x1Fであれば、以下に羅列したデータがあって、エンジン回転数が欲しければ「0x0C」を指定、車速が欲しければ「0x0D」を指定してやって命令すれば現在のデータが返信される仕組みです。こんなデータが160項目くらいあります。そのうちの32個。

PIDs Description
1 Monitor status since DTCs cleared.
2 DTC that caused freeze frame to be stored.
3 Fuel system status
4 Calculated engine load
5 Engine coolant temperature
6 Short term fuel trim (STFT)—Bank 1
7 Long term fuel trim (LTFT)—Bank 1
8 Short term fuel trim (STFT)—Bank 2
9 Long term fuel trim (LTFT)—Bank 2
0A Fuel pressure (gauge pressure)
0B Intake manifold absolute pressure
0C Engine speed
0D Vehicle speed
0E Timing advance
0F Intake air temperature
10 Mass air flow sensor (MAF) air flow rate
11 Throttle position
12 Commanded secondary air status
13 Oxygen sensors present (in 2 banks)
14 Oxygen Sensor 1
15 Oxygen Sensor 2
16 Oxygen Sensor 3
17 Oxygen Sensor 4
18 Oxygen Sensor 5
19 Oxygen Sensor 6
1A Oxygen Sensor 7
1B Oxygen Sensor 8
1C OBD standards this vehicle conforms to
1D Oxygen sensors present (in 4 banks)
1E Auxiliary input status
1F Run time since engine start

ここまで段取りできたので…。
実際に車両に接続して取得できる車両データを探ってみます。何のデータが対応しているのかについては探る方法があらかじめ用意されていて、ECUに対しPIDを指定して命令する際に0x00・0x20・0x40・0x60・0x80のPIDを指定してやると取得できるデータがわかるようになっています。実際に動かしてみます。


この結果から、PIDを0x00指定した時であれば「0xB6 0x3C 0xA8 0x13」の返答があり、PIDの0x01〜0x1Fまでで対応できるデータがわかります。この返答数値を2進数に変換して「0b10110110001111001010100000010011」って数列の「1」のフラグが立っている箇所の上のPIDのDescriptionの項目が対応できるデータです。
0x20であればPIDの0x21〜0x3Fといったようにフラグを確認していけば対応するデータがわかるようになっています。全てのデータを解析してみます。


結論。
N-ONEのOBD2は、0x18DAF110のECUがあり160項目のデータのうち39項目のデータが取得できるようです。
例えば目ぼしいところで言えば、「エンジン負荷」「ブースト圧」「エンジン回転数」「車速」「スロットルポジション」「電圧」「水温計」等々。

ここまでわかったのでハッキング作業は終了。
今後はこのデータを使って計器アプリを車両に負担がかからない程度に整備手帳で進めてみようかな?
ホンダ系のエンジンは全てこんな感じでOBD2のデータが取得できるのか?バイクはゴールドウィングを所有しているので試してみるのも面白いかも…。

Posted at 2024/04/27 07:14:24 | コメント(0) | トラックバック(0) | 電子回路 | クルマ

プロフィール

「[整備] #N-ONE メッシュグリルにしてみる https://minkara.carview.co.jp/userid/1540421/car/3584390/8101874/note.aspx
何シテル?   02/01 13:30
satto.v11です。 機械を弄るのが大好きですw クルマ・バイク・パソコン多趣味な人間です。
みんカラ新規会員登録

ユーザー内検索

<< 2024/4 >>

 123456
78910111213
14151617181920
212223242526 27
282930    

リンク・クリップ

バンパー、グリル、ネット取り付け 
カテゴリ:その他(カテゴリ未設定)
2025/02/06 06:05:02

愛車一覧

ホンダ N-ONE ホンダ N-ONE
N-ONE RSに乗り換えました。 通勤用として久しぶりの新車購入。 "通勤中も楽しく" ...
アウディ TT クーペ TT (アウディ TT クーペ)
メイン車です。 これは自分では弄りません。 全てディーラーにお任せw
ホンダ ゴールドウイング (GL1800) GL1800 (ホンダ ゴールドウイング (GL1800))
ホンダGold Wind Tour DCTに乗っています。 水平対向6気筒1800ccを ...
ホンダ モンキー ホンダ モンキー
モンキーを作りました。 10年前に所有していたモンキーフレームの残骸からナンバーを取得 ...

過去のブログ

2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation