首页 » 软件开发 » 全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例(案例通信协议开发板上位科技)

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

落叶飘零 2024-07-24 08:08:12 0

扫一扫用手机浏览

文章目录 [+]

本指导文档适用开发环境:

Windows开发环境:Windows 7 64bit、Windows 10 64bit

虚拟机:VMware15.1.0

全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例(案例通信协议开发板上位科技) 软件开发
(图片来自网络侵删)

Linux开发环境:Ubuntu18.04.4 64bit

U-Boot:U-Boot-2014.07

Kernel:Linux-3.10.65

LinuxSDK:LinuxSDK_AA_BB_CC_DD(基于T3_LinuxSDK_V1.3_20190122)

本次测试板卡为基于创龙科技TLT3-EVM是一款基于全志科技T3处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板,每核主频高达1.2GHz。

评估板接口资源丰富,引出双路网口、双路CAN、双路USB、双路RS485等通信接口,板载Bluetooth、WIFI、4G(选配)模块,同时引出MIPI LCD、LVDS LCD、TFT LCD、CVBS OUT、CAMERA、LINE IN、H/P OUT等音视频多媒体接口,支持双屏异显、1080P@45fps H.264视频硬件编解码,并支持SATA大容量存储接口。

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(MQTT version 3.1.1 client library)的API与MQTT代理服务器通信。
基于MQTT通信协议,实现发布和订阅消息功能。

程序流程图如下图所示。

图 3

案例测试

本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Mosquitto工具通信。
请通过网线将评估板千兆网口RGMII ETH和上位机连接至公网,确保可正常访问互联网。

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

表 1

服务器名称

Broker地址

TCP端口

WebSocket

HiveMQ

broker.hivemq.com

1883

8000

Mosquitto

test.mosquitto.org

1883

80

Eclipse

mqtt.eclipseprojects.io

1883

80/443

EMQ X(国内)

broker-cn.emqx.io

1883

8083/8084

评估板启动,将案例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'

图 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工作目录下,请先确保已参考Linux系统使用手册编译过LinuxSDK,构建T3处理器对应的GCC编译器。
进入src目录执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。
编译完成后,将在当前目录下生成可执行文件。

Host# CC=/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc make

图 11

关键代码

创建Mosquitto实例。

图 12

设置回调函数。

图 13

连接MQTT服务器。

图 14

发布消息。

图 15

订阅主题。

图 16

mqtt_sinewave_pub案例案例说明

案例功能:使用libmosquitto(MQTT version 3.1.1 client library)的API与MQTT代理服务器通信。
评估板生成正弦波数据,每秒发送512个采样点的数据至MQTT服务器;上位机通过Web页面从MQTT服务器接收到数据后,将会绘制波形。

程序流程图如下图所示。

图 17

案例测试

本案例使用公网MQTT HiveMQ服务器与上位机Ubuntu Web程序通信。
请通过网线将评估板千兆网口RGMII ETH和上位机连接至公网,确保可正常访问互联网。

评估板启动,将案例bin目录下mqtt_sinewave_pub可执行文件拷贝至评估板文件系统的任意目录下,执行如下命令查看程序参数说明。

Target# ./mqtt_sinewave_pub --help

图 18

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

Target# ./mqtt_sinewave_pub -h broker.hivemq.com -p 1883

图 19

评估板程序运行后,将案例"tools\web_mqtt_sub\"目录下index.html文件,使用上位机浏览器打开。
在弹出的Web页面(如下图),依次输入MQTT服务器:broker.hivemq.com,端口号:8000,最后点击连接,Web页面将会从MQTT服务器获取正弦波数据并进行波形绘制。

备注:ARM端MQTT通信协议基于TCP协议,Web端MQTT通信协议基于WebSocket协议,因此使用的端口号不同。

图 20

图 21

案例编译

将案例src文件夹拷贝至Ubuntu工作目录下,请先确保已参考Linux系统使用手册编译过LinuxSDK,构建T3处理器对应的GCC编译器。
进入src目录执行如下命令,使用LinuxSDK开发包目录下的GCC编译器进行案例编译。
编译完成后,将在当前目录下生成可执行文件。

Host# CC=/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc make

图 22

想要获取mqtt_sinewave_pub案例的关键代码以及更多测试案例详细说明,欢迎评论区留言~

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读5 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0