私たちはあなたのプライバシーを大切にします
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー
Smart Display は、CANopen や Custom CAN ID など、複数の CAN 通信プロトコルに対応しています。CANopen は、さまざまな種類のデバイスに対応する通信プロファイル、デバイスプロファイル、オブジェクトモデルを定義した標準通信プロトコルであり、CAN バス上のデバイスを設定、監視、制御するための標準化された方法を提供します。一方、CAN バス上のデバイスに固有の機能や要件があり、既存の標準プロトコルでは対応できない場合には、Custom CAN ID を使用してアプリケーション要件に応じた CAN 通信を定義でき、より柔軟な設定が可能です。
本記事では、Arduino ボード、CAN バスモジュール、センサーを使用し、Custom CAN ID を介して 7 インチ Smart Display のページを切り替える方法について説明します。プロジェクトで使用するハードウェア構成、Arduino プログラムのコンパイル、および Custom CAN ID を使用した Smart Display のページ切り替え方法について紹介します。
本デモを通じて、Arduino ボード、CAN バスモジュール、Smart Display 間における Custom CAN ID を使用した通信と制御の基本を理解し、Smart Display の CAN 通信を利用したアプリケーション開発の参考として活用できます。

図1 システムブロック図
本プロジェクトでは、ホストコントローラとして Arduino Mega 2560 を使用し、プログラム開発には Arduino IDE v2.0.4 を使用します。CAN バスインターフェースを介して Smart Display と通信するため、Arduino ホストに CAN バスシールドを接続します。このシールドには MCP2515 CAN コントローラと MCP2551 CAN トランシーバが搭載されており、Arduino ホストと Smart Display 間の CAN バス通信を実現します。
まず、最新バージョンの Smart Display GUI Builder を起動し、新しいプロジェクトを作成します。プロジェクト名を入力すると、プロジェクトフォルダが自動的に選択されます。
デバイスタイプを選択します。本デモでは 7 インチデバイスを選択し、通信プロトコルとして "Custom CAN ID" を選択します。ディスプレイの向きはデフォルトで横向きに設定されています。次に、空白の UI テンプレートを選択し、"Create" ボタンをクリックして新しいプロジェクトを作成します(図2)。

図2
空白のプロジェクトを作成すると、図3に示す画面が表示されます。

図3
本デモでは、2ページ目を追加する必要があります。"Page" ボタンをクリックし、続いてプラスボタンをクリックして新しいページを追加します。

図4
背景スタイルは、"Resource" パネルから変更できます。

図5
画面右側の "background" メニューから、使用する背景スタイルを選択します。

図6
レイアウト設計と前述の手順が完了したら、プロジェクトをビルドしてアップロードします。"Device" ボタンをクリックし、"Device Property" を選択します。プロトコルとボーレートの設定を確認し、必要に応じて変更します。GUI Builder のボーレートが Arduino プログラムで設定したボーレートと一致していることを確認してください。設定が完了したら、"Connect to Device" をクリックします。デバイスが正常に接続されたら、"Upload" をクリックしてプロジェクトをアップロードします(図7)。

図7
プロジェクトのアップロードが完了したら、"OK" をクリックします(図8)。

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

図9
その後、起動画面からプロジェクト画面に切り替わります。これにより、GUI Builder を使用したプロジェクトのビルドとアップロードが正常に完了したことを確認できます(図10)。

図10
Custom CAN ID 通信には mcp2515_can.h ライブラリを使用し、SPI.h ライブラリは Serial Peripheral Interface(SPI)通信に使用します。mcp2515_can.h ライブラリは、組み込みシステムで広く使用されている MCP2515 CAN(Controller Area Network)コントローラとの通信に使用します。
このライブラリには、MCP2515 の初期化、ビットレート、フィルタ、マスクなどの CAN 通信パラメータの設定、CAN メッセージの送受信、エラーチェックなどの機能が用意されています。Arduino IDE のプログラムでは、CAN ID、制御パラメータ、関連変数など、CAN 通信に必要な設定を図11に示すコード内で定義しています。また、このコードでは、後続の処理で使用するグローバル変数、定数、配列を、それぞれのデータ型とともに初期化しています。

図11
このコードには setup() 関数が含まれており、プログラムの起動時に1回だけ実行されます。Serial.begin() を使用してシリアルモニタとのシリアル通信を初期化し、ボーレートを 115200 に設定します。pinMode() を使用して内蔵 LED のピンを出力に設定し、物理ボタンのピンを入力に設定します。続いて while ループで MCP2515 CAN コントローラを初期化し、CAN.begin() に CAN_250KBPS を指定して CAN 通信のビットレートを 250 kbps に設定します。

図12
changePageFunction() 関数は、MCP2515 を介して CAN コマンドを送信し、特定のデータバイトを含む CAN メッセージによって Smart Display のページを切り替えます。まず "device mode" コマンドを送信して Smart Display を設定モードに移行し、次に切り替え先のページ番号を指定した "change page" コマンドを送信します。最後に、再度 "device mode" コマンドを送信して Smart Display を表示モードに戻します。

図13
このコードには loop() 関数が含まれており、setup() 関数の実行完了後に繰り返し実行されます。
プログラムは analogRead() を使用して物理ボタンの電圧値を読み取り、buttonValue 変数に格納します。buttonValue が THRESHOLD の値を上回ると、物理ボタンが押されたと判断します。その場合、nowPage 変数を 1 増加させ、sprintf() と Serial.println() を使用して現在の nowPage の値をシリアルモニタに出力します。
次に、現在の nowPage の値を changePageFunction() に渡し、指定した表示ページに切り替えます。nowPage の値が 0 以外の場合は、digitalWrite() を使用してピン13の内蔵 LED を点灯し、0 の場合は LED を消灯します。lastDebounce 変数は millis() を使用して現在時刻で更新し、直近にボタンが押された時刻を記録します。プログラムは while ループ内で buttonValue を継続的に読み取り、物理ボタンが離されるまで待機します。
最後に、ループの末尾で delay(100) により 100 ms の遅延を設け、CAN バスメッセージが適切な間隔で送信されるようにします。

図14
詳細については、Arduino のコードを参照してください。ホストと Smart Display 間の通信を確立する際は、関連する CAN 通信設定が正しく設定されていることを確認してください。ホストと Smart Display 間の通信について詳しく確認する場合は、GUI Builder の通信ログを参照してください。
Arduino IDE でプログラムの検証とアップロードが正常に完了すると、物理ボタンを使用して表示ページを切り替えることができます。Smart Display に1ページ目が表示されているときは LED が消灯しています。物理ボタンを押すと2ページ目に切り替わり、同時に LED が点灯します(図15)。

図15
以上で、Custom CAN ID を使用した Smart Display のページ切り替えデモは完了です。
プログラム、デモ動画、および関連資料をダウンロードするには、GitHub プロジェクトページを参照してください。実際のハードウェア構成を図16に示します。

図16
本例では、Arduino ボードと MCP2515 CAN コントローラを使用し、Custom CAN ID を介して Smart Display のページを切り替える方法を紹介しました。Arduino ホストが物理ボタンからの入力を読み取り、MCP2515 を介して Smart Display に CAN コマンドを送信することで、表示ページを切り替えます。
本例を通じて、Arduino ホストと Smart Display 間における Custom CAN ID の基本的な通信および制御方法を理解し、今後の Smart Display CAN 通信アプリケーション開発の参考として活用できます。
「すべてのクッキーを許可」をクリックすると、サイトのナビゲーションを向上させ、サイト使用状況を分析し、マーケティングおよびパフォーマンスの取り組みを支援するために、クッキーをデバイスに保存することに同意したことになります。この件に関する詳細情報は、ポリシーをご覧ください。プライバシーポリシー