基于瑞芯微RK3562 的四核 AR M Cortex-A53 + 单核 ARM Cortex-M0——MQTT通信方案
发布时间:2025-4-15 10:14
发布者:Tronlong--
前 言 本文主要介绍创龙科技TL3562-MiniEVM评估板基于MQTT通信协议的开发案例,适用开发环境如下。 Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:VMware16.2.5、Ubuntu20.04.6 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.209 LinuxSDK:rk3562-ubuntu20.04-sdk-[版本号](基于rk3562_linux_release_v1.2.0) 我司提供的MQTT通信协议开发案例主要包括mqtt_client和mqtt_sinewave_pub,位于产品资料“4-软件资料Demomqtt-demos”目录下。 评估板简介 创龙科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 处理器设计的四核 AR M Cortex-A53 + 单核 ARM Cortex-M0 国产工业评估板,主频高达 2.0GHz。评估板由核心板和评估底板组成,核心板 CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率 100%,评估底板大部分元器件亦采用国产工业级方案,国产化率约 99%(按元器件数量占比,数据仅供参考)。核心板经过专业的 PCB Layout 和高低温测试验证,支持选配屏蔽罩,质量稳定可靠,可满足各种工业应用环境要求。 评估板引出 2 路 Ethernet、2 路 USB、Micro SD、UART 等通信接口,同时引出 2 路 M IPI CSI、LVDS LCD、MIPI LCD、HDMI OUT、MIC IN、SPK OUT、HP OUT 多媒体接口,支 持 1080P@60fps H.264 视频编码、4K@30fps H.265 视频解码。 评估板体积小巧,尺寸为 85x130mm,可作为卡片式电脑使用,且便于产品集成,方便用户快速进行产品方案评估与技术预研。 ![]() 评估板硬件资源图解 1 ![]() 评估板硬件资源图解 2 MQTT通信协议简介 概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 MQTT是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 ![]() 图 1 MQTT具有如下特点: 轻量可靠:MQTT的报文格式精简、紧凑,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。 发布/订阅模式(Publish/Subscribe):发布/订阅模式的优点在于发布者与订阅者的解耦,实现异步协议。即订阅者与发布者无需建立直接连接,亦无需同时在线。 为物联网而生:提供心跳机制、遗嘱消息、QoS质量等级 + 离线消息、主题和安全管理等全面的物联网应用特性。 生态更完善:覆盖范围广,已成为众多云厂商物联网平台的标准通信协议。 应用场景 MQTT作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。常见的应用场景如下: 物联网M2M通信,物联网大数据采集。 移动即时消息及消息推送。 智能硬件、智能家居、智能电器。 车联网通信,电动车站桩采集。 智慧城市、远程医疗、远程教育。 电力能源、石油能源。 Mosquitto工具安装 Mosquitto是一款开源的MQTT消息代理(服务器)软件,提供轻量级的、支持可发布/可订阅的的消息推送模式。我司提供的评估板文件系统已支持Mosquitto工具,本文mqtt_client案例采用Mosquitto工具演示MQTT通信协议的通信功能。由于上位机Ubuntu系统作为通信对象,因此需在Ubuntu终端执行如下命令安装Mosquitto工具。 Host#sudo apt-get install mosquitto-clients ![]() 图 2 mqtt_client案例 案例说明 案例功能:使用libmosquitto的API与MQTT代理服务器通信。基于MQTT通信协议,实现发布和订阅消息功能。 程序流程图如下图所示。 ![]() 图 3 案例测试 本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Mosquitto工具通信。请通过网线将评估板千兆网口ETH0 RGMII和上位机连接至公网,确保可正常访问互联网。 下表提供了可用的在线公共MQTT服务器,可根据需要自行切换。 表 1
评估板启动,将案例bin目录下mqtt_client可执行文件拷贝至评估板文件系统的任意目录下,执行如下命令查看程序参数说明。 Target#./mqtt_client --help ![]() 图 4 评估板发布/上位机订阅 在上位机执行如下命令,使用mosquitto_sub工具订阅MQTT主题。 Host#mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data 参数解析: -h:指定MQTT服务器; -p:指定MQTT服务器TCP端口; -t:定义MQTT主题,可自定义命名。 ![]() 图 5 在评估板文件系统执行如下命令发布消息至MQTT服务器。 Target#./mqtt_client -h broker.hivemq.com -p 1883 -M publish -t test/data -m 'www.tronlong.com' 参数解析: -h:MQTT服务器 -p:MQTT服务器端口 -M:模式,publish为发布,subscribe为订阅 -t:MQTT主题,可随便命名 -m:发布的MQTT消息 ![]() 图 6 评估板发布 消息发布成功后,上位机将从MQTT服务器接收到对应的消息。 ![]() 图 7 上位机订阅 评估板订阅/上位机发布 在评估板文件系统执行如下命令订阅MQTT主题。 Target#./mqtt_client -h broker.hivemq.com -p 1883 -M subscribe -t test/data ![]() 图 8 在上位机执行如下命令发布消息至MQTT服务器。 Host#mosquitto_pub -h broker.hivemq.com -p 1883 -t test/data -m www.tronlong.com ![]() 图 9 上位机发布 消息发布成功后,评估板将从MQTT服务器接收到对应消息。 ![]() 图 10 评估板订阅 案例编译 将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考《Ubuntu系统使用手册》文档安装LinuxSDK,在案例src目录执行如下命令修改Makefile文件。 Host#vim Makefile ![]() 图 11 修改内容如下: SDK_PATH = /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0 //修改为LinuxSDK源码路径 ![]() 图 12 执行如下命令,配置交叉编译工具链环境变量,进行案例编译。编译完成后,将在当前目录下生成可执行文件。 Host#source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host#make ![]() 图 13 关键代码 创建Mosquitto实例 ![]() 图 14 设置回调函数 ![]() 图 15 连接MQTT服务器 ![]() 图 16 发布消息 ![]() 图 17 订阅主题 ![]() 图 18 mqtt_sinewave_pub案例 案例说明 案例功能:使用libmosquitto的API与MQTT代理服务器通信。评估板生成正弦波数据,每秒发送512个采样点的数据至MQTT服务器;上位机通过Web页面从MQTT服务器接收到数据后,将会绘制波形。 程序流程图如下图所示。 ![]() 图 19 案例测试 本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Web程序通信。请通过网线将评估板千兆网口ETH0 RGMII和上位机连接至公网,确保可正常访问互联网。 评估板启动,将案例bin目录下mqtt_sinewave_pub可执行文件拷贝至评估板文件系统的任意目录下,执行如下命令查看程序参数说明。 Target#./mqtt_sinewave_pub --help ![]() 图 20 执行如下命令运行程序,连接MQTT服务器,并发送正弦波数据至MQTT服务器。 Target#./mqtt_sinewave_pub -h broker.hivemq.com -p 1883 ![]() 图 21 评估板程序运行后,在上位机使用浏览器打开"toolsweb_mqtt_sub"目录下的index.html文件。在弹出的Web页面(如下图),依次输入MQTT服务器:broker.hivemq.com,端口号:8000,最后点击连接,Web页面将会从MQTT服务器获取正弦波数据并进行波形绘制。 备注:ARM端MQTT通信协议基于TCP协议,Web端MQTT通信协议基于WebSocket协议,因此使用的端口号不同。 ![]() 图 22 ![]() 图 22 案例编译 将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考《Ubuntu系统使用手册》文档安装LinuxSDK,进入案例src目录执行如下命令修改Makefile文件。 Host#vim Makefile ![]() 图 24 修改内容如下: SDK_PATH = /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0 //修改为LinuxSDK源码路径 ![]() 图 25 执行如下命令配置交叉编译工具链环境变量。编译完成后,将在当前目录下生成可执行文件。 Host#source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host#make ![]() 图 26 关键代码 创建Mosquitto实例 ![]() 图 27 设置回调函数 ![]() 图 28 连接MQTT服务器 ![]() 图 29 发送数据 ![]() 图 30 想了解更多资料,可前往创龙科技官网或微信公众号。 |
网友评论