0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TLT507-MQTT通信協(xié)議案例

Tronlong創(chuàng)龍科技 ? 來(lái)源: Tronlong創(chuàng)龍科技 ? 作者: Tronlong創(chuàng)龍科技 ? 2024-01-26 10:06 ? 次閱讀

1 MQTT 通信協(xié)議簡(jiǎn)介

1.1 概述

MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基

于發(fā)布/訂閱(Publish/Subscribe)模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議構(gòu)建于 TCP/IP 協(xié)議上,

由 IBM 在 1999 年發(fā)布。MQTT 最大優(yōu)點(diǎn)在于,可以極少的代碼和有限的帶寬,為連接遠(yuǎn)

程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。

MQTT 是輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)的,同時(shí)作為一種低開(kāi)銷、低帶寬占用的即時(shí)

通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。

wKgZomW4c9eAM7S5AABn_8pSE3Q310.png

MQTT 具有如下特點(diǎn):

(1) 輕量可靠:MQTT 的報(bào)文格式精簡(jiǎn)、緊湊,可在嚴(yán)重受限的硬件設(shè)備和低帶寬、

高延遲的網(wǎng)絡(luò)上實(shí)現(xiàn)穩(wěn)定傳輸。

(2) 發(fā)布/訂閱模式(Publish/Subscribe):發(fā)布/訂閱模式的優(yōu)點(diǎn)在于發(fā)布者與訂閱者的

解耦,實(shí)現(xiàn)異步協(xié)議。即訂閱者與發(fā)布者無(wú)需建立直接連接,亦無(wú)需同時(shí)在線。

(3) 為物聯(lián)網(wǎng)而生:提供心跳機(jī)制、遺囑消息、QoS 質(zhì)量等級(jí) + 離線消息、主題和

安全管理等全面的物聯(lián)網(wǎng)應(yīng)用特性。

(4) 生態(tài)更完善:覆蓋范圍廣,已成為眾多云廠商物聯(lián)網(wǎng)平臺(tái)的標(biāo)準(zhǔn)通信協(xié)議

1.2 應(yīng)用場(chǎng)景

MQTT 作為一種低開(kāi)銷,低帶寬占用的即時(shí)通訊協(xié)議,可以極少的代碼和帶寬為聯(lián)網(wǎng)

設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),適用于硬件資源有限的設(shè)備及帶寬有限的網(wǎng)絡(luò)環(huán)境。常

見(jiàn)的應(yīng)用場(chǎng)景如下:

(1) 物聯(lián)網(wǎng) M2M 通信,物聯(lián)網(wǎng)大數(shù)據(jù)采集。

(2) 移動(dòng)即時(shí)消息及消息推送。

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

(4) 車聯(lián)網(wǎng)通信,電動(dòng)車站樁采集。

(5) 智慧城市、遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育。

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

1.3 Mosquitto 工具安裝

Mosquitto 是一款開(kāi)源的 MQTT 消息代理(服務(wù)器)軟件,提供輕量級(jí)的、支持可發(fā)

布/可訂閱的的消息推送模式。我司提供的評(píng)估板文件系統(tǒng)已支持 Mosquitto 工具,本文

mqtt_client 案例采用 Mosquitto 工具演示 MQTT 通信協(xié)議的通信功能。由于上位機(jī) Ubuntu

系統(tǒng)作為通信對(duì)象,因此需在 Ubuntu 終端執(zhí)行如下命令安裝 Mosquitto 工具。

Host# sudo apt-get install mosquitto-clients

wKgaomW4c9yAfzwjAAJI1wkMw8o824.png

2 mqtt_client 案例

2.1 案例說(shuō)明

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

務(wù)器通信?;?MQTT 通信協(xié)議,實(shí)現(xiàn)發(fā)布和訂閱消息功能。

程序流程圖如下圖所示。

wKgZomW4c-OAS8fTAAAyrfGi-t8316.png

2.2 案例測(cè)試

