M5Stack(Arduino)とCommuモジュールでCAN通信する方法について紹介します。
CAN通信(標準フォーマット)で送受信
CAN通信の標準フォーマットでは、11bitの識別IDと0~8byteのデータフレームで、データをやり取りします。
CAN通信の通信仕様については以下ページで紹介しています。
429 Too Many Requests
– | 説明 |
---|---|
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通信する方法を解説します。
【M5でIoT入門】基本的な使い方から応用例まで解説
IoTデバイスのM5シリーズ(M5Stack、M5StickCなど)の基本的な使い方から応用例まで解説します。
コメント