クイックアンサー

MCP2515 CANバスモジュールをArduinoで使用するには、SPIピン(CS、SCK、MOSI、MISO)を配線し、5Vで電源を供給した後、MCP_CANライブラリをインストールし、簡単なスケッチでCANフレームを送受信します。モジュール上のTJA1050トランシーバーが物理的なCAN信号を処理するため、CANHとCANLをバスに接続するだけで済みます。このガイドでは、配線、ライブラリのセットアップ、基本的な送受信の例を説明します。

MCP2515をArduinoに配線する

MCP2515モジュールはSPI通信を使用するため、ArduinoのSPIピンに接続します。Unoの場合、CSはピン10(デフォルト)、SCKは13、MOSIは11、MISOは12に接続します。モジュールには5Vとグランドで電源を供給します。CANバス側では、CANHとCANLをバスラインに接続します。2つのモジュールでテストする場合は、CANH同士、CANL同士を接続します。バスの両端に120オームの終端抵抗を追加して、反射を防ぎます。

CANライブラリのインストール

最も一般的なライブラリはcoryj Fowler氏によるMCP_CANで、Arduinoライブラリマネージャーから入手できます。「MCP_CAN」を検索してインストールしてください。インストール後、スケッチにライブラリをインクルードし、適切なSPI CSピンとボーレート(通常、自動車のOBD-IIでは500kbps)でCANコントローラを初期化します。

CANフレームの送受信

フレームを送信するには、sendMsgBuf(id, ext, len, buf)を使用します。受信するには、checkReceive()でCAN_MSGAVAILを確認し、readMsgBuf()で読み取ります。MCP2515が低レベルのCANプロトコルを処理するため、コードではメッセージIDとデータバイトのみを扱います。CANはブロードキャスト方式であるため、すべてのノードがすべてのメッセージを参照し、ソフトウェアでIDによるフィルタリングを行います。

ステップバイステップのセットアップ

  1. ハードウェアを接続します: MCP2515モジュールをArduinoに配線します:VCCを5Vに、GNDをGNDに、CSをピン10に、SCKを13に、MOSIを11に、MISOを12に接続します。CANHとCANLをバスに接続します。 MOSIとMISOを入れ替えていないか再確認してください。これはよくある間違いです。
  2. MCP_CANライブラリをインストールします: Arduinoライブラリマネージャーを開き、「MCP_CAN」を検索して最新バージョンをインストールします。スケッチに#include を追加してインクルードします。 ライブラリが見つからない場合は、スペルとインターネット接続を確認してください。
  3. CANコントローラを初期化します: CSピンを使用してMCP_CANオブジェクトを作成します(例:MCP_CAN CAN0(10))。setup()内で、CAN0.begin(CAN_500KBPS)を呼び出し、戻り値を確認します。 begin()は成功時にCAN_OK(0)を返します。成功しない場合は、配線とボーレートを確認してください。
  4. CANメッセージを送信します: データバッファを準備し、CAN0.sendMsgBuf(0x123, 0, 8, data);を呼び出します。ここで、0x123はメッセージID、8はデータ長です。 IDがバス上の他のノードと競合しないようにしてください。
  5. CANメッセージを受信します: loop()内で、CAN0.checkReceive() == CAN_MSGAVAILを使用してメッセージが利用可能か確認し、CAN0.readMsgBuf(&len, buf)で読み取ります。 メッセージが表示されない場合は、バスに適切な終端抵抗が接続されていること、およびすべてのノードが同じボーレートを共有していることを確認してください。

製品情報