TLT507-MQTT通信协议案例

电子说

1.3w人已加入

描述

1 MQTT 通信协议简介

1.1 概述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基

于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,

由 IBM 在 1999 年发布。MQTT 最大优点在于,可以极少的代码和有限的带宽,为连接远

程设备提供实时可靠的消息服务。

MQTT 是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时

通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT

MQTT 具有如下特点:

(1) 轻量可靠:MQTT 的报文格式精简、紧凑,可在严重受限的硬件设备和低带宽、

高延迟的网络上实现稳定传输。

(2) 发布/订阅模式(Publish/Subscribe):发布/订阅模式的优点在于发布者与订阅者的

解耦,实现异步协议。即订阅者与发布者无需建立直接连接,亦无需同时在线。

(3) 为物联网而生:提供心跳机制、遗嘱消息、QoS 质量等级 + 离线消息、主题和

安全管理等全面的物联网应用特性。

(4) 生态更完善:覆盖范围广,已成为众多云厂商物联网平台的标准通信协议

1.2 应用场景

MQTT 作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网

设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。常

见的应用场景如下:

(1) 物联网 M2M 通信,物联网大数据采集。

(2) 移动即时消息及消息推送。

(3) 智能硬件、智能家居、智能电器。

(4) 车联网通信,电动车站桩采集。

(5) 智慧城市、远程医疗、远程教育。

(6) 电力能源、石油能源。

1.3 Mosquitto 工具安装

Mosquitto 是一款开源的 MQTT 消息代理(服务器)软件,提供轻量级的、支持可发

布/可订阅的的消息推送模式。我司提供的评估板文件系统已支持 Mosquitto 工具,本文

mqtt_client 案例采用 Mosquitto 工具演示 MQTT 通信协议的通信功能。由于上位机 Ubuntu

系统作为通信对象,因此需在 Ubuntu 终端执行如下命令安装 Mosquitto 工具。

Host# sudo apt-get install mosquitto-clients

MQTT

2 mqtt_client 案例

2.1 案例说明

案例功能:使用 libmosquitto(MQTT version 3.1.1 client library)的 API 与 MQTT 代理服

务器通信。基于 MQTT 通信协议,实现发布和订阅消息功能。

程序流程图如下图所示。

MQTT

2.2 案例测试

本案例使用公网 MQTT HiveMQ 服务器与上位机 Ubuntu Mosquitto 工具通信。请通过

网线将评估板千兆网口 ETH0 RGMII 和上位机连接至公网,确保可正常访问互联网。

下表提供了可用的在线公共 MQTT 服务器,可根据需要自行切换。

MQTT

评估板启动,将案例 bin 目录下 mqtt_client 可执行文件拷贝至评估板文件系统的任意

目录下,执行如下命令查看程序参数说明。

Target#

./mqtt_client --help

MQTT

2.2.1

评估板发布/上位机订阅

在上位机执行如下命令,使用 mosquitto_sub 工具订阅 MQTT 主题。

Host# mosquitto_sub -h broker.hivemq.com -p 1883 -t test/data

参数解析:

-h:指定 MQTT 服务器;

-p:指定 MQTT 服务器 TCP 端口;

-t:定义 MQTT 主题,可自定义命名。

=

MQTT

在评估板文件系统执行如下命令发布消息至 MQTT 服务器。

Target#

./mqtt_client -h broker.hivemq.com -p 1883 -M publish -t test/data -m

'www.tronlong.com'

MQTT

2.3 案例编译

将案例 src 文件夹拷贝至 Ubuntu 工作目录下,请先确保已参考 Linux 系统使用手册编

译过 LinuxSDK,构建 T507 处理器对应的 GCC 编译器。进入 src 目录执行如下命令,使用

LinuxSDK 开发包目录下的 GCC 编译器进行案例编译。编译完成后,将在当前目录下生成

可执行文件。

Host# CC=/home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/host/usr

/bin/aarch64-linux-gnu-gcc make

 

MQTT

2.4 关键代码

(1) 创建 Mosquitto 实例。

MQTT

(2) 设置回调函数。

MQTT

(3) 连接 MQTT 服务器。

MQTT

(4) 发布消息。

MQTT

(5) 订阅主题

MQTT

3 mqtt_sinewave_pub 案例

3.1 案例说明

案例功能:使用 libmosquitto(MQTT version 3.1.1 client library)的 API 与 MQTT 代理服

务器通信。评估板生成正弦波数据,每秒发送 512 个采样点的数据至 MQTT 服务器;上

位机通过 Web 页面从 MQTT 服务器接收到数据后,将会绘制波形。

程序流程图如下图所示。

MQTT

 

3.2 案例测试

本案例使用公网 MQTT HiveMQ 服务器与上位机 Ubuntu Web 程序通信。请通过网线

将评估板千兆网口 ETH0 RGMII 和上位机连接至公网,确保可正常访问互联网。

评估板启动,将案例 bin 目录下 mqtt_sinewave_pub 可执行文件拷贝至评估板文件系

统的任意目录下,执行如下命令查看程序参数说明。

Target#

./mqtt_sinewave_pub --help

MQTT

执行如下命令运行程序,连接 MQTT 服务器,并发送正弦波数据至 MQTT 服 务器。

Target#

./mqtt_sinewave_pub -h broker.hive

mq.com -p 1883

MQTT

评估板程序运行后,将案例"toolsweb_mqtt_sub"目录下 index.html 文件,使用上位

机浏览器打开。在弹出的 Web 页面(如下图),依次输入 MQTT 服务器:broker.hivemq.com,

端口号:8000,最后点击连接,Web 页面将会从 MQTT 服务器获取正弦波数据并进行波

形绘制。

备注:ARM 端 MQTT 通信协议基于 TCP 协议,Web 端 MQTT 通信协议基于 WebSocket 协

议,因此使用的端口号不同。

MQTTMQTT

 3.3 案例编译

将案例 src 文件夹拷贝至 Ubuntu 工作目录下,请先确保已参考 Linux 系统使用手册编

译过 LinuxSDK,构建 T507 处理器对应的 GCC 编译器。进入 src 目录执行如下命令,使用

LinuxSDK 开发包目录下的 GCC 编译器进行案例编译。编译完成后,将在当前目录下生成

可执行文件。

Host# CC=/home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/host/usr

/bin/aarch64-linux-gnu-gcc make

MQTT

3.4 关键代码

(1) 创建 Mosquitto 实例。

MQTT

(2) 设置回调函数。

MQTT

(3) 连接 MQTT 服务器。

MQTT

(4) 发送数据。

MQTT

 

 

 

 



审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分