Skip to main content

reTerminal DM CANBUSをNode-REDで使用する

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

reTerminal DM CAN BUSをNode-REDで使用する

CAN BUSについての簡単な情報

pir


CAN BUS & Node-RED

CANバス(Controller Area Networkバス)は、車両や産業システム内の複数の電子制御ユニット(ECU)を接続するために使用されるネットワークの一種です。1980年代にBoschによって開発され、車両やその他のアプリケーションにおけるシリアル通信の国際標準(ISO 11898)となりました。

CANバスはECU間での高速データ交換を可能にし、情報を共有し、活動を調整することができます。2本のワイヤーシステムを使用し、1本はデータ送信用、もう1本はデータ受信用です。また、複数のノードをサポートしており、多くのデバイスが相互に通信する必要がある複雑なシステムに最適です。

CANバス技術は、自動車産業でエンジン制御、トランスミッション制御、ABS(アンチロックブレーキシステム)、エアバッグ制御など、さまざまな用途で広く使用されています。また、産業オートメーション、医療機器、航空宇宙など、デバイス間の信頼性が高く効率的な通信が必要な他の産業でも使用されています。

CANバスには、高い信頼性、低コスト、過酷な環境での動作能力など、多くの利点があります。設置と保守が容易で、電磁干渉に対して非常に強い耐性を持っています。これらの特徴により、信頼性が高く効率的な通信が必要なさまざまなアプリケーションに最適な選択肢となっています。

reTerminal DMでのCAN BUSノードの使用開始

Node-REDでCANバスを使用するには、reTerminal DMのCAN BUSポートに接続するCANバスインターフェースデバイスと、ネットワーク上でメッセージを送受信できるNode-RED CANバスノードが必要です。このチュートリアルでは、node-red-contrib-socketcanノードを一緒に探求します。Node-REDにCANバスノードをインストールしたら、CANバスネットワークからデータを読み取り、それを処理し、他のシステムやデバイスに送信するフローを構築できます。例えば、車両のCANバスからエンジンのRPMを読み取り、データを処理して燃料消費量を計算し、その結果をダッシュボードに表示することができます。

詳細はnode-red-contrib-socketcanページをご覧ください。

Senscraft Edge OSを使用している場合は、Socketcanノードのインストール手順をスキップできます。

前提条件

ハードウェア

ハードウェアの準備

以下のようにハードウェアを接続してください。

ソフトウェア

note

ホストコンピュータは、以下のセットアップ手順を実行するためにreTerminal DMとインターネット接続が可能である必要があります。

Socketcanノードのインストール

このWikiチュートリアルでは、node-red-contrib-socketcanノードを使用します。そのため、ノードのインストールガイドに従ってnode-red-contrib-socketcanをインストールしてください。

reTerminal DMでのCAN BUSの設定
note

reTerminal DMのTerminalアプリに直接アクセスするか、SSH経由でreTerminal DMにアクセスできると仮定します。そうでない場合は、こちらの最初のステップに従って、操作方法を確認してください。

以下のコマンドを1つずつ入力して、reTerminal DMのCAN BUSポートで仮想CANデバイスcan0を有効にしてください。

sudo apt install can-utils
sudo ip link set can0 up type can bitrate 250000
sudo ifconfig can0 txqueuelen 1000
sudo ip link set can0 up

上記のコマンドを入力した後、以下のようにifconfigコマンドでcan0デバイスが表示されるはずです。

ホストコンピュータのUSB-CANソフトウェアとドライバの設定
note

同じUSB-CANアナライザーを使用している場合は、以下の手順に従ってアナライザー用のソフトウェアドライバを設定してください。

USB-CANアナライザードライバのGitHubリポジトリUSB-CAN Analyzer system driverを訪問し、Readmeセクションに従ってオペレーティングシステムに応じたドライバをインストールしてください。

CANバストラフィックを送受信するための例コマンド:

# CANバスからトラフィックをダンプ
$ ./canusb -t -d /dev/ttyUSB0 -s 250000 -t

# CANバスでID 005からバイト0x00112233を送信
$ ./canusb -d /dev/ttyUSB0 -s 250000 -t -i 5 -j 00112233

reTerminal DMでのSocketcanノード

フローのインポート

note

以下の手順はチュートリアル目的のみです。このセクションでは、JSON形式のフローをコピーしてインポートノードのポップアップメニューの入力ボックスに貼り付けることで、フローを迅速にインポートする方法を示します。

STEP 1: 設定ボタンをクリックし、次にインポートボタンをクリックしてインポートノードウィンドウを開きます。

STEP 2: 以下のフローJSONをコピーしてください


