| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例 -> 正文阅读 |
|
[嵌入式]全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例 |
本文主要介绍基于T3处理器的MQTT通信协议开发案例,讲解内容主要包括了MQTT通信协议简介、概述、应用场景以及Mosquitto工具安装、mqtt_client案例和mqtt_sinewave_pub案例等。 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.1.0 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作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。常见的应用场景如下:
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
评估板启动,将案例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案例的关键代码以及更多测试案例详细说明,欢迎评论区留言~ |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 7:57:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |