APP下载

基于MQTT协议的阿里云IoT平台远程电压采集系统设计

2023-02-08徐世翔

物联网技术 2023年1期
关键词:串口页面指令

徐世翔,曹 原

(南阳理工学院,河南 南阳 473000)

0 引 言

随着物联网行业的快速发展,万物智联的概念逐渐兴起,5G网络的到来更是加速了物联网的发展进程。现如今,物联网在各行各业均有非常广泛的应用,如物联网监控系统、智能快递柜等,无不为人们的生活增添了极大的便利[1-5]。本文基于物联网技术,顺应时代的潮流,意在打通传统单片机与物联网平台的壁垒;在技术上将二者相结合,进行实验性和验证性的设计。本设计以搭载STM32F103RB的NUCLEO实验板[6-7]作为主控单元,配合ESP8266模块实现设备联网;同时使用板载的ADC通道1、2测量外部电压输入,采集核心温度、核心电压通道数据,使用MQTT协议同步上传至阿里云平台,实现远程电压监测的设计。

1 系统总体设计

本系统总体设计如下:阿里云平台包括注册、平台配置等,通过模拟MQTT小程序模拟上报数据,用于测试平台配置;ESP8266模块包括使用AT指令配网,学习MQTT协议,编写程序对数据进行采集,对模块进行分布调试(串口、网络、IoT平台),进行数据上报;IoT Studio中的Web应用包括页面编辑、组件使用、数据源配置、美化网页等。同时对钉钉机器人的配置进行学习,贯通平台,实现设计要求。系统框图如图1所示。

图1 系统框图

2 系统硬件设计

2.1 物联网模块设计

ESP8266模块连接WiFi热点的原理是通过串口向其发送模块配置指令(称为AT指令)[8-10]。在编写程序前可以先使用USB转串口模块对其进行调试,熟悉配网流程与相应的操作,成功之后再对程序进行编写,提高开发效率。查询ESP8266技术手册可知,配网操作需要使用表1所列指令。

表1 ESP8266模块AT指令

发送指令后,模块将回复相应的内容,例如“OK”,表示操作完成。ESP8266模块使用MQTT协议连接阿里云平台有多种方式,在实践中本文选择了难度较低、较易实现的固件烧录。在ESP8266出厂版本的固件中,并不包含可以通过MQTT协议连接云平台的AT指令。根据官方手册与使用指南中的“固件烧录”可以找到相应的方法与流程。成功后,可以直接根据AT指令配置模块,通过MQTT协议连接阿里云平台。此时,在产品设备详情中即可看到设备在线。

2.2 主控程序设计

在usart.c中添加串口重定向函数,使得在程序中可以使用printf指令向模块发送AT指令。将ESP8266操作指令封装进头文件esp8266.h,加入工程include路径中;并在esp8266.h的起始位置编写头文件定义,在esp8266.h中编写配网AP指令,设置单片机应答内容;在main.c文件中定义变量,在main函数初始化代码后添加定时器使能、DMA校准、DMA使能等相应程序,在定时器中断回调函数中编写时间片轮转调度程序;在while循环之前调用指令进行配网、阿里云平台用户配置等操作,在while循环中使用switch语句编写时间片轮转调度程序;在任务1中LED以1 s间隔闪烁,任务2中采集核心温度,任务3中采集核心电压与通道电压,任务4中上报物模型数据。

2.3 物联网平台界面设计

如图2所示,进入项目详情页面主页,在项目开发中选择Web应用,新建一个Web应用,自定义应用名称与描述后点击确定。在编辑页面的左边栏中,选择组件,即可进入组件列表。

图2 组件列表

将需要使用的组件拖入页面中,即可添加组件。单击组件,即可在右边栏中定义组件属性。例如,需要使用组件仪表盘时,将仪表盘组件从左边栏中拖出,点击新组件,在右边栏中定义数值范围、数值单位、标题内容、数据源等。在左边栏中的页面选项,可以自定义页面元素,例如导航布局中的边栏、子页面入口等。“仪表盘”组件如图3所示。

页面绘制完成后,即可发布上线,点击预览即可预览网页效果,如图4所示。

2.4 钉钉机器人配置

使用PC版钉钉应用,在群聊中的智能群助手页面,新建一个钉钉机器人,类型为自定义。键入机器人名称后,复制下方生成的Webhook地址,如图5所示。

图5 钉钉机器人配置

进入项目详情页面中的主页,在项目开发中找到业务逻辑页面,创建一个新的业务逻辑,点击新建空白业务服务。进入编辑页面,在左边栏中的节点页面,选择正确的节点并连接,即可实现钉钉机器人推送设备数据的功能。配置完成后,部署调试,发布上线即可。逻辑节点配置如图6所示。

图6 业务逻辑节点配置

3 调试与配置

烧录程序后,复位单片机程序执行,串口1与模块通信,串口2与PC机通信,使用USB转串口模块接收串口1发出的指令,如图7所示。串口数据发送正确无误,接入模块后可以实现自动配网、数据上传。串口2与PC机通信,上报程序状态,使用USB线连接开发板接收串口2发出的状态,如图8所示。

图7 串口1发送数据

图8 串口2发送数据

串口数据发送正确无误,可以显示程序当前状态。此时,ESP8266模块网络连接正常,与阿里云平台连接正常,物模型数据上报正常,如图9所示。

图9 物模型数据上报

在Web应用中,可以显示当前数据,同时实时绘制数据波形,如图10所示。钉钉机器人可以正常工作,当电压超过阈值时可以向群组推送消息,如图11所示。

图10 Web应用页面预览

图11 钉钉机器人消息推送

4 结 语

本文设计了一款基于STM32单片机的物联网电压采集系统。系统选用STM32F103RB单片机作为主控芯片,整体造价较低;采用板载的ADC进行数据采集,并通过MQTT协议与ESP8266模块实现系统物联网平台通信,使用钉钉API进行数据推送。经测试,系统性能稳定,易于市场推广。

猜你喜欢

串口页面指令
刷新生活的页面
浅谈AB PLC串口跟RFID传感器的通讯应用
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现
坐标系旋转指令数控编程应用
网站结构在SEO中的研究与应用
浅析ASP.NET页面导航技术