ホーム ソリューション ホストと Smart Display の CANopen 通信 (ボタン/インジケータ制御)

ホストと Smart Display の CANopen 通信 (ボタン/インジケータ制御)

July 25,2023

イントロダクション

ホストと Smart Display 間の CANopen 通信

Smart Display を制御するには、システムインターフェースと通信プロトコルが必要です。本記事では、ホスト側から Smart Display を制御する実装例として Arduino を使用し、HOST からコマンドを送信して Smart Display 上の Indicator の色を変更する方法を紹介します。この例では、UI 上にタッチボタンを配置し、Arduino に物理ボタンを接続します。物理ボタンまたはタッチボタンを押すと、画面上の Indicator の色が変わり、外部 LED の ON/OFF が切り替わります。

本アプリケーションでは、Arduino 開発ボードを使用して 3.5 インチ CAN Smart Display を制御する方法を紹介します。物理ボタン、タッチボタン、画面上の Indicator、およびボード上の LED をプログラムで制御する方法に加え、Smart Display が HOST からのコマンドを受信する仕組みについて説明します。本例では、CAN Bus シールドを搭載した Arduino Mega 2560 をホストコントローラとして使用し、CANopen を介して Smart Display と通信します。

システムブロック図を以下に示します。

Arduino ホストと Smart Display 間の CANopen 通信

システムブロック図

本アプリケーションには、以下の機器およびソフトウェアが必要です。

  1. 3.5 インチ CANopen Smart Display
  2. Arduino Mega 2560
  3. Arduino Mega 2560 用 CAN Bus シールド
  4. CAN Bus ドングル
  5. 物理ボタン
  6. LED
  7. Smart Display GUI Builder v0.4.2 以降
 

本デモは、以下の3つの手順で構成されています。

  1. GUI Builder でプロジェクトを設計
  2. プロジェクトをビルドしてアップロード
  3. Arduino ホストをプログラミング
 

GUI Builder でプロジェクトを設計

まず、新規プロジェクトを作成し、プロジェクト名を入力します。次にデバイスタイプを選択します。本例では 3.5 インチデバイスを使用します。通信プロトコルには CANopen を選択し、画面の向きを Landscape に設定します。続いて、UI テンプレートから Blank Template を選択し、最後に Create をクリックして新規プロジェクトを作成します。設定例を以下に示します。

GUI Builder で CANopen Smart Display プロジェクトを作成

設定が完了すると、空白のページが表示されます。

GUI Builder で作成した Smart Display の空白ページ

本アプリケーション例では、ワークスペースにタッチボタンと Indicator ウィジェットを追加します。コントロールパネルから必要なウィジェットを選択し、ワークスペースへドラッグ&ドロップします。配置例を以下に示します。

GUI Builder にタッチボタンと Indicator ウィジェットを配置

プロジェクトのビルドとアップロード

前述の設定と UI デザインが完了したら、プロジェクトをビルドしてアップロードします。GUI Builder のツールバーで Device をクリックし、Device Property を選択します。Device Property ウィンドウでは、デフォルトのボーレート(Baud Rate)を使用するか、アプリケーションの要件に応じて変更できます。Arduino プログラムで設定した Baud Rate と GUI Builder の設定が一致していることを確認してください。設定が完了したら Upload をクリックし、プロジェクトを Smart Display にアップロードします。操作例を以下に示します。

GUI Builder から Smart Display にプロジェクトをアップロード

プロジェクトのアップロードが完了すると、「Upload project completed」と表示されます。OK をクリックしてウィンドウを閉じます。

Smart Display プロジェクトのアップロード完了画面

アップロードが完了すると、Smart Display に起動画面が表示されます。

プロジェクトアップロード後の Smart Display 起動画面

起動画面の後、Smart Display はアップロードしたアプリケーション画面に切り替わります。これにより、プロジェクトのビルドとアップロードが正常に完了したことを確認できます。

アップロードしたアプリケーション画面を表示する Smart Display

Arduino ホストのプログラミング

本例では、Arduino IDE v2.0.4 を使用して Arduino ホストのプログラムを作成します。CAN Bus 通信には mcp2515_can.h ライブラリおよび複数の補助ライブラリを使用しています。詳細については、Arduino のプログラムコードを参照してください。ホストと Smart Display 間の通信を確立する際は、各オブジェクトに関連付けられたアドレスを確認することが重要です。ホストと Smart Display 間の CAN Bus 通信について詳しく確認する場合は、GUI Builder の通信ログを参照してください。Arduino IDE のプログラムには、必要なオブジェクトアドレスが以下のように定義されています。