本案例使用公網(wǎng) MQTT HiveMQ 服務(wù)器與上位機(jī) Ubuntu Mosquitto 工具通信。請(qǐng)通過(guò)

網(wǎng)線將評(píng)估板千兆網(wǎng)口 ETH0 RGMII 和上位機(jī)連接至公網(wǎng),確保可正常訪問(wèn)互聯(lián)網(wǎng)。

下表提供了可用的在線公共 MQTT 服務(wù)器,可根據(jù)需要自行切換。

wKgaomW4c-iAOZkyAABQU4KzreA965.png

評(píng)估板啟動(dòng),將案例 bin 目錄下 mqtt_client 可執(zhí)行文件拷貝至評(píng)估板文件系統(tǒng)的任意

目錄下,執(zhí)行如下命令查看程序參數(shù)說(shuō)明。

Target#

./mqtt_client --help

wKgZomW4dAOAKAxbAAB9kbAHXQY988.png

2.2.1

評(píng)估板發(fā)布/上位機(jī)訂閱

在上位機(jī)執(zhí)行如下命令,使用 mosquitto_sub 工具訂閱 MQTT 主題。

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

參數(shù)解析:

-h:指定 MQTT 服務(wù)器;

-p:指定 MQTT 服務(wù)器 TCP 端口;

-t:定義 MQTT 主題,可自定義命名。

=

wKgZomW4dAuABlMkAAAbaQ_L1xc675.png

在評(píng)估板文件系統(tǒng)執(zhí)行如下命令發(fā)布消息至 MQTT 服務(wù)器。

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 工作目錄下,請(qǐng)先確保已參考 Linux 系統(tǒng)使用手冊(cè)編

譯過(guò) LinuxSDK,構(gòu)建 T507 處理器對(duì)應(yīng)的 GCC 編譯器。進(jìn)入 src 目錄執(zhí)行如下命令,使用

LinuxSDK 開(kāi)發(fā)包目錄下的 GCC 編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成

可執(zhí)行文件。

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

/bin/aarch64-linux-gnu-gcc make

wKgZomW4jRaAXeyHAACrFnaa4wU405.png

2.4 關(guān)鍵代碼

(1) 創(chuàng)建 Mosquitto 實(shí)例。

wKgaomW4jSSAMJmrAAApA7B7rPE205.png

(2) 設(shè)置回調(diào)函數(shù)。

wKgZomW4jSqAJrZGAABJ3ZrE4Yc124.png

(3) 連接 MQTT 服務(wù)器。

wKgaomW4j4iADBK4AABLXL1Ep3I970.png

(4) 發(fā)布消息。

wKgaomW4j4-AaekcAABtEKeemCo315.png

(5) 訂閱主題

wKgaomW4j6iAR2J7AABfyq-jQoY252.png

3 mqtt_sinewave_pub 案例

3.1 案例說(shuō)明

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

務(wù)器通信。評(píng)估板生成正弦波數(shù)據(jù),每秒發(fā)送 512 個(gè)采樣點(diǎn)的數(shù)據(jù)至 MQTT 服務(wù)器;上

位機(jī)通過(guò) Web 頁(yè)面從 MQTT 服務(wù)器接收到數(shù)據(jù)后,將會(huì)繪制波形。

程序流程圖如下圖所示。

wKgZomW4j7GAG2nLAACgR6TM4Fg446.png

3.2 案例測(cè)試

本案例使用公網(wǎng) MQTT HiveMQ 服務(wù)器與上位機(jī) Ubuntu Web 程序通信。請(qǐng)通過(guò)網(wǎng)線

將評(píng)估板千兆網(wǎng)口 ETH0 RGMII 和上位機(jī)連接至公網(wǎng),確??烧TL問(wèn)互聯(lián)網(wǎng)。

評(píng)估板啟動(dòng),將案例 bin 目錄下 mqtt_sinewave_pub 可執(zhí)行文件拷貝至評(píng)估板文件系

