バイクからOBD2経由でECU情報を取得する。(失敗)

前回の記事で、車(SUZUKI ワゴンR)のECUからOBD2を使ってエンジン回転数を取得することができました。

sgi-don.hatenablog.com

僕がやりたかったことは、車ではなくバイクのECUから情報を取得すること。 もっと言えば、走行中のバイクからECU情報を取得して、Android端末へ情報表示する。 もっと言えば、ヘルメットに装備したHUDに表示、そして最終的にはARグラス/ARコンタクトに表示したい!

という妄想を現実化すべく、第一歩を歩んでおります。

というわけで今日は、バイクのECUにOBD2コネクタを接続して情報を取得する。

バイクにOBD2と接続する。

OBD2コネクタを接続する。

OBD2コネクタは、Amazonで買った以下のもの

こちらは16ピン接続。
んで、うちのバイク(SUZUKI Bandit1250S)は、

f:id:sgi-don:20210912210356j:plain
ECUへ接続するコネクタの場所

バイク右側のカウルを外すと、

f:id:sgi-don:20210912210429j:plain
コネクタの形状は6ピンでした。

6ピンでした。そのままでは繋げられません。

KITACOから、OBD用に6ピン→16ピン変換ケーブルが売っています。

3000円かぁ、ちょっと高いなと思っていたらAliExpressに安く売っていました。
ついでにELM327のコネクタも追加購入してみます。

f:id:sgi-don:20210912210907j:plain
SUZUKI OBD2変換ケーブル6ピン→16ピン

今度は大丈夫だろう。

f:id:sgi-don:20210912211235j:plain
6ピンに接続ケーブルをつなげる

f:id:sgi-don:20210912211303j:plain
接続ケーブルにELM327をつなげる。

この状態で、エンジンをかけて、AndroidアプリのTorqueで動作確認してみる。。。。
ECUを認識できない・・・なんだこりゃ。

Pythonから接続してみる。

Torqueで認識できないって、何が起こっているんだ。
何が起こっているかを確認するため、前回、車で動作確認OKだったPythonスクリプトで動作確認してみる。

sgi-don.hatenablog.com

(obd2) obd % python3  obd_loop.py
[obd.elm327] Failed to set baudrate
[obd.obd] Cannot load commands: No connection to car
Not Connected
end

(obd2) obd % python3  obd_loop.py
[obd.elm327] Failed to query protocol 0100: unable to connect
[obd.elm327] Adapter connected, but the ignition is off
[obd.obd] Cannot load commands: No connection to car
OBD Connected
end

何度やってもエラーになる。エラーパターンは2つ。
obd.logger.setLevel(obd.logging.DEBUG)デバッグ表示してみた。

パターン1:

(obd2) obd % python3  obd_loop.py
[obd.obd] ======================= python-OBD (v0.7.1) =======================
[obd.obd] Explicit port defined
[obd.elm327] Initializing ELM327: PORT=/dev/tty.OBDII-Port BAUD=auto PROTOCOL=auto
[obd.elm327] Response from baud 38400: b''
[obd.elm327] Response from baud 9600: b''
[obd.elm327] Response from baud 230400: b''
[obd.elm327] Response from baud 115200: b''
[obd.elm327] Response from baud 57600: b''
[obd.elm327] Response from baud 19200: b''
[obd.elm327] Failed to choose baud
[obd.elm327] closing port
[obd.elm327] write: b'ATZ\r'
[obd.elm327] Failed to set baudrate
[obd.obd] Closing connection
[obd.obd] Cannot load commands: No connection to car
[obd.obd] ===================================================================
Not Connected
end

パターン2:

(obd2) obd % python3  obd_loop.py
[obd.obd] ======================= python-OBD (v0.7.1) =======================
[obd.obd] Explicit port defined
[obd.elm327] Initializing ELM327: PORT=/dev/tty.OBDII-Port BAUD=auto PROTOCOL=auto
[obd.elm327] Response from baud 38400: b''
[obd.elm327] Response from baud 9600: b'\x7f\x7f\r?\r\r>\x7f\x7f\r?\r\r>\x7f\x7f\r?\r\r>\x7f\x7f\r?\r\r>\x7f\x7f\r?\r\r>ATZ\r\r\rELM327 v1.5\r\r>\x7f\x7f\r?\r\r>\x7f\x7f\r?\r\r>'
[obd.elm327] Choosing baud 9600
[obd.elm327] write: b'ATZ\r'
[obd.elm327] wait: 1 seconds
[obd.elm327] read: b'ATZ\r\r\rELM327 v1.5\r\r>'
[obd.elm327] write: b'ATE0\r'
[obd.elm327] read: b'ATE0\rOK\r\r>'
[obd.elm327] write: b'ATH1\r'
[obd.elm327] read: b'OK\r\r>'
[obd.elm327] write: b'ATL0\r'
[obd.elm327] read: b'OK\r\r>'
[obd.elm327] write: b'AT RV\r'
[obd.elm327] read: b'13.5V\r\r>'
[obd.elm327] write: b'ATSP0\r'
[obd.elm327] read: b'OK\r\r>'
[obd.elm327] write: b'0100\r'
[obd.elm327] read: b'SEARCHING...\rUNABLE TO CONNECT\r\r>'
[obd.elm327] Failed to query protocol 0100: unable to connect
[obd.elm327] Adapter connected, but the ignition is off
[obd.obd] Cannot load commands: No connection to car
[obd.obd] ===================================================================
OBD Connected
[obd.obd] Closing connection
[obd.elm327] closing port
[obd.elm327] write: b'ATZ\r'
end

接続できる場合と接続できたけど途中から通信できなくなるパターン(ignition is off?)があるようだ。

調べていくと、電気的に問題がある場合に発生するとのこと。
2つあるELM327どちらも発生するので、変換ケーブルの問題かな。

もう少し調べていくと、どうやらそもそもこのバイクはOBD2に対応していないようだ。
http://tarte.2ch.sc/test/read.cgi/motorbike/1567170897/

327 :774RR:2019/11/12(火) 23:54:47 ID:UnYz6yHM.net
このバイクはOBDコネクターってある?
わかる人教えて

330 :774RR:2019/11/14(木) 00:22:36.92 ID:h/ypfHbw.net
>>327
2016/10以降の新型車に適応されるOBDのコネクタなら無いよ
初年度2007だしな
代わりにディーラーモードカプラなら付いてる、出力される故障コードは
FIとABS周りに限ってならクルコントラコン他盛々の現行車に見劣りしない

2016年10月ってこの話だな。

https://www.mlit.go.jp/common/001094623.pdf

文中に 電気系統の断線等による機能不良を監視する OBD システムの装備を義務付ける。 って書いてある。

Bandit1250Sは2007年からのモデルだし、このバイクの初年度登録は2014年。
だめかー。バイク買い換えるかー。

さらにもっと調べていくと、

www.mlit.go.jp

OBD2 の義務化は新車は2020年12月以降、生産継続車は2022年11月から義務化のようだ。

ということは、今世に出ているバイクでOBD2が動作するバイクはほとんどないってことじゃないですかー

バイク買い替えるしかないかな。