中国 - 标记 中国

请确认您选择的货币:

人民币
国际贸易术语:DDP
所有价格均包括关税和海关费用。

Bench Talk for Design Engineers

贸泽电子 - 博客

rss

Bench Talk for Design Engineers | The Official Blog of Mouser Electronics


手把手教你如何将ADICUP3029连接到Medium One物联网云端 Greg Toth

Analog Devices® EVAL-ADICUP3029是一个物联网开发平台,具有超低功耗Arm® Cortex®-M3混合信号微控制器、蓝牙和Wi-Fi连接以及用于Arduino®和Pmod附加板的扩展头。Medium One IoT Prototyping Sandbox是一个基于云的物联网平台,可帮助早期开发人员对物联网项目进行原型设计,或将现有硬件连接到云端。在本项目中,我们将借助于ADICUP3029设置一个IoT开发环境,以通过MQTT读取硬件传感器并将所读数据传送到Medium One云端。一旦数据传输到Medium One,便可通过可编程工作流和可配置的小部件仪表板来处理和查看。

项目物料与资源清单

该部分列出了项目所用的元器件BOM,以及其他硬件和软件开发工具。

项目BOM

Analog Devices EVAL-ADICUP3029开发平台
Analog Devices EVAL-ADT7420-PMDZ温度传感器
Medium One IoT Prototyping Sandbox

硬件

11 b/g/n Wi-Fi接入点,具有DHCP服务器,支持Internet连接,但却没有可以阻止传出通信(到Internet)的防火墙或代理
运行Windows®操作系统的个人电脑 (PC)

帐户与软件

用于访问软件下载网站和Medium One IoT Prototyping Sandbox的Web浏览器
Medium One IoT Prototyping Sandbox的登录帐户
Analog Devices CrossCore® Embedded Studio集成开发环境 (IDE)
GitHub存储库中提供的应用项目文件,单击此处即可查看
Wi-Fi接入点连接详细信息,包括SSID和密码

项目技术概述

Analog Devices EVAL-ADICUP3029

ADICUP3029 (图1) 是一个类似于Arduino的开发平台,基于ADuCM302x系列超低功耗集成式混合信号微控制器系统,可用于处理、控制和连接操作。此平台提供了蓝牙和Wi-Fi 连接选项,便于创建与其他系统和设备进行无线通信的物联网 (IoT) 应用。因为同时组合了电路板、微控制器与板载元件,可为开发人员提供:

ADuCM3029 32位ARM Cortex-M3微控制器
256kB闪存
64kB SRAM存储器
Wi-Fi连接
蓝牙5.0连接
多个模拟和数字输入/输出
串行UART
I2C
多条SPI总线
板载串行线调试 (SWD) 端口,可通过USB电缆编程和调试应用程序代码;还能提供与ADuCM3029的虚拟串行端口连接
两个板载LED
Arduino Uno Rev3兼容接口
4引脚I2C Grove I/O接口
I2C和SPI PMOD I/O接口
电池座
支持7V至12V DC电压的直流插座

可从以下两处获得ADICUP3029的相关技术文档:

1 https://www.analog.com/cn/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-adicup3029.html
2 https://wiki.analog.com/resources/eval/user-guides/eval-adicup3029

EVAL-ADICUP3029 Development Board

图1:EVAL-ADICUP3029开发板 (来源:贸泽电子)

Analog Devices EVAL-ADT7420-PMDZ温度传感器评估板

EVAL-ADT7420-PMDZ(图2)为高精度数字温度传感器评估板,可通过I2C PMOD与ADICUP3029接口。此传感器用于测量温度,精度为+/- 0.25°C,额定工作温度范围为-40°C至150°C。

EVAL-ADT7420-PMDZ Temperature Sensor

图2:EVAL-ADT7420-PMDZ温度传感器评估板 (来源:贸泽电子)

可从以下两处获得EVAL-ADT7420-PMDZ的相关技术文档:

1 https://wiki.analog.com/resources/eval/user-guides/eval-adicup360/hardware/adt7420
2 https://www.analog.com/cn/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-ADT7420-PMDZ.html

Analog Devices CrossCore Embedded Studio