統(tǒng)的任意目錄下,執(zhí)行如下命令查看程序參數(shù)說(shuō)明。

Target#

./mqtt_sinewave_pub --help

wKgZomW4j76AXp8XAABSTdUR1Xw313.png

執(zhí)行如下命令運(yùn)行程序,連接 MQTT 服務(wù)器,并發(fā)送正弦波數(shù)據(jù)至 MQTT 服 務(wù)器。

Target#

./mqtt_sinewave_pub -h broker.hive

mq.com -p 1883

wKgZomW4j86AIelZAAAvnyJss2k565.png

評(píng)估板程序運(yùn)行后,將案例"toolsweb_mqtt_sub"目錄下 index.html 文件,使用上位

機(jī)瀏覽器打開(kāi)。在彈出的 Web 頁(yè)面(如下圖),依次輸入 MQTT 服務(wù)器:broker.hivemq.com,

端口號(hào):8000,最后點(diǎn)擊連接,Web 頁(yè)面將會(huì)從 MQTT 服務(wù)器獲取正弦波數(shù)據(jù)并進(jìn)行波

形繪制。

備注:ARM 端 MQTT 通信協(xié)議基于 TCP 協(xié)議,Web 端 MQTT 通信協(xié)議基于 WebSocket 協(xié)

議,因此使用的端口號(hào)不同。

wKgZomW4j9SAA5LiAAAa5J1_IoQ615.pngwKgaomW4j92AHlq6AABIarcJExo989.png

3.3 案例編譯

將案例 src 文件夾拷貝至 Ubuntu 工作目錄下,請(qǐng)先確保已參考 Linux 系統(tǒng)使用手冊(cè)編

譯過(guò) LinuxSDK,構(gòu)建 T507 處理器對(duì)應(yīng)的 GCC 編譯器。進(jìn)入 src 目錄執(zhí)行如下命令,使用

LinuxSDK 開(kāi)發(fā)包目錄下的 GCC 編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成

可執(zhí)行文件。

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 關(guān)鍵代碼

(1) 創(chuàng)建 Mosquitto 實(shí)例。

wKgZomW4kIqAA-SxAABps7FhyoM311.png

(2) 設(shè)置回調(diào)函數(shù)。

wKgZomW4kJWAAh4NAAA6N2cwriI284.png

(3) 連接 MQTT 服務(wù)器。

wKgaomW4kJ-AUFIBAAA0esHKr4g185.png

(4) 發(fā)送數(shù)據(jù)。

wKgZomW4kAeAQ2nIAACW3Db1t7Y810.png