[
{
"id": "829af3ee.a57c1",
"type": "tab",
"label": "CAN BUS",
"disabled": false,
"info": ""
},
{
"id": "7b24a62e.8f5458",
"type": "debug",
"z": "829af3ee.a57c1",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 350,
"y": 360,
"wires": []
},
{
"id": "5f671b29.cd24bc",
"type": "socketcan-out",
"z": "829af3ee.a57c1",
"name": "socketcan-out",
"config": "d9bf56bb5f3e2f92",
"x": 150,
"y": 360,
"wires": [
[
"7b24a62e.8f5458"
]
]
},
{
"id": "caba412f.047b2",
"type": "socketcan-in",
"z": "829af3ee.a57c1",
"name": "socketcan-in",
"config": "d9bf56bb5f3e2f92",
"x": 350,
"y": 120,
"wires": []
},
{
"id": "a64240cb.3f0788",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send object - std",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"ext\":false,\"canid\":123,\"dlc\":5,\"data\":[1,2,3,4,5]}",
"payloadType": "json",
"x": 160,
"y": 120,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "3ff96369.ef6f5c",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send string - std",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "123#00112233",
"payloadType": "str",
"x": 160,
"y": 200,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "6879c00a.5edb68",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send string - ext",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "1F334455#1122334455667788",
"payloadType": "str",
"x": 160,
"y": 240,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "1ee3b274.4cb8fe",
"type": "inject",
"z": "829af3ee.a57c1",
"name": "Send object - ext",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "{\"ext\":true,\"canid\":32278,\"dlc\":5,\"data\":[1,2,3,4,5]}",
"payloadType": "json",
"x": 160,
"y": 160,
"wires": [
[
"caba412f.047b2"
]
]
},
{
"id": "391a4c45.7acd8c",
"type": "comment",
"z": "829af3ee.a57c1",
"name": "Send CAN frames in using different payloads on CAN0",
"info": "",
"x": 260,
"y": 80,
"wires": []
},
{
"id": "912f9928.da2758",
"type": "comment",
"z": "829af3ee.a57c1",
"name": "Receiove CAN data from interface CAN0",
"info": "",
"x": 220,
"y": 320,
"wires": []
},
{
"id": "d9bf56bb5f3e2f92",
"type": "socketcan-config",
"interface": "can0"
}
]

STEP 3: Import nodesウィンドウで、Clipboardタブを選択し、上記のJSONフローコードを赤いダイアログボックスに貼り付けてから、importボタンをクリックしてください。

STEP 4: 上記の手順を完了すると、新しいフロータブCAN BUSが作成されているはずです。以下の図と同じフローであることを確認してください。

STEP 5: CANインターフェースを設定するには、socketcan-inノードをダブルクリックしてedit nodeウィンドウを開いてください。

note

Configure CAN BUS on reTerminal DM セクションの手順を完了し、reTerminal DM上でcan0インターフェースデバイスを作成していることを確認してください。

STEP 6: Edit socketcan-in nodeウィンドウで、interfaceオプションの鉛筆アイコンをクリックして、Add new socketcan-config config nodeウィンドウを開いてください。

STEP 7: Add new socketcan-config config nodeウィンドウで、インターフェースダイアログボックスにcan0を入力してください。

STEP 8: 上記の手順でAddボタンをクリックすると、interfacecan0に設定されていることを確認し、Doneをクリックして適用してください。

STEP 9: socketcan-outのCANバスインターフェースを設定するには、socketcan-outノードをダブルクリックし、Configでcan0を選択してからDoneをクリックするだけです。

STEP 10: 今すぐ Deploy をクリックしてください

最終テストと結果

おめでとうございます!これで、reTerminal DM と Node-RED を使用して CAN Bus プロトコルを体験し、学ぶことができました。最終結果は以下の画像のようになるはずです。

ホストコンピュータが CAN Bus データを送信し、reTerminal DM が受信する場合:

  • ホストコンピュータのターミナルウィンドウで ./canusb -d /dev/ttyUSB0 -s 250000 -t -i 5 -j 00112233 コマンドを実行して、reTerminal DM に 00112233(16進数)を送信します。そして、reTerminal DM のデバッグウィンドウで以下のデータが表示されます。
0: 0 
1: 17
2: 34
3: 51

これは x00 x11 x22 x33 の HEX データセットをバイナリで表現したものです。

ホストコンピュータが CAN Bus データを受信し、reTerminal DM が送信する場合:

  • reTerminal DM の Node-RED で以下の画像に示されている inject ボタンをクリックして、ホストコンピュータに 01 02 03 04 05 のデータを送信します。そして、ホストコンピュータのターミナルウィンドウで受信コマンド ./canusb -t -d /dev/ttyUSB0 -s 250000 -t を実行すると、受信データは 05 04 03 02 01 となります。これは FIFO(先入れ先出し)順序で表示されます。

reTerminal DM と Node-RED でさらに多くのノードを探索する

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...