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
ADICUP3029 (图1) 是一个类似于Arduino的开发平台,基于ADuCM302x系列超低功耗集成式混合信号微控制器系统,可用于处理、控制和连接操作。此平台提供了蓝牙和Wi-Fi 连接选项,便于创建与其他系统和设备进行无线通信的物联网 (IoT) 应用。因为同时组合了电路板、微控制器与板载元件,可为开发人员提供:
可从以下两处获得ADICUP3029的相关技术文档:
图1:EVAL-ADICUP3029开发板 (来源:贸泽电子)
Analog Devices EVAL-ADT7420-PMDZ温度传感器评估板
EVAL-ADT7420-PMDZ(图2)为高精度数字温度传感器评估板,可通过I2C PMOD与ADICUP3029接口。此传感器用于测量温度,精度为+/- 0.25°C,额定工作温度范围为-40°C至150°C。
图2:EVAL-ADT7420-PMDZ温度传感器评估板 (来源:贸泽电子)
可从以下两处获得EVAL-ADT7420-PMDZ的相关技术文档:
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与您的设备进行通信。
图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 Guide和CrossCore 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所示。
图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。
图5: 新创建的用户ID与自动生成的MQTT ID (来源:贸泽电子)
单击Setup > MQTT,将看到如图6所示的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所示的界面。
图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主题字符串将在下一步添加到项目源代码中。
设置Wi-Fi连接参数
在编辑器中打开项目文件src/ADuCM3029_MediumOne.h。找到下列变量并将其设置为您自己的Wi-Fi SSID和密码字符串:
设置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参数字符串:
*** 注 *** 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示例应用程序,并进行了以下更改和增强:
MQTT负载格式
MQTT消息根据Medium One MQTT负载规范格式化为JSON字符串,如下所示:
{"event_data":{"tempf":77.89999389648438,"timestamp":19193,"iteration":1}}
各字段说明:
试着加热或冷却温度传感器来查看数据值变化。
查看Medium One仪表板上的数据
在Medium One仪表板中,导航到Data Viewer > Data Streams,然后单击raw Events,将看到从ADICUP3029接收的原始消息 (图8)。单击“+”号可查看消息的详细信息。
图8:原始消息 (来源:贸泽电子)
单击左上角的Dashboard,然后单击Add Widget > Single User Real Time Events Stream 将事件流小部件添加到仪表板。
在Select user 下拉列表中,选择mydevice。现在您应该可以看到Real Time Events Stream小部件中显示的消息 (图9)。单击右上角的保存图标以保存修改后的仪表板。
图9:Real Time Events Stream小部件 (来源:贸泽电子)
添加更多小部件
为了显示更多小部件,我们需要启用消息负载中包含的特定数据字段。导航到Config > Data Streams 并单击raw Events。Schema Map应该预先填充在传入消息中检测到的字段,但是这些字段当前被禁用。选中raw.iteration、raw.tempf和raw.timestamp 旁边的Active框,然后单击Save Data Stream。现在就可以在其他仪表板小部件中使用这些字段。
回到仪表板,单击Single User Last Value Table 小部件,然后选择mydevice用户。单击mydevice用户右侧的Tag Config 图标并选中raw:iteration、raw:tempf和raw:timestamp 值,然后单击Save。Last Value Table的每个字段应填充了最新值 (图10)。单击右上角的Save图标以保存更新后的仪表板。
图10:Last Value Table小部件 (来源:贸泽电子)
现在让我们为温度传感器和计数器添加仪表板小部件。单击Single User Real Time Gauge并选择mydevice用户。单击小部件的Tag Config图标并选中raw:iteration、raw:tempf和raw:timestamp行,然后单击Save。更新后的仪表板应如图11所示。单击仪表板保存图标以保存更新后的仪表板。尝试加热或冷却温度传感器以查看仪表值的变化。
图11:添加到Dashboard的Real Time Gauge小部件 (来源:贸泽电子)
此时,您的ADICUP3029板正在连续运行,定期读取温度并将测量值传输到Medium One云端。完成后,请记住关闭ADICUP3029板电源,否则此板将继续向Medium One发送消息并消耗每日的消息分配。
该项目创建了一个端到端的传感器到云应用程序,该应用程序将实时传感器数据发送到Medium One IoT Prototyping Sandbox,并可以通过多种方式进行修改和扩展,比如:
Greg Toth是一名架构师、工程师和顾问,在传感器、嵌入式系统、物联网、电信、企业系统、云计算、数据分析以及硬件、软件和固件开发方面拥有30多年的经验。他拥有圣母大学 (University of Notre Dame) 电气工程学士学位和南加州大学 (University of Southern California) 计算机工程硕士学位。