審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    883

    瀏覽量

    40309
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    651

    瀏覽量

    22507
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    通信協(xié)議解讀:CoAP/LWM2M協(xié)議MQTT協(xié)議

    本文將分別解讀CoAP/LWM2M協(xié)議MQTT協(xié)議,希望能幫助您了解這些協(xié)議,并選擇最適合您的設(shè)備的通信協(xié)議。
    的頭像 發(fā)表于 12-04 14:09 ?1.3w次閱讀
    <b class='flag-5'>通信協(xié)議</b>解讀:CoAP/LWM2M<b class='flag-5'>協(xié)議</b>和<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>

    RK3568-MQTT通信協(xié)議案

    RK3568-MQTT通信協(xié)議案
    的頭像 發(fā)表于 01-19 15:31 ?1818次閱讀
    RK3568-<b class='flag-5'>MQTT</b><b class='flag-5'>通信協(xié)議案</b>例

    TLT507-Linux應(yīng)用開(kāi)發(fā)手冊(cè)

    TLT507-Linux應(yīng)用開(kāi)發(fā)手冊(cè)
    的頭像 發(fā)表于 01-26 09:34 ?692次閱讀
    <b class='flag-5'>TLT507</b>-Linux應(yīng)用開(kāi)發(fā)手冊(cè)

    TLT507-Qt工程編譯說(shuō)明

    TLT507-Qt工程編譯說(shuō)明
    的頭像 發(fā)表于 01-26 09:37 ?1117次閱讀
    <b class='flag-5'>TLT507</b>-Qt工程編譯說(shuō)明

    TLT507-Linux-RT應(yīng)用開(kāi)發(fā)案例

    TLT507-Linux-RT應(yīng)用開(kāi)發(fā)案例
    的頭像 發(fā)表于 01-26 09:46 ?708次閱讀
    <b class='flag-5'>TLT507</b>-Linux-RT應(yīng)用開(kāi)發(fā)案例

    TLT507-Ubuntu系統(tǒng)使用說(shuō)明

    TLT507-Ubuntu系統(tǒng)使用說(shuō)明
    的頭像 發(fā)表于 01-26 09:58 ?1008次閱讀
    <b class='flag-5'>TLT507</b>-Ubuntu系統(tǒng)使用說(shuō)明

    TLT507-物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例

    TLT507-物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例
    的頭像 發(fā)表于 01-26 10:26 ?908次閱讀
    <b class='flag-5'>TLT507</b>-物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例

    TLT507-視頻開(kāi)發(fā)案例

    TLT507-視頻開(kāi)發(fā)案例
    的頭像 發(fā)表于 01-26 10:50 ?990次閱讀
    <b class='flag-5'>TLT507</b>-視頻開(kāi)發(fā)案例

    TLT507-ARM + FPGA通信案例

    TLT507-ARM + FPGA通信案例
    的頭像 發(fā)表于 01-26 11:05 ?1061次閱讀
    <b class='flag-5'>TLT507</b>-ARM + FPGA<b class='flag-5'>通信</b>案例

    TLT507-多通道AD采集開(kāi)發(fā)案例

    TLT507-多通道AD采集開(kāi)發(fā)案例
    的頭像 發(fā)表于 01-26 11:28 ?1109次閱讀
    <b class='flag-5'>TLT507</b>-多通道AD采集開(kāi)發(fā)案例

    TLT507-Android操作系統(tǒng)演示案例

    TLT507-Android操作系統(tǒng)演示案例
    的頭像 發(fā)表于 01-26 14:57 ?1191次閱讀
    <b class='flag-5'>TLT507</b>-Android操作系統(tǒng)演示案例

    全志科技T3開(kāi)發(fā)板(4核ARM Cortex-A7)——MQTT通信協(xié)議案

    本文主要介紹基于T3處理器的MQTT通信協(xié)議開(kāi)發(fā)案例,講解內(nèi)容主要包括了MQTT通信協(xié)議簡(jiǎn)介、概述、應(yīng)用場(chǎng)景以及Mosquitto工具安裝、mqtt
    發(fā)表于 06-09 14:55

    全志T3+Logos FPGA開(kāi)發(fā)板——MQTT通信協(xié)議案

    遇到不少人新手小白問(wèn),能不能分享MQTT通信協(xié)議案例,做開(kāi)發(fā)等等一系列的問(wèn)題。應(yīng)廣大用戶朋友需求號(hào)召,今天分享基于創(chuàng)龍科技的TLT3F-EVM開(kāi)發(fā)板,它是一款基于全志科技T3四核ARM
    發(fā)表于 03-31 15:35

    TLT507-Android應(yīng)用開(kāi)發(fā)手冊(cè)

    TLT507-Android應(yīng)用開(kāi)發(fā)手冊(cè)
    的頭像 發(fā)表于 01-26 15:32 ?544次閱讀
    <b class='flag-5'>TLT507</b>-Android應(yīng)用開(kāi)發(fā)手冊(cè)

    TLT507-Android開(kāi)發(fā)環(huán)境搭建

    TLT507-Android開(kāi)發(fā)環(huán)境搭建
    的頭像 發(fā)表于 01-26 17:03 ?597次閱讀
    <b class='flag-5'>TLT507</b>-Android開(kāi)發(fā)環(huán)境搭建