ホーム 技術フォロー Smart ディスプレイ カスタムCAN経由でSmart Displayのページを切り替えるコマンドを送信する方法

カスタムCAN経由でSmart Displayのページを切り替えるコマンドを送信する方法

序文

Smart Displayを促進するために、CANopenやカスタム CAN ID などさまざまな通信プロトコルを提供します。CANopenはさまざまなタイプのデバイスの通信プロファイル、デバイスプロファイル、オブジェクトモデルを定義する標準化されたプロトコルです。CANバス上のデバイスを構成、監視、制御するための標準化された方法を提供します。 一方、カスタムCAN ID プロトコルはCANバス上のデバイスに独自の機能がある場合、または既存の標準プロトコルでは満足できない場合に使用されます。 標準のプロトコルと比較して、カスタムCAN IDは優れた柔軟性と効率を実現できます。

序章

この記事ではカスタムCAN ID を通じてArduino モジュール、CANバスモジュール、センサーを制御する方法を説明します。また、プロジェクトで使用されるハードウェアコンポーネントの概要、プログラムのコンパイルについても詳しく紹介します。カスタムCAN IDを介して Smart Display 7 インチ ページを切り替える方法を学びましょう。
初心者でも経験豊富な開発者でも、この記事でコンポーネントを使用してデバイスを制御する方法をより深く理解するでしょう。Arduino モジュール、CANバスモジュール、カスタム CAN ID プロトコルを使用してより多くのプロジェクトを実践できるようにするのに役立ちます。

図1 システムブロック図

図1 システムブロック図

 

この記事で使用するArduinoモジュールの開発環境はArduino IDE v2.0.4です。CANbusインターフェイスを使用して Smart Displayと通信するには、Arduino ホストに CANバス拡張モジュールを装備する必要があります。このモジュールは、MCP2515 CAN コントローラと MCP2551 CAN トランシーバを使用して通信します。

このアプリケーションには次のアクセサリが必要です。
  • 7 インチのスマートディスプレイ(Smart Display)
  • ARDUINOメガ2560
  • ARDUINO Mega 2560用CANバスシールド
  • CANバスドングル
  • 物理ボタンセンサー
  • LED
  • ソフトウェア GUI ビルダー v0.4.5(以上)


この例は3 つの部分に分かれています
  • GUIビルダーでプロジェクトを設計します。
  • プロジェクトを作成してアップロードします。
  • プロジェクトを作成してアップロードします。

GUI ビルダーでデモ プロジェクトを設計する

まず、最新版のGUI ビルダーを起動して新規プロジェクトを作成します。プロジェクトに名前を割り当てると、プロジェクトフォルダーが自動的に選択されます。デバイスタイプ (この場合は7インチ) を選択して、プロトコル「カスタム CAN ID(custom CAN ID)」を選択します。デフォルトではディスプレイの向きは横向きモード(landscape mode)になります。ブランクのUI テンプレートを選択して作成ボタン(create)をクリックすれば、図2のような新規プロジェクトは生成します。

図2

図2

上記の設定が完了すると、以下のページは表示されます。

図3

図3

この応用例では2ページ目を追加するので、「ページ」ボタンをクリックしてプラス記号をクリックしてください。

図4

図4

背景のスタイルは[リソース] のページで変更できます。

図5

図5

操作画面右側の背景メニューでは好ましい背景スタイルを選択できます

図6

図6

プロジェクトを作成してアップロードする

レイアウト設計と前の手順が完了したら、プロジェクトをSmartDisplay にアップロードできます。[デバイス(Device)]をクリックして[デバイスのプロパティ(Device Property)] を選択します。互換性を確保するために、ArduinoコードとGUI ビルダーの両方でボーレートを同じ値にご設定ください。「アップロード」をクリックして、このプロジェクトをデバイスにアップロードします。 アップロード完了後、デバイスでプロジェクトの実行が開始されます。

図7

図7

プロジェクトのアップロードが完了したら以下の図のように [OK] をクリックしてください。

図8

図8

アップロード完了後、図 9 のような開始画面は表示されます。

図9

図9

図10のように画面が起動ページから操作ページに切り替えると、プロジェクトのアップロードが成功したことを意味します。

図10

