
ブレッドボードに仮組み / 流れているCANデータを見てみる
ArduinoとOLEDとCANバスモジュールを適当に配置し、OBD2コードと組み合わせてみました。
左側に抵抗が並んでいますが、これはまだレギュレータが手元になく、電源にモバイルバッテリーを使用するためです。
モバイルバッテリーはArduinoの数十ミリA程度の消費量では
スリープしてしまうため、抵抗を繋いで消費電流を上乗せしています。
だいたい
回路全体で80mA~100mA使うような感じになればモバイルバッテリーは寝なくなります。
本番用はOBD2の16番ピンのバッ直24Vをレギュレータを介して5Vに落としそれで常時稼働させます。
CAN信号は、2線間の電位差を利用して通信するため、グランドを共通にする必要はないと思ってたんですが、どのサイトを見てもIC保護のためグランドは共通にしておくようにとの記載があったので
OBD2の4番ピン(シャーシグランド)をグランドに落としておきます。
Arduinoでは、
I2CとSPIの接続ピンは決められていて以下の番号に接続する形となります。だいたいどのArduinoでも共通のようですね。
CANバスの
INTピンは今回は使わないのでとりあえずグランドに落としておきます。
I2C:
SCL=(A5 pin)
SDA=(A4 pin)
SPI:
SS,CS,CE=(D10 pin)
MOSI=(D11 pin)
MISO=(D12 pin)
SLC,SCK=(D13 pin)
INT=(D2 pin or D3 pin)
ArduinoのIDEを開いて
mcp_canをインストールしておきます。
サンプルスケッチの
CAN_receiveを開きます

デフォルトからの
変更箇所は1か所だけ。CANバスモジュールが8MHz駆動なのでそれに合わせて
16から8に変更します。簡単。
フォワードのCANの通信規格が不明だったのですが、
さらっと探してみると海外サイトにそれっぽい情報を発見しました。
ドンピシャの型式ではないんですが製造時期も似てるし、多分一緒でしょ?ということで
11bit 500kBとあたりをつけます。実際正解でした。
参考url:
https://www.outilsobdfacile.com/vehicle-list-compatible-obd2/isuzu
Mode 1
D83F8017
A019A015
40D80000
と、謎のHEXが並んでいますが、おそらくこれは取得できるOBD2の項目が並んでるんだと思います。
https://www.blafusel.de/obd/obd2_pid.php?pid=D83F8017#2
上記のページで8バイト毎にコピペしてみるとなんかそれっぽい情報が手に入ります。

実際にサンプルスケッチを書き込んで、フォワードに接続してみてみました。
なにやらデータが流れていますね。キーオフ状態ですが、既になんかのデータが流れています。
続きます。
ブログ一覧 |
Arduino | パソコン/インターネット
Posted at
2022/01/25 19:58:45