微控制器所用固件程序通常借助于个人电脑上运行的集成开发环境 (IDE) 进行开发和测试。IDE提供了一个编译器、汇编器、链接器、调试器和一种将二进制程序图像传输到微控制器的机制。

ADICUP3029可以使用Analog Devices的CrossCore Embedded Studio进行编程,这是一种运行在Windows和Linux上的基于Eclipse的IDE,通过支持编程和调试的USB电缆连接到ADICUP3029。您可从CrossCore Embedded Studio网站免费下载CrossCore Embedded Studio。

项目应用源代码文件

对于这个项目,CrossCore Embedded Studio用于创建一组初始的项目源代码文件,这些文件已经过修改和扩展,可以用于Medium One IoT Prototyping Sandbox。生成的文件已放入GitHub存储库中,可以下载下来用于此项目。项目文件将导入到CrossCore Embedded Studio IDE中,在那里进行编译并下载到ADICUP3029板上。项目文件由主应用程序以及用于MQTT和I/O处理的支持函数组成。

Medium One IoT Prototyping Sandbox

Medium One IoT Prototyping Sandbox(图3)旨在帮助早期开发人员构建物联网项目原型或将现有硬件连接到云。它提供了一个物联网数据智能平台,使客户能够轻松快速地构建物联网应用。可编程工作流允许您快速构建处理逻辑,而无需创建自己的复杂软件堆栈。可配置的仪表板允许您可视化应用程序数据并以各种格式查看实时数据。Medium One的iOS和Android应用程序允许您构建简单的移动应用程序仪表板,并通过IoT Prototyping Sandbox与您的设备进行通信。

Medium One IoT Prototyping Sandbox

图3:Medium One IoT Prototyping Sandbox (来源:贸泽电子)

物联网设备可以通过REST API或MQTT与Medium One交换数据。关于Medium One IoT Prototyping Sandbox的更多信息,可以在这里Medium One网站上找到。

硬件设置

设置硬件时,须牢记电子元器件是静电敏感元件,要进行相应处理。

个人电脑 (PC)

给电脑接通电源并开机。

Wi-Fi 接入点

请确保Wi-Fi接入点与Internet和分配了IP地址的DHCP服务器建立了有效连接。您需要知道接入点SSID、安全类型以及稍后配置电路板Wi-Fi模块时要使用的安全凭证。

ADICUP3029和EVAL-ADT7420-PMDZ

拆开ADICUP3029板和Wi-Fi模块的包装,并按照此处ADICUP用户指南中的说明将它们连接起来。

将EVAL-ADT7420-PMDZ温度传感器评估板连接至ADICUP3029 8针PMOD接口 (P9),确保针脚编号正确匹配。S2 UART开关应位于WI-FI位置,S5电源开关应位于WALL/USB位置。

使用USB电缆将ADICUP3029板连接到电脑。可以通过检查本地设备和驱动器列表中是否显示“DAPLINK”驱动器来验证连接是否成功。

软件设置

下载并安装CrossCore Embedded Studio (CCES)

请遵照EVAL-ADICUP3029 User GuideCrossCore Embedded Studio Quickstart User Guide中的说明将CrossCore Embedded Studio下载并安装到PC中。注册序列号在ADICUP3029包装中随附的卡片上。请务必按照CCES快速入门指南中的说明安装设备系列包、主板支持包、传感器软件包和Wi-Fi软件包。您可以运行blink_example程序来验证您的硬件和软件是否正常运行。

下载并导入项目应用源代码文件

通过Web浏览器访问GitHub 存储库并找到ADuCM3029_ MediumOne_1.0.0.zip文件,右键单击选择Download 将其下载到电脑。

在CCES中选择File > Import… > General > Existing Projects into Workspace并单击Next

选中Select archive file并单击Browse以找到从GitHub下载的.zip文件。选择ADuCM3029_MediumOne 项目,然后单击Finish。导入后,Project Explorer选项卡应如图4所示。

After Importing the Project Source Code Files into CrossCore Embedded Studio

图4:将项目源代码文件导入CrossCore Embedded Studio (来源:贸泽电子)

