私たちはあなたのプライバシーを大切にします
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー
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 と通信します。
システムブロック図を以下に示します。

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

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

以上の設定により、物理ボタンまたは Smart Display 上のタッチボタンを使用して、画面上の Indicator の状態と外部 LED を制御でき、Smart Display の CANopen 通信デモが完成します。
本例では、GUI Builder の操作と活用方法を紹介するとともに、CAN Bus を使用したホスト側制御アプリケーションの開発方法について説明しました。また、ホストからコマンドを送受信して Smart Display を制御する方法についても紹介しました。本例を通じて、開発者はホストと Smart Display 間の CANopen 通信および制御方法への理解を深め、今後の Smart Display アプリケーション開発の参考として活用できます。
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー