首页 解决方案 如何通过 CANopen 从客户端主机控制智能显示器?(以仪表控制为例)

如何通过 CANopen 从客户端主机控制智能显示器?(以仪表控制为例)

May 04,2022

介紹

此前在介绍智能显示器产品时,我们主要聚焦于产品本身的功能与特性,而较少从客户终端主机的角度说明如何控制智能显示器。本文以仪表为例,介绍如何通过实体控制器和主机(Arduino)进行数据传输,并将数据更新至智能显示器模块,实现仪表显示与控制端数据联动。

本示例采用 4.3 英寸 CAN Bus 智能显示器,通过主机控制 240 度仪表显示。主机采用 Arduino Mega 2560 开发板,并搭配 CAN Bus Shield 和旋转角度传感器。所需组件如下:

  1. 4.3 英寸 CAN Bus 智能显示器
  2. Arduino Mega 2560 开发板
  3. CAN Bus Shield
  4. 旋转角度传感器
  5. CAN Bus Dongle
  6. GUI Builder
 

系统框图

智能显示器 CANopen 主机控制系统框图

步骤 1:使用 GUI Builder 设计项目

1.1 新建项目,并在 GUI Builder 中选择 4.3 英寸显示器的空白模板。

在 GUI Builder 中新建 4.3 英寸智能显示器项目

1.2 在 Resource 面板中设置 Background Style 0,并选择黑色背景图片。

在 GUI Builder 中为 Background Style 0 选择黑色背景图片

1.3 在 Gauge Edit 窗口中设置指针的旋转角度。

►首先,选择 Gauge Style 6,然后单击 Modify 按钮。

在 GUI Builder 中修改 Gauge Style 6

►选择后,Gauge Editor 窗口中会显示仪表预览,如下图所示。

GUI Builder Gauge Editor 中的仪表预览

►勾选 "Show Details",可查看更多与指针旋转相关的设置参数。

GUI Builder 中 Gauge 指针旋转的 Show Details 设置

►可通过 Degree 区域中的 +/- 按钮调整指针的最小和最大角度,如下图所示。

在 GUI Builder 中调整 Gauge 指针的最小和最大角度

Value Range 由最小值和最大值组成。当通过 CAN Bus 接收到数值时,系统会将其映射至指针的最小和最大旋转角度。

在 GUI Builder 中设置 Gauge Value Range

►完成仪表设计后,可向右拖动 Test Value 滑块检查显示效果。随着 Test Value 增大,指针角度也会随之增加,直至达到设定的最大值和最大角度。

使用 GUI Builder Test Value 测试 Gauge 指针旋转效果

步骤 2:构建并上传项目

2.1 完成上述设置后,切换至 Page Info 页面,并将 Gauge Style 6 拖动至屏幕中央。

2.2 通过 USB2CAN 将 PC 与智能显示器连接,然后依次单击 "Connect Device" 和 "Upload the Project" 图标。GUI Builder 会将图片资源及页面设置上传至智能显示器模块,如下图所示:

通过 GUI Builder 连接智能显示器并上传项目

GUI Builder 项目上传进度信息

2.3 屏幕将从启动画面切换至操作画面。当 4.3 英寸 CAN Bus 智能显示器出现如下画面时,表示项目已成功上传。

项目上传完成后 4.3 英寸智能显示器显示 240 度仪表

步骤 3:编程 Arduino 主机

用于智能显示器 CANopen 控制的 Arduino 主机编程设置

3.1 切换至 GUI Builder 的 Page 页面。根据 CANopen 架构定义,Gauge Style 6 的索引对应 object 0(0x2000)。在 Arduino 主机编程时,需要记录对象的索引。通过已知索引,可以轮询或修改对应对象的状态,具体可参考下方示例代码。

3.2 Arduino 主机可通过 "ConfigSmartDisplay" 函数设置 object 0 的类型、x/y 位置、样式、配置参数及背景图片。也可以不通过 Arduino 主机进行额外配置,由智能显示器读取板载 Flash 中已有的对象数据(由 GUI Builder 上传),并将已配置的对象显示在屏幕上。

Arduino 代码配置智能显示器对象参数

Arduino ConfigSmartDisplay 函数配置对象示例

3.3 当 Arduino 主机检测到旋转角度传感器的数值变化时,会通过 CANopen 将对应数值发送至智能显示器。

请参考以下程序中的关键命令结构 ID 和 sub-index。该程序用于根据旋转角度传感器接收到的数值变化,更新仪表数值(object index 0)。

Arduino CANopen 程序更新智能显示器 Gauge 数值

附录:项目设置资料

有关上述程序的更多详细信息,请参考以下 GitHub 代码库:https://github.com/Smart-Display-Series/SmartDisplay_CANbus_Arduino_Examples。下方视频展示了实际硬件配置及运行效果。

 

免费试用 WINSTAR GUI Builder。 填写申请表,即可通过电子邮件获取 GUI Builder 下载链接。

对显示器解决方案有疑问?您想做的,由我们实现。 联络我们!

订阅

接收最新显示器技术知识与新品消息

联络我们

价格/规格书/一般查询

技术支持

联系我们询问技术内容

go top
联络我们
close

我们重视您的隐私

通过点击「允许所有 Cookie」,代表您同意在您的设备上存储 Cookie 以增强网站浏览体验、分析网站使用情况并协助我们的营销和网站效能优化工作。您可以在我们的隐私权政策中找到有关于此的更多信息。

我们重视您的隐私

Winstar 及部分第三方在 www.winstar.com.tw 上使用 cookies。关于 cookie 的种类、用途及相关第三方的详细信息,请参见下文及我们的《Cookie 政策》。请点击“允许全部”来同意我们使用 cookies,以确保您在我们网站上获得最佳体验。您也可以设置您的偏好或拒绝 cookies(必要的 cookies 除外)。

管理同意声明

永久启用
必要的 Cookie

这些 Cookie 是必不可少的,以便让您在浏览网站并使用其功能上有更好地体验,例如设置您的隐私偏好、登录或填写窗体。

分析 Cookie

这些也被称为「统计cookie」,用于收集您使用网站的信息,例如您访问了哪些页面以及点击了哪些连结。查看详细信息