CANopen智能顯示器如何被客戶終端控制(透過實體與虛擬按鍵控制LED燈與指示燈)
前言
控制SmartDisplay需要一個系統介面和通訊協議。本文將以客戶端控制的角度,模擬如何使用Arduino控制SmartDisplay,藉此理解HOST如何發出命令來改變SmartDisplay中指示燈的顏色。 範例情境如下:在UI設計中放置一個觸控按鈕並連接一個實體按鈕。按下實體按鈕或觸控按鈕時,將改變螢幕上指示燈的顏色,並開啟或關閉外部LED燈。
說明
本應用將說明如何透過Arduino開發板控制SmartDisplay3.5吋CAN產品,並解釋如何編程對實體按鈕、觸控按鈕、螢幕上的指示燈和載板上的LED做控制,以及如何接收來自HOST端的命令。其控制主機是一個具備CANbus介面的Arduino mega 2560開發板。
應用系統方塊圖如下所示:
系統方塊圖
本應用需要以下配件:
- Smart Display
- ARDUINO Mega 2560
- ARDUINO Mega 2560的CAN Bus載板
- CAN bus 連接器
- 實體按鈕
- LED
- 軟體GUI-Builder v0.4.2或更高版本
範例分為三個部分:
- 在GUI Builder中設計專案
- 建立和上傳專案
- 編譯Arduino主機
以GUI builder設計專案
首先,建立一個新專案,輸入專案名稱,然後選擇裝置類別,此應用選擇3.5吋的裝置。通訊協議選擇CANopen,顯示方向為橫向模式。接著在UI範本中選擇空白模板,最後點選Create按鈕,如圖所示。
完成上述設定後,會得到一個空白的頁面。
根據應用範例,需要在工作區新增一個觸控按鈕和一個指示燈物件。您可以透過簡單地拖拉來完成此操作:
建立並上傳專案
完成所有前面的步驟後,現在就可以建立專案了。請按照以下步驟操作:
點選GUI Builder工具欄上的"Device"按鈕,並選擇"Device Property"。 在"Device Property"對話方塊中,選擇您所需要的鮑率。請確保選擇的鮑率與您的裝置相同。 按一下"Upload"按鈕,將此專案上傳到您的裝置中。上傳完成後,您的裝置將開始運行該項目。
當上傳專案完成後,您將看到"Upload project completed",此時點選"OK"按鈕,關閉視窗。如下圖所示:
上傳完成後,您將在SmartDisplay上看到開機畫面。
畫面由開機頁面跳至操作頁面代表專案上傳成功:
編譯Arduino主機
Arduino 整合開發環境版本“IDE v2.0.4”用於 Arduino 編碼。 為了實現CAN bus通訊協定,程式中使用了mcp2515_can.h函式庫和其他一些輔助庫。有關更多細節,請參閱Arduino程式碼。其中要注意連接主機和SmartDisplay的位址。如果您想瞭解有關主機和SmartDisplay之間如何通過CAN bus通訊的詳細資訊,請參考GUI Builder通訊欄。在Arduino IDE程式中,所有必需的寄存器位址都已定義,如下圖所示:
在CAN Open結構中,按鈕的index對應於0(0x2000),指示燈的index對應於1(0x2001)。重要的是要注意物件的index。如果知道物件的index,就可以在Arduino主機程式中去更改物件的狀態,下圖命令欄位可觀察出對應的物件index:
這裡定義了物件的資料類型。如果使用者想要新增更多的物件,則需要在這裡定義其資料類型:
下圖為如何透過“ObjectFunCallback”中處理每個物件的接收值。使用者可以在此程式碼下面修改或新增更多項目。
當Arduino主機從實體按鈕接收到值的變更時,它將通過CAN 訊號向SmartDisplay發送特定的值。請參考以下程式來了解“command structure ids and sub-indexes”。這段程式的目的是根據從實體按鈕更改的值來更新指示燈(object index 2)的值。
在Arduino IDE程式中,您需要定義物件的寄存器位址、接腳模式和外部配件的設置,例如實體按鈕和LED接腳的輸入或輸出,以及設定鮑率。
最後,在迴圈中定義任務以執行決定的情境。當按下實體按鈕或觸控按鈕時,將更改螢幕上指示燈的顏色並打開或關閉外部LED。
透過Arduino IDE成功驗證並上傳此程式後,透過按下實體按鈕或觸控按鈕,可以打開LED並將指示燈顏色更改為綠色。當指示燈顯示為紅色且LED關閉時,表示既未按下實體按鈕也未按下觸控按鈕。如下圖所示:
請參考GitHub連結下載上述程式,並可以在範例中找到有關此範例專案的詳細資料。下方是實際的硬體設置圖:
最後就可以透過按下實體按鈕或觸控按鈕來更改螢幕指示燈與LED狀態來完成SmartDisplay的範例。
結語
本文的目的是推廣GUI Builder的操作和應用,不只讓使用者瞭解如何通過使用CAN bus來設計自己的主機控制器。還可以瞭解如何通過主機端接收和發送命令,並可以對SmartDisplay進行全面的控制。