【M5Stack】CommuモジュールでCAN通信

M5Stack(Arduino)とCommuモジュールでCAN通信する方法について紹介します。

スポンサーリンク

CAN通信(標準フォーマット)で送受信

CAN通信の標準フォーマットでは、11bitの識別IDと0~8byteのデータフレームで、データをやり取りします。
CAN通信の通信仕様については以下ページで紹介しています。

【CAN通信】原理・ビットレート・データ長・主な用途など
CAN通信の「原理」「メリット」「デメリット」についてまとめました。
説明
ID 識別子(Identifier)の略。データ内容や送信ノードを識別する他、通信調停の優先順位を決定する。標準フォーマットでは11ビット長でIDを構成するため、IDの範囲は0x0~0x7FFとなり、2048種類の識別ができる。ただし、上位7ビットを全てリセッシブ(ID:0b1111111XXXX)にすることは禁止されています。
DLC データフレームに格納するデータのbyte数を指定。0~8byteの範囲で指定でき、例えば8byteのデータを送信したい場合はDLC=8となります。
データフレーム CAN通信で送信したいデータを格納するフレームで0~8byteのデータを格納できる。
参考 m5stack公式Github MCP_CAN_lib/examples
機材名 数量
M5Stack Gray(約4500円) 2
Commuモジュール(約1500円) 2

利用するには「MCP_CAN_lib」というライブラリをArduino IDEに追加する必要があります。

【Arduino IDE】ライブラリ「MCP_CAN_lib」をインストール
Arduino IDEにライブラリ「MCP_CAN_lib」をインストールする方法を解説します。

サンプルコード

2台のM5Stack+CommuモジュールでCAN通信を行うサンプルコードです。

■commu_can_receiver.ino(受信側)


■commu_can_transmitter.ino(送信側)


プロジェクト一式はGithub(https://github.com/nishizumi-lab/sample/tree/master/m5stack/commu)に公開しています。

実行結果

スポンサーリンク

CAN通信(拡張フォーマット)で送受信

CAN通信の拡張フォーマットでは、29bitの識別IDと0~8byteのデータフレーム、データをやり取りします。

説明
ID 識別子(Identifier)の略。データ内容や送信ノードを識別する他、通信調停の優先順位を決定します。拡張フォーマットでは標準ID11ビットと拡張ID18ビットを併せて29ビット長で、IDの範囲は0x0~0x1FFFFFFFとなり、約540万種類の識別ができます。標準フォーマット同様、上位7ビットを全てリセッシブ(ID:0b1111111XXXX…)にすることは禁止されています。
DLC データフレームに格納するデータのbyte数を指定。0~8byteの範囲で指定でき、例えば8byteのデータを送信したい場合はDLC=8となります。
データフレーム CAN通信で送信したいデータを格納するフレームで0~8byteのデータを格納できる。
詳細 【CAN通信】原理・ビットレート・データ長・主な用途など

サンプルコード

2台のM5Stack+CommuモジュールでCAN通信を行うサンプルコードです。

■commu_can_receiver.ino(受信側)


■commu_can_transmitter.ino(送信側)


プロジェクト一式はGithub(https://github.com/nishizumi-lab/sample/tree/master/m5stack/commu)で公開しています。

実行結果

【M5Stack】PC側(CANUSB)と対抗させてCAN通信
M5StackとPC側(CANUSB)と対抗させてCAN通信する方法を解説します。
【M5Stack/M5StickC入門】電子工作・IoT・ロボット制御してみよう
M5Stack/M5StickCとは?特徴、できること、環境構築について紹介し、電子工作・IoT・ロボット制御してみます。
M5Stack
スポンサーリンク

コメント