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

satto.v11のブログ一覧

2018年02月11日 イイね!

OBD2の自作回路を見直してみた

OBD2の自作回路を見直してみた無線通信のプロトコルである「BLE」(Bluetooth Low Energy)を使ってiPhoneと電子回路を繋げて遊んでいます。
ここで「Koshian」ってBLE無線モジュールで遊んでいます。
このモジュールは金額が1,000円程度とお手軽なこと。小さなモジュールで回路の場所を圧迫ないこと。あとは、I/OやI2CやUART等の通信も備えており、それがiPhoneアプリから制御できるっていうのがこのモジュールの面白いところです。

去年の5月にOBD2のCAN通信の電子回路を自作しています(Ver.1)。今回この「Koshian」BLEモジュールを使って「CAN通信」の回路を作り直してみました。それに加えて、「CAN通信」の内容が回覧できるiPhoneアプリも作ってみました。
去年の10月くらいからのんびりと回路の構想やアプリのライブラリを作ってきてようやく形になってきたのでご紹介…。



回路基本構成は、「Koshian」BLEモジュール。「PIC16F1705」マイコン。「MCP2515」CANコントローラー。「MCP2551」CANトランシーバーの4つの石から構成されています。
電源は「MCP2551」は5V。それ以外は3.3Vを供給しており2つの電源が共有しています。まずはブレッドボードで電子部品の仮組みをしてテストを行っています。



iPhoneアプリからCANコントローラへのデータ経路としては…
①iPhoneアプリで「Koshian」BLEモジュールに向けて命令を出す。ここの通信はBLE4.0の規格に準拠した通信で当然無線です。データはCANコントローラのコマンドそのものを送信するようにしています。
②「Koshian」は受信したデータを「PIC16F1705」マイコンへ送信する。通信はI2C通信でデータ送信されます。
③「PIC16F1705」マイコンは受信したデータをそのまま「MCP2515」CANコントローラへ送信する。ここの通信はSPI通信です。マイコンはI2Cで受信したデータをCANコントローラで読めるSPI通信に変換して横流ししているだけの仕事です。
④「MCP2515」CANコントローラは受信データを「MCP2551」CANトランシーバを通して車両へ情報のリクエストを送ります。

ってな感じで「BLE」「I2C」「SPI」「CAN」と通信の違った規格を経て車両情報を取得しています。

本当は「Koshian」BLEモジュールはSPIにも対応しており上記の②をすっ飛ばして「Koshian」と「MCP2515」を直接SPIで制御するのがマイコン分の1つの石がなくなりスマートになると当初は目論んでいました。
どうも「Koshian」の標準にあるSPIのライブラリの動きが「MCP2515」に合わないらしく通信が途切れる現象があって直接通信を断念してます。
「Koshian」のファームウェアを更新する手もありますが、そこまでしなくても…って気になって結局マイコンでの制御に逃げています。

この制御方法は前回作ったVer.1.0の回路と比較して回路のデバッグやアプリの作り込みがかなりシンプルになります。
前回作成した回路は取得する車両情報は全て回路内のマイコン内でプログラミングされる構成で、マイコンがCAN通信を取り仕切っていました。
なので、何かバグがあると車に付いている回路内のマイコンを取ってプログラムを書き換えて修正後、テストを繰り返していました。今回の回路はマイコンはあくまでもデータの横流しのみのプログラムであり変更はありません。iPhoneアプリが全てを取り仕切っているのでデバッグも容易です。


実際にブレッドボードでテストを行い動きに問題はなかったのでとりあえずユニバーサル基板に配線して試作回路を作ってみました。


同時にiPhoneアプリを作成してみました。
「OBD2Viwer」って名前にしました。前回「Koshian」を味見した時には、ネットで公開していたObjective-C用ライブラリをブリッジを使ってSwiftで使っていました。
今回はObjective-CのコードをSwiftにコードを全て書き換えてネイティブSwiftとなるようにライブラリを作り変えています(これに時間がかかった…w)。
「MCP2515」CANコントローラ用のライブラリも作成してiPhone側のアプリで全て変更できるように作り込みを行っています。

アプリの目的は、「MCP2515」内のレジスタの読込と書換。とCAN通信のデータ確認だけのソフトなので、UITableViewを使ったいたってシンプルな画面構成としています。


所有しているAudi用の中身をハックする目的で作ったので、ISO15765に準拠した11bit標準CAN IDでMode01のみに絞ったCAN通信ができます。
同じCAN通信でも、日本ではK-Lineやホンダなんかは拡張フォーマットを使っていたりと様々なフォーマットを使っているみたい。別で所有しているスクラム(エブリー)は繋げてみると何か通信はしているけど違う結果が返ってくる(まだよくみてないけど…)。
欧州系の車にはこのアプリを使える対応車両は多いのではないかな?(試してないけど…)

お暇ならアプリの動きをどうぞ…。


このように、「CAN ID」と「PID」をリクエストするだけで車両データのレスポンスが確認できるアプリにしています。
「CAN ID」はネットワークで言うところのIPアドレスみたいなイメージで、11bit標準CAN IDではECUの数に合わせ「0x7E0〜0x7E7」までのIDが指定できます。所有のAudi TTには「0x7E0」と「0x7E1」の2つのリクエストに対してレスポンスが返ってきます。
ちなみに、レスポンスされるCAN IDはリクエストのCAN-IDに8を足した「0x7E8〜0x7EF」が返ってきます。
「PID」はMode01ではデータにあらかじめIDが振り分けられており動画では、「エンジン回転数」は0x0C。「コントロール電圧」は0x42。「水温計」は0x05のデータを取得しています。
PIDには各々換算式がありそのレスポンスデータによって車両情報が換算できます。


巷では「ELM327」なる同様なモジュールが安価に売っていることは知っています。中国のネット通信で買えば5ドルとか…。こっちをハックした方が早いんじゃない?って突っ込まれそうですね。実際に今回のようにコントローラやマイコンやBLEモジュールを買うだけで1,500円はかかります…。
「でも!自作に意味あり!」って私は信じてます。

何はともあれ、この回路とiPhoneアプリのライブラリでこれからは簡単にOBD2メータが作れるようになると思います。まずは「Koshian」モジュールが使用に耐えられる性能を発揮するかを確認して暇があればメーターアプリを作ってみようと思います。

暇あるかな〜w やるかな〜w
Posted at 2018/02/11 18:07:16 | コメント(0) | トラックバック(0) | 電子回路 | 日記

プロフィール

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

ユーザー内検索

<< 2018/2 >>

    123
45678910
11121314151617
18192021222324
25262728   

リンク・クリップ

バンパー、グリル、ネット取り付け 
カテゴリ:その他(カテゴリ未設定)
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