ArduinoでCAN通信をやる

ArduinoでCAN通信をやってみた。

必要な部品

時間がない人はシールドを買ってくるのが手っ取り早い。

SeeedStudio CAN-BUSシールド V2
https://www.switch-science.com/catalog/3435/

等価の回路を自分で作る方法もある。秋月電子で手に入る部品は下記の通り。

CANコントローラ MCP2515-I/P
https://akizukidenshi.com/catalog/g/gI-12030/

MCP2515は、CAN V2.0Bのスタンドアロンコントローラです。標準・拡張データ、リモートフレームの送受信を行うことができます。MCP2515は2個の受信マスタと6個の受信フィルタを持っていて不要なメッセージをふるい落としホストMCUのオーバーヘッド負荷を減らします。MCUとはSPIで通信します。

CANトランシーバ MCP2561-E/P
https://akizukidenshi.com/catalog/g/gI-12483/

Microchip Technology社の第2世代ハイスピードCANトランシーバです。CANプロトコルコントローラと2線式CAN物理バスの間のインターフェイスとして機能します。

ちなみにMCP2515より性能が高くて1チップ化されているものは下記だが、今回入手できなかった。

CANトランシーバー MCP25625
https://akizukidenshi.com/catalog/g/gI-12663/

ハードウェア

ブレッドボードでちょいちょいっと組み立てます。解説は後日書かせていただきます。

ソフトウェア

Arduino IDEでちょいちょいっと書きます。こちらも解説は後日書かせていただきます。

ライブラリ

https://www.arduino.cc/reference/en/libraries/mcp_can/

送信用のプログラム

https://github.com/catalyst-yuki-k/Arduino_sample/tree/main/CAN_bus/CAN_Transmit

受信用のプログラム

https://github.com/catalyst-yuki-k/Arduino_sample/tree/main/CAN_bus/CAN_Receive