0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TLT507-MQTT通信协议案例

Tronlong创龙科技 来源: Tronlong创龙科技 作者: Tronlong创龙科技 2024-01-26 10:06 次阅读

1 MQTT 通信协议简介

1.1 概述

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

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

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

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

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

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

wKgZomW4c9eAM7S5AABn_8pSE3Q310.png

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

wKgaomW4c9yAfzwjAAJI1wkMw8o824.png

2 mqtt_client 案例

2.1 案例说明

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

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

程序流程图如下图所示。

wKgZomW4c-OAS8fTAAAyrfGi-t8316.png

2.2 案例测试

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

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

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

wKgaomW4c-iAOZkyAABQU4KzreA965.png

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

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

Target#

./mqtt_client --help

wKgZomW4dAOAKAxbAAB9kbAHXQY988.png

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 主题,可自定义命名。

=

wKgZomW4dAuABlMkAAAbaQ_L1xc675.png

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

Target#

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

'www.tronlong.com'

wKgaomW4dBqAA-npAAGt6gj3ttI735.png

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

wKgZomW4jRaAXeyHAACrFnaa4wU405.png

2.4 关键代码

(1) 创建 Mosquitto 实例。

wKgaomW4jSSAMJmrAAApA7B7rPE205.png

(2) 设置回调函数。

wKgZomW4jSqAJrZGAABJ3ZrE4Yc124.png

(3) 连接 MQTT 服务器。

wKgaomW4j4iADBK4AABLXL1Ep3I970.png

(4) 发布消息。

wKgaomW4j4-AaekcAABtEKeemCo315.png

(5) 订阅主题

wKgaomW4j6iAR2J7AABfyq-jQoY252.png

3 mqtt_sinewave_pub 案例

3.1 案例说明

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

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

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

程序流程图如下图所示。

wKgZomW4j7GAG2nLAACgR6TM4Fg446.png

3.2 案例测试

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

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

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

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

Target#

./mqtt_sinewave_pub --help

wKgZomW4j76AXp8XAABSTdUR1Xw313.png

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

Target#

./mqtt_sinewave_pub -h broker.hive

mq.com -p 1883

wKgZomW4j86AIelZAAAvnyJss2k565.png

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

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

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

形绘制。

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

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

wKgZomW4j9SAA5LiAAAa5J1_IoQ615.pngwKgaomW4j92AHlq6AABIarcJExo989.png

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

wKgZomW4j_KAF1zZAAC91vaPX7U815.png

3.4 关键代码

(1) 创建 Mosquitto 实例。

wKgZomW4kIqAA-SxAABps7FhyoM311.png

(2) 设置回调函数。

wKgZomW4kJWAAh4NAAA6N2cwriI284.png

(3) 连接 MQTT 服务器。

wKgaomW4kJ-AUFIBAAA0esHKr4g185.png

(4) 发送数据。

wKgZomW4kAeAQ2nIAACW3Db1t7Y810.png



审核编辑 黄宇

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

    关注

    28

    文章

    856

    浏览量

    40252
  • MQTT
    +关注

    关注

    5

    文章

    649

    浏览量

    22423
收藏 人收藏

    评论

    相关推荐

    通信协议解读:CoAP/LWM2M协议MQTT协议

    本文将分别解读CoAP/LWM2M协议MQTT协议,希望能帮助您了解这些协议,并选择最适合您的设备的通信协议
    的头像 发表于 12-04 14:09 1.3w次阅读
    <b class='flag-5'>通信协议</b>解读:CoAP/LWM2M<b class='flag-5'>协议</b>和<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    RK3568-MQTT通信协议案

    RK3568-MQTT通信协议案
    的头像 发表于 01-19 15:31 1742次阅读
    RK3568-<b class='flag-5'>MQTT</b><b class='flag-5'>通信协议案</b>例

    TLT507-Linux应用开发手册

    TLT507-Linux应用开发手册
    的头像 发表于 01-26 09:34 650次阅读
    <b class='flag-5'>TLT507</b>-Linux应用开发手册

    TLT507-Qt工程编译说明

    TLT507-Qt工程编译说明
    的头像 发表于 01-26 09:37 998次阅读
    <b class='flag-5'>TLT507</b>-Qt工程编译说明

    TLT507-Linux-RT应用开发案例

    TLT507-Linux-RT应用开发案例
    的头像 发表于 01-26 09:46 655次阅读
    <b class='flag-5'>TLT507</b>-Linux-RT应用开发案例

    TLT507-Ubuntu系统使用说明

    TLT507-Ubuntu系统使用说明
    的头像 发表于 01-26 09:58 960次阅读
    <b class='flag-5'>TLT507</b>-Ubuntu系统使用说明

    TLT507-GDB程序调试方法说明

    TLT507-GDB程序调试方法说明
    的头像 发表于 01-26 10:11 934次阅读
    <b class='flag-5'>TLT507</b>-GDB程序调试方法说明

    TLT507-视频开发案例

    TLT507-视频开发案例
    的头像 发表于 01-26 10:50 963次阅读
    <b class='flag-5'>TLT507</b>-视频开发案例

    TLT507-ARM + FPGA通信案例

    TLT507-ARM + FPGA通信案例
    的头像 发表于 01-26 11:05 1016次阅读
    <b class='flag-5'>TLT507</b>-ARM + FPGA<b class='flag-5'>通信</b>案例

    TLT507-Linux系统使用手册

    TLT507-Linux系统使用手册
    的头像 发表于 01-26 16:34 1498次阅读
    <b class='flag-5'>TLT507</b>-Linux系统使用手册

    全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案

    本文主要介绍基于T3处理器的MQTT通信协议开发案例,讲解内容主要包括了MQTT通信协议简介、概述、应用场景以及Mosquitto工具安装、mqtt
    发表于 06-09 14:55

    全志T3+Logos FPGA开发板——MQTT通信协议案

    遇到不少人新手小白问,能不能分享MQTT通信协议案例,做开发等等一系列的问题。应广大用户朋友需求号召,今天分享基于创龙科技的TLT3F-EVM开发板,它是一款基于全志科技T3四核ARM
    发表于 03-31 15:35

    全志T3开发板 ARM CortexA7——MQTT通信协议

    本文主要介绍基于T3处理器的MQTT通信协议开发案例,讲解内容主要包括了MQTT通信协议简介、概述、应用场景以及Mosquitto工具安装、mqtt
    发表于 06-09 14:50 6次下载

    TLT507-Android应用开发手册

    TLT507-Android应用开发手册
    的头像 发表于 01-26 15:32 516次阅读
    <b class='flag-5'>TLT507</b>-Android应用开发手册

    TLT507-Android开发环境搭建

    TLT507-Android开发环境搭建
    的头像 发表于 01-26 17:03 566次阅读
    <b class='flag-5'>TLT507</b>-Android开发环境搭建