Arduino ホストプログラムの Smart Display CANopen 通信設定

CANopen の構造では、Button の index は 0(0x2000)、Indicator の index は 1(0x2001)に対応します。各オブジェクトの index を確認することが重要です。オブジェクトの index が分かれば、Arduino ホストプログラムからそのオブジェクトの状態を変更できます。各オブジェクトに対応する index は、以下のシミュレーションログテーブルに表示されるコマンド情報から確認できます。

GUI Builder の通信ログに表示される Button の index

 

GUI Builder の通信ログに表示される Indicator の index

ここでは、各オブジェクトのデータ型(Data Type)を定義します。オブジェクトを追加する場合は、対応するデータ型もプログラム内で定義する必要があります。

Arduino プログラムでの CANopen オブジェクトのデータ型定義

以下の図は、ObjectFunCallback で各オブジェクトから受信した値を処理する方法を示しています。アプリケーションの要件に応じて、コードを変更したり、他のオブジェクトを処理するロジックを追加したりできます。

ObjectFunCallback による CANopen オブジェクト受信値の処理

Arduino ホストが物理ボタンの状態変化を検出すると、CANopen を介して対応する値を Smart Display に送信します。コマンド構造で使用される ID と sub-index については、以下のプログラムコードを参照してください。この部分のプログラムでは、物理ボタンの状態に応じて Indicator(object index 2)の値を更新します。

Arduino ホストから CANopen で Indicator を更新するプログラムコード

すべてのオブジェクトのレジスタアドレスを定義し、物理ボタンや LED などの外部コンポーネントに使用するピンを入力または出力に設定するとともに、ボーレートを設定します。設定例を以下に示します。

Arduino プログラムでのオブジェクトのレジスタアドレスとピン設定

Arduino プログラムでの CAN Bus ボーレート設定

最後に、このアプリケーションの動作に必要な処理を loop() 内に定義します。物理ボタンまたは Smart Display 上のタッチボタンを押すと、画面上の Indicator の色が変わり、外部 LED の ON/OFF が切り替わります。

Arduino の loop() によるボタンと Indicator の制御処理

Arduino IDE でプログラムを正常に検証してアップロードした後、物理ボタンまたは Smart Display 上のタッチボタンを押すと、LED が点灯し、Indicator の色が緑色に変わります。Indicator が赤色で LED が消灯している場合は、物理ボタンとタッチボタンのどちらも押されていない状態を示します。

物理ボタンまたはタッチボタンによる Indicator と LED の制御

上記のプログラムは、GitHub リンクからダウンロードできます。サンプルには、本デモプロジェクトに関する追加ファイルや情報も用意されています。実際のハードウェア構成を以下に示します。

Arduino と Smart Display を使用した CANopen 通信デモのハードウェア構成

以上の設定により、物理ボタンまたは Smart Display 上のタッチボタンを使用して、画面上の Indicator の状態と外部 LED を制御でき、Smart Display の CANopen 通信デモが完成します。

まとめ

本例では、GUI Builder の操作と活用方法を紹介するとともに、CAN Bus を使用したホスト側制御アプリケーションの開発方法について説明しました。また、ホストからコマンドを送受信して Smart Display を制御する方法についても紹介しました。本例を通じて、開発者はホストと Smart Display 間の CANopen 通信および制御方法への理解を深め、今後の Smart Display アプリケーション開発の参考として活用できます。

ディスプレイ ソリューションについてのご質問はあるのでしょうか。 お問合わせ!

配信申し込み

Winstar からの最新情報を受け取ります。

お問合わせ

価格/データシート/一般的なお問合せ

技術的なサポート

技術情報についてはお問合せください。

go top
お問合わせ
close

私たちはあなたのプライバシーを大切にします

「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー

私たちはあなたのプライバシーを大切にします

Winstarおよび特定の第三者は、www.winstar.com.twでクッキーを使用しています。クッキーの種類、目的、および関与する第三者に関する詳細は、以下および当社のクッキーポリシーに記載されています。「すべて許可」をクリックして、当社のクッキー使用に同意し、ウェブサイトでの最良の体験を得てください。また、設定を変更するか、必要なクッキーを除きクッキーを拒否することもできます。

同意設定の管理

常にアクティブ
必須なクッキー

これらのクッキーは、ウェブサイト内を移動したり、プライバシーの設定、ログイン、フォームの記入などの機能を使用できるようにするために不可欠です。

分析用クッキー

「統計クッキー」とも呼ばれるこれらのクッキーは、ウェブサイトの使用方法に関する情報を収集します。たとえば、どのページを訪れ、どのリンクをクリックしたかなどです。詳細を確認してください。