図10

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

カスタムCAN ID通信プロトコルは「mcp2515_can.h」ライブラリを使用して、そして、Serial Peripheral Interface(SPI)通信には「SPI.h」というライブラリを使用します。
mcp2515_can.hライブラリは、組み込みシステムで広く使用されているCANコントローラであるMCP2515 CAN (Controller Area Network)コントローラとのインターフェースに使用されます。このライブラリは、MCP2515の初期化、ビットレート、フィルタおよびマスク設定などの CAN 通信設定、CAN メッセージの送受信、およびエラーのチェックを行うための関数を提供します。 Arduino IDEプログラムでは、必要なレジスタ アドレスはすべて下図11のように定義されています。また、これはコードの後半で使用されるさまざまなグローバル変数、定数、配列と、それらに対応するデータ型を初期化します。

図11

図11

このコード部分はsetup() 関数で、プログラムの先頭で1 回だけ呼び出されます。シリアルモニタのシリアル通信は、Serial.begin()を使用してボーレート115200で初期化されます。pinMode()を使用して、ピン13 の内蔵LEDを出力として設定されて、物理ボタンを入力として設定されます。while ループでMCP2515 CAN コントローラーを初期化します。CAN.begin() 関数を使用してボーレートパラメーター (250K)としてCAN_250KBPS を設定します。

図12

図12

changePageFunction() 関数は、表示モードを切り替えるコマンドを MCP2515 に送信します。 特定のデータバイトを含むメッセージを送信することで切り替えますまず「デバイス モード(device mode)」コマンドを送信してMCP2515 を構成モードに切り替えます。次に、切り替えたいページ番号を指定して「ページ変更(page change)」コマンドを実行し、最後に「デバイス モード(device mode)」コマンドを送信してMCP2515 をディスプレイモードに戻します。

図13

図13

この関数はsetup()関数使用後に繰り返し実行されるloop()関数です。analogRead()で読み取った物理ボタンの電圧値をbuttonValue変数に保存します。 buttonValue がTHRESHOLD 値より大きい場合、物理ボタンが押されたという意味です。この場合、関数はnowPage変数を 1 ずつインクリメントし、sprintf()とSerial.println()を使用して現在のnowPage値をシリアルモニターに転送します。
次に、関数は現在のnowPage値を指定したchangePageFunction()で目的の表示ページに切り替えます。nowPage 値が0でない場合は、digitalWrite()を使用してピン13の内蔵LEDをオンにします。そうしないとLED がオフになります。 lastDebounce変数は、millis()を通して現在時刻を更新して、最後にボタンが押された時刻を保存します。この関数は、whileループ内でbuttonValueを継続的に読み取って物理ボタンが解放されるのを待ちます。
最後に、CAN バスメッセージが適切な間隔で送信できるように、ループの最後でlate(100)を設定して遅延を作成します。

図14

図14

詳細については、Arduinoコードをご参照ください。ホストとSmartDisplayを接続するアドレスによくご注意ください。もっと詳しい情報に関しては、GUI ビルダーの通信セクションをご確認願います。

付録: プロジェクトのセットアップ

Arduino IDEでプログラムの検証とアップロードが成功したら、タイムボタンを押してページを切り替えることができます。 画面に最初のページが表示されると、LED が消えます。 図15のように、物理ボタンを押すと2ページ目に切り替わってLED が点灯します。

図15

図15

プロジェクトがようやく完了しました。 上記のプログラム、デモビデオ、詳細資料をダウンロードするには、GitHub リンク https://bit.ly/3oT0o5Mをご参照ください。また、実際のハードウェア構成は図16の通りです。

図16

図16

結論

Arduino開発ボードとMCP2515 CANコントローラーを通すと、物理ボタンでSmartDisplayを制御できます。この記事では、MCP2515 にコマンドを送信して表示モードを切り替える方法と物理ボタンの電圧を読み取ってこれらのコマンドをトリガーする方法を説明します。このシステムは、ボタン、センサー、その他のコンポーネントなどの機能まで拡張できます。自動車、産業用制御、スマート家電などの幅広いアプリケーションで使用できて、柔軟で使いやすいプラットフォームを提供します。

製品カテゴリ一覧へ戻る
go top
close