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进行全面的控制。