查看: 499|回复: 0

[经验] 全志T3+Logos FPGA开发板——MQTT通信协议案例

[复制链接]
  • TA的每日心情
    无聊
    2021-9-1 13:41
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2024-7-15 12:09:38 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 陈工-创龙科技 于 2024-8-7 11:09 编辑

    我们曾遇到不少新手问,能不能分享MQTT通信协议案例,做开发等等一系列的问题。
    应广大用户朋友需求号召,今天分享基于创龙科技的TLT3F-EVM开发板,它是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业开发板,ARM Cortex-A7处理器单元主频高达1.2GHz。评估板由核心板和评估底板组成,核心板CPU、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。
    给大家详细讲解嵌入式行业中,常使用到的MQTT通信协议案例,分别涵盖了MQTT通信协议简介、mqtt_client案例、mqtt_sinewave_pub案例等等。
    前 言

    本指导文档适用开发环境:
    Windows开发环境:Windows 7 64bit、Windows 10 64bit
    虚拟机:VMware15.5.5
    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)
    本文主要介绍T3处理器基于MQTT通信协议开发案例,主要包括mqtt_client案例和mqtt_sinewave_pub案例,位于产品资料“4-软件资料\Demo\mqtt-demos\”目录下。
    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工具通信。请通过网线将评估板千兆网口ETH0 RGMII和上位机连接至公网,确保可正常访问互联网。
    下表提供了可用的在线公共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


    更多案例测试详情说明,欢迎关注Tronlong创龙科技获取,也可以在评论区留言,感谢你的支持。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 01:43 , Processed in 0.113701 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.