在设置好Medium One后,我们需要再次回到源代码文件。

设置Medium One IoT Prototyping Sandbox

通过Web浏览器访问Medium One IoT Prototyping Sandbox并登录,将看到图3所示的初始仪表板。然后,依次单击Setup > Manage Users > Add New User

Username设置为mydevice,在密码字段中连续输入两次密码,单击Save。随后将在Manage API Users列表中,显示图5所示Login ID = mydevice的新用户帐户,以及自动生成的用户MQTT ID

Newly Created User ID With Auto-Generated MQTT ID

图5: 新创建的用户ID与自动生成的MQTT ID (来源:贸泽电子)

单击Setup > MQTT,将看到如图6所示的Project MQTT ID与一组端口号。

Project MQTT ID

图6:Project MQTT ID (来源:贸泽电子)

Medium One需要使用MQTT用户名与密码进行认证。MQTT用户名由Project MQTT ID正斜杠和用户MQTT ID组成。比如,如果项目MQTT ID是“ZHxxxxxxx0Y”,用户MQTT ID是“sTxxxxxxx8w”,那么相应的MQTT用户名应为“ZHxxxxxxx0Y/sTxxxxxxx8w”。

接下来,需要创建MQTT密码。首先依次单击Setup > Manage API Keys > Add New API Key,在描述字段下输入mydevice,确保选中Enabled,然后单击Save,将看到图7所示的界面。

Newly Created API Key

图7:新创建的API密钥 (来源:贸泽电子)

MQTT密码由API密钥、正斜杠和mydevice用户密码组成。例如,如果API密钥为“PZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMBQ”,而mydevice用户密码为“AaaaBbbb3”,则相应的MQTT密码将为“PZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMBQ/AaaaBbbb3”。

MQTT主题的格式为:“0/Project MQTT ID/User MQTT ID/Device ID”。

Device ID字段可以是任何内容,我们将使用“mydevice”作为Device ID。例如,如果项目MQTT ID是“ZHxxxxxxx0Y”,而用户MQTT ID是“sTxxxxxxx8w”,则相应的MQTT主题将是“0/ZHxxxxxxx0Y/sTxxxxxxx8w/mydevice”。

MQTT用户名、MQTT密码和MQTT主题字符串将在下一步添加到项目源代码中。

更新Medium One帐户参数的应用源代码文件

设置Wi-Fi连接参数

在编辑器中打开项目文件src/ADuCM3029_MediumOne.h。找到下列变量并将其设置为您自己的Wi-Fi SSID和密码字符串:

aWifiSSID
aWifiPassword

设置Medium One连接参数

In the same src/ADuCM3029_MediumOne.h file, find these variables and set them to your own Medium One MQTT parameter strings as described earlier:

在同一src/ADuCM3029_MediumOne.h 文件中,找到下列变量并如前所述将它们设置为您自己的Medium One MQTT参数字符串:

aMQTTTopicName
aMQTTUsername
aMQTTPassword

*** 注 *** ADI-WifiSoftware CMSIS包(版本1.0.1)无法通过TLS连接到Medium One MQTT代理,并且此项目在ADICUP3029和Medium One MQTT代理之间使用未加密的MQTT通信。MQTT用户名和密码在Internet上以明文形式发送,凭证和传感器数据都不会加密。

保存修改后的文件,然后生成项目。接下来就需要验证代码编译是否有错。如果编译出错,请检查对src/ADuCM3029\u MediumOne.h所做的更改。

运行应用程序

确保ADICUP3029板通过USB连接到电脑。按照CCES快速入门用户指南中的说明设置调试配置,然后在调试器模式下运行程序,程序此时应已下载到电路板中,并在main()函数的第一行停止调试器。接下来,使用菜单命令Run > Resume 启动程序,并监视CCES控制台选项卡,查看有关程序启动、连接到Wi-Fi以及将数据传输到Medium One的消息。

应用程序的工作原理

此程序源自Analog Devices ADuCM3029_IBMWatson_Greenhouse示例应用程序,并进行了以下更改和增强:

与EVAL-ADT7420-PMDZ温度传感器评估板接口
删除未使用的I/O功能
连接到Medium One MQTT代理
定期读取温度传感器
添加时间戳和循环计数数据元素
生成JSON格式的MQTT有效负载消息,并发送到Medium One MQTT代理

MQTT负载格式

MQTT消息根据Medium One MQTT负载规范格式化为JSON字符串,如下所示:

{"event_data":{"tempf":77.89999389648438,"timestamp":19193,"iteration":1}}

各字段说明:

tempf = 温度 (华氏度)
timestamp = 板时钟 board tick clock
iteration = 应用程序循环次数application loop counter

试着加热或冷却温度传感器来查看数据值变化。

查看Medium One仪表板上的数据

在Medium One仪表板中,导航到Data Viewer > Data Streams,然后单击raw Events,将看到从ADICUP3029接收的原始消息 (图8)。单击“+”号可查看消息的详细信息。

Raw Message Display

图8:原始消息 (来源:贸泽电子)

单击左上角的Dashboard,然后单击Add Widget > Single User Real Time Events Stream 将事件流小部件添加到仪表板。

Select user 下拉列表中,选择mydevice。现在您应该可以看到Real Time Events Stream小部件中显示的消息 (图9)。单击右上角的保存图标以保存修改后的仪表板。

Raw Message Display

图9:Real Time Events Stream小部件 (来源:贸泽电子)

添加更多小部件

为了显示更多小部件,我们需要启用消息负载中包含的特定数据字段。导航到Config > Data Streams 并单击raw Events。Schema Map应该预先填充在传入消息中检测到的字段,但是这些字段当前被禁用。选中raw.iteration、raw.tempfraw.timestamp 旁边的Active框,然后单击Save Data Stream。现在就可以在其他仪表板小部件中使用这些字段。

回到仪表板,单击Single User Last Value Table 小部件,然后选择mydevice用户。单击mydevice用户右侧的Tag Config 图标并选中raw:iteration、raw:tempfraw:timestamp 值,然后单击Save。Last Value Table的每个字段应填充了最新值 (图10)。单击右上角的Save图标以保存更新后的仪表板。

Last Value Table Widget Display

图10:Last Value Table小部件 (来源:贸泽电子)

现在让我们为温度传感器和计数器添加仪表板小部件。单击Single User Real Time Gauge并选择mydevice用户。单击小部件的Tag Config图标并选中raw:iteration、raw:tempfraw:timestamp行,然后单击Save。更新后的仪表板应如图11所示。单击仪表板保存图标以保存更新后的仪表板。尝试加热或冷却温度传感器以查看仪表值的变化。

Real Time Gauge Widgets Added to Dashboard

图11:添加到Dashboard的Real Time Gauge小部件 (来源:贸泽电子)

此时,您的ADICUP3029板正在连续运行,定期读取温度并将测量值传输到Medium One云端。完成后,请记住关闭ADICUP3029板电源,否则此板将继续向Medium One发送消息并消耗每日的消息分配。

后续操作

该项目创建了一个端到端的传感器到云应用程序,该应用程序将实时传感器数据发送到Medium One IoT Prototyping Sandbox,并可以通过多种方式进行修改和扩展,比如:

Enhance the MQTT communications to support MQTT over TLS
通过阅读ADICUP3029文档并研究源代码,深入了解应用代码和电路板硬件
向Medium One仪表板添加更多小部件,例如温度读数的实时折线图
了解Medium One Workflow Studio,可以通过它创建数据处理工作流来转换传感器数据
试用Medium One移动应用
实现与Experiment云端的双向通信
通过修改ADICUP3029应用源代码,修改传感器数据发布间隔
将其他类型的传感器连接到ADICUP3029板,并将数据包含在MQTT消息中
增强MQTT通信,以支持MQTT over TLS

 




« 返回


Greg Toth是一名架构师、工程师和顾问,在传感器、嵌入式系统、物联网、电信、企业系统、云计算、数据分析以及硬件、软件和固件开发方面拥有30多年的经验。他拥有圣母大学 (University of Notre Dame) 电气工程学士学位和南加州大学 (University of Southern California) 计算机工程硕士学位。


所有作者

显示更多 显示更多
按日期查看博客