陈工-创龙科技 发表于 2025-7-31 15:04:22

国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—MQTT通信协议案例

前言本指导文档适用开发环境:Windows开发环境:Windows 7 64bit、Windows 10 64bit虚拟机:VMware15.5.5Linux开发环境:Ubuntu18.04.4 64bitLinuxSDK:T113_Tina5.0-V1.0(Linux)U-Boot:U-Boot-2018.07Kernel:Linux-5.4.61、Linux-RT-5.4.61本文主要介绍创龙科技TLT113-EVM评估板基于MQTT通信协议开发案例,主要包括mqtt_client案例和mqtt_sinewave_pub案例,位于产品资料“4-软件资料\Demo\mqtt-demos\”目录下。
MQTT通信协议简介
概述MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。MQTT是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLCyOAds0OAADooUJlSSQ753.png图 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
https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLCy2AOd6AAANcSWKGDfg831.png图 2
mqtt_client案例案例说明案例功能:使用libmosquitto(MQTT version 5.0/3.1.1 client library)的API与MQTT**服务器通信。基于MQTT通信协议,实现发布和订阅消息功能。程序流程图如下图所示。
https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLCzeAdhYjAABRUsL04kU330.png图 3
案例测试本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Mosquitto工具通信。请通过网线将评估板千兆网口ETH0(RGMII)和上位机连接至公网,确保可正常访问互联网。下表提供了可用的在线公共MQTT服务器,可根据需要自行切换。
https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC0OADY7VAAAaBGHjeY8539.png
评估板启动,将案例bin目录下mqtt_client可执行文件拷贝至评估板文件系统的任意目录下,执行如下命令查看程序参数说明。Target# ./mqtt_client --helphttps://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC0uAGCw2AAA7O2QmpBo254.png图 4
评估板发布/上位机订阅在上位机执行如下命令,使用mosquitto_sub工具订阅MQTT主题。Host# mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data参数解析:-h:指定MQTT服务器;-p:指定MQTT服务器TCP端口;-t:定义MQTT主题,可自定义命名。
https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC1WACiUOAAAeIYvRriQ558.png图 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消息https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC2GAWt-xAAAT1DtLqGY850.png图 6 评估板发布

消息发布成功后,上位机将从MQTT服务器接收到对应的消息。
https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC2yAV9sRAAAlvwTPvvY497.png图 7 上位机订阅
评估板订阅/上位机发布在评估板文件系统执行如下命令订阅MQTT主题。Target# ./mqtt_client -h broker.hivemq.com -p 1883 -M subscribe -t test/data
https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC3SAQhmxAAALyM983eQ492.png图 8

在上位机执行如下命令发布消息至MQTT服务器。Host# mosquitto_pub -h broker.hivemq.com -p 1883 -t test/data -m www.tronlong.comhttps://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC3yAHcrbAAAwoDyJ17g241.png图 9 上位机发布

消息发布成功后,评估板将从MQTT服务器接收到对应消息。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC4OABJfWAAAOMeqbRDM541.png图 10 评估板订阅

案例编译将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考Linux系统使用手册编译过LinuxSDK,构建T113-i处理器对应的GCC编译器。在案例src目录执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。编译完成后,将在当前目录下生成可执行文件。备注:若使用eMMC配置评估板,请将命令中的"tlt113-evm-nand"修改为"tlt113-evm-emmc"。Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc makehttps://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC4qANFwNAADbH3XLF7M525.png图 11

关键代码创建Mosquitto实例。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC5O***SR7AAAhBQhMBrk059.png图 12

设置回调函数。https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC5uADjggAABIqgBm4Mc633.png图 13

连接MQTT服务器。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC6aAOVGfAAAqdRW6QWM976.png图 14

发布消息。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC8qAWclIAACEI8t_6ew838.png图 15

订阅主题。https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC9WAM_L2AABO_K7Mv_M202.png图 16

mqtt_sinewave_pub案例
案例说明案例功能:使用libmosquitto(MQTT version 5.0/3.1.1 client library)的API与MQTT**服务器通信。评估板生成正弦波数据,每秒发送512个采样点的数据至MQTT服务器;上位机通过Web页面从MQTT服务器接收到数据后,将会绘制波形。程序流程图如下图所示。
https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC92ACQvWAAA5oAsyIaA908.png图 17

案例测试本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Web程序通信。请通过网线将评估板千兆网口ETH0(RGMII)和上位机连接至公网,确保可正常访问互联网。评估板启动,将案例bin目录下mqtt_sinewave_pub可执行文件拷贝至评估板文件系统的任意目录下,执行如下命令查看程序参数说明。Target# ./mqtt_sinewave_pub --helphttps://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC-SAEdCdAAAgjUyJkZk791.png图 18

执行如下命令运行程序,连接MQTT服务器,并发送正弦波数据至MQTT服务器。Target# ./mqtt_sinewave_pub -h broker.hivemq.com -p 1883https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC-2AOTAJAAANCrlNy90079.png图 19

评估板程序运行后,在上位机使用浏览器打开"tools\web_mqtt_sub\"目录下的index.html文件。在弹出的Web页面(如下图),依次输入MQTT服务器:broker.hivemq.com,端口号:8000,最后点击连接,Web页面将会从MQTT服务器获取正弦波数据并进行波形绘制。备注:ARM端MQTT通信协议基于TCP协议,Web端MQTT通信协议基于WebSocket协议,因此使用的端口号不同。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLC_qAJYCLAAAyUdltxHY440.png图 20https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLC_qAbsi2AAB9b8YVBpo454.png图 21

案例编译将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考Linux系统使用手册编译过LinuxSDK,构建T113-i处理器对应的GCC编译器。进入案例src目录执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。编译完成后,将在当前目录下生成可执行文件。
备注:若使用eMMC配置评估板,请将命令中的"tlt113-evm-nand"修改为"tlt113-evm-emmc"。Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc makehttps://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLDAuAALJCAAD1c2_NxEQ448.png图 22
关键代码创建Mosquitto实例。https://file1.elecfans.com/web3/M00/27/3E/wKgZO2iLDBOAN2EWAABNqkC4ans553.png图 23
设置回调函数。https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLDBqAGVWNAAA2mLgg9UA618.png图 24
连接MQTT服务器。https://file1.elecfans.com/web3/M00/27/3F/wKgZO2iLDCGAETMzAAAqoeSLLd0043.png图 25
发送数据。https://file1.elecfans.com/web3/M00/27/2E/wKgZPGiLDCiAJdHvAACCB3KY_0U284.png图 26


页: [1]
查看完整版本: 国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—MQTT通信协议案例