車のコントローラ間に流れるCAN通信を読み取る装置の作り方 (材料と接続編)
車の状態をモニタするには、車に流れるCAN通信を読み取るのが有効です。
車にはエンジンコントローラ(ECM)、トランスミッションコントローラ(TCM)、ABSコントローラ(ABS)、、、等、いくつかのコントローラが搭載されており、各コントローラ間はCAN通信と呼ばれる通信方式でデータがやり取りされています。
車両に搭載されている様々なセンサは、各コントローラに入力され、一部はCAN送信されていますので、CANを読み取る機材があれば、センサを一つ一つハードワイヤで分岐させてモニタしなくても、ある程度の信号をまとめてモニタできるのです。
CAN通信自体は規格化されていますので、市販の機材とプログラムを用意すれば車両に流れるデータをモニタすることができます。
補足:
一部の車両はCANでは無く、別の通信方式を採用している場合があり、ここに記載の方法では読み出すことができない場合があります。
また、2015年あたりからセキュリティが強化され読み出せない車両が出てきています。
CANが一般的に普及する前の時代の車も当然ながら読み出すことはできません。
通信方式はサービスマニュアルに記載があると思いますので、そちらで確認してみてください。
いつかカーメーカー、機種、通信方式の一覧表を作成して公開できたらいいと思いますので、情報お持ちの方はコメント欄等にご連絡下さい。
<必要な材料>
・ARDUINO UNO
・MCP2515
・各PINを接続するジャンパ線
・CANライン用の配線
・CANライン用のコネクタ
・100均のケース
・プラスチックねじ
完成形は下記のような感じになります。
MCP2515が車両のCANを受信するCANドライバです。アマゾンで800円ぐらいで売ってます。CAN送信することも可能です。
CANの読み出しだけならば、ARDUINO UNOとMCP2515とそれを繋ぐ線があればいいのですが、車載して使用するのでケースに入れた方が良いです。
ケースは100円ショップにいろんなサイズが置いてあるので、おすすめです。
また、頻繁に車から外したり、付けたりするので、接続はコネクタ等で簡単に脱着できるようにするのをおすすめします。
ケースへの固定はプラスチックねじとナットで固定しています。
穴位置はネットで検索すれば公開されていますので、穴あけ位置をマーキングしてドリルで開ければOKです。
<接続>
ARDUINOとMCP2515のPINは、下の表の各行の左右に記載の端子を接続してください。
ARDUINO | MCP2515 |
9 | INT |
10 | CS |
11 | SI |
12 | SO |
13 | SCK |
5V | VCC |
GND | GND |
次回はプログラムを説明します。