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

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

【標準フォーマット】CAN通信・送受信のサンプルコード

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

【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」をインストールする方法を解説します。

【サンプルコード】CANで送受信

■commu_can_receiver.ino(受信側)


■commu_can_transmitter.ino(送信側)


サンプルプログラム一式はこちら
1 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通信】原理・ビットレート・データ長・主な用途など

■commu_can_receiver.ino(受信側)


■commu_can_transmitter.ino(送信側)


サンプルプログラム一式はこちら
1 https://github.com/nishizumi-lab/sample/tree/master/m5stack/commu

【その他】CANUSBと通信

【M5Stack】PC側(CANUSB)と対抗させてCAN通信
M5StackとPC側(CANUSB)と対抗させてCAN通信する方法を解説します。
【M5Stack入門】できること・使い方
M5Stackできること・使い方について入門者向けに紹介します。

コメント

タイトルとURLをコピーしました