前 言
本指導(dǎo)文檔適用開(kāi)發(fā)環(huán)境:
Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機(jī):VMware15.5.5
Linux開(kāi)發(fā)環(huán)境:Ubuntu18.04.4 64bit
LinuxSDK:T113_Tina5.0-V1.0(Linux)
U-Boot:U-Boot-2018.07
Kernel:Linux-5.4.61、Linux-RT-5.4.61
本文主要介紹創(chuàng)龍科技TLT113-EVM評(píng)估板基于MQTT通信協(xié)議開(kāi)發(fā)案例,主要包括mqtt_client案例和mqtt_sinewave_pub案例,位于產(chǎn)品資料“4-軟件資料Demomqtt-demos”目錄下。
MQTT通信協(xié)議簡(jiǎn)介
概述
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)銷(xiāo)、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。

圖 1
MQTT具有如下特點(diǎn):
輕量可靠:MQTT的報(bào)文格式精簡(jiǎn)、緊湊,可在嚴(yán)重受限的硬件設(shè)備和低帶寬、高延遲的網(wǎng)絡(luò)上實(shí)現(xiàn)穩(wěn)定傳輸。
發(fā)布/訂閱模式(Publish/Subscribe):發(fā)布/訂閱模式的優(yōu)點(diǎn)在于發(fā)布者與訂閱者的解耦,實(shí)現(xiàn)異步協(xié)議。即訂閱者與發(fā)布者無(wú)需建立直接連接,亦無(wú)需同時(shí)在線(xiàn)。
為物聯(lián)網(wǎng)而生:提供心跳機(jī)制、遺囑消息、QoS質(zhì)量等級(jí) + 離線(xiàn)消息、主題和安全管理等全面的物聯(lián)網(wǎng)應(yīng)用特性。
生態(tài)更完善:覆蓋范圍廣,已成為眾多云廠(chǎng)商物聯(lián)網(wǎng)平臺(tái)的標(biāo)準(zhǔn)通信協(xié)議。
應(yīng)用場(chǎng)景
MQTT作為一種低開(kāi)銷(xiāo),低帶寬占用的即時(shí)通訊協(xié)議,可以極少的代碼和帶寬為聯(lián)網(wǎng)設(shè)備提供實(shí)時(shí)可靠的消息服務(wù),適用于硬件資源有限的設(shè)備及帶寬有限的網(wǎng)絡(luò)環(huán)境。常見(jiàn)的應(yīng)用場(chǎng)景如下:
物聯(lián)網(wǎng)M2M通信,物聯(lián)網(wǎng)大數(shù)據(jù)采集。
移動(dòng)即時(shí)消息及消息推送。
車(chē)聯(lián)網(wǎng)通信,電動(dòng)車(chē)站樁采集。
智慧城市、遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育。
電力能源、石油能源。
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

圖 2
mqtt_client案例
案例說(shuō)明
案例功能:使用libmosquitto(MQTT version 5.0/3.1.1 client library)的API與MQTT代理服務(wù)器通信。基于MQTT通信協(xié)議,實(shí)現(xiàn)發(fā)布和訂閱消息功能。
程序流程圖如下圖所示。

圖 3
案例測(cè)試
本案例使用公網(wǎng)MQTTHiveMQ服務(wù)器與上位機(jī)Ubuntu Mosquitto工具通信。請(qǐng)通過(guò)網(wǎng)線(xiàn)將評(píng)估板千兆網(wǎng)口ETH0(RGMII)和上位機(jī)連接至公網(wǎng),確保可正常訪(fǎng)問(wèn)互聯(lián)網(wǎng)。
下表提供了可用的在線(xiàn)公共MQTT服務(wù)器,可根據(jù)需要自行切換。

評(píng)估板啟動(dòng),將案例bin目錄下mqtt_client可執(zhí)行文件拷貝至評(píng)估板文件系統(tǒng)的任意目錄下,執(zhí)行如下命令查看程序參數(shù)說(shuō)明。
Target#./mqtt_client --help

圖 4
評(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主題,可自定義命名。
圖 5
在評(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'
參數(shù)解析:
-h:MQTT服務(wù)器
-p:MQTT服務(wù)器端口
-M:模式,publish為發(fā)布,subscribe為訂閱
-t:MQTT主題,可隨便命名
-m:發(fā)布的MQTT消息

圖 6評(píng)估板發(fā)布
消息發(fā)布成功后,上位機(jī)將從MQTT服務(wù)器接收到對(duì)應(yīng)的消息。

圖 7上位機(jī)訂閱
評(píng)估板訂閱/上位機(jī)發(fā)布
在評(píng)估板文件系統(tǒng)執(zhí)行如下命令訂閱MQTT主題。
Target#./mqtt_client -h broker.hivemq.com -p 1883 -M subscribe -t test/data
圖 8
在上位機(jī)執(zhí)行如下命令發(fā)布消息至MQTT服務(wù)器。
Host#mosquitto_pub -h broker.hivemq.com -p 1883 -t test/data -m www.tronlong.com

圖 9上位機(jī)發(fā)布
消息發(fā)布成功后,評(píng)估板將從MQTT服務(wù)器接收到對(duì)應(yīng)消息。
圖 10?評(píng)估板訂閱
案例編譯
將案例src文件夾拷貝至Ubuntu工作目錄下,請(qǐng)先確保已參考Linux系統(tǒng)使用手冊(cè)編譯過(guò)LinuxSDK,構(gòu)建T113-i處理器對(duì)應(yīng)的GCC編譯器。在案例src目錄執(zhí)行如下命令,使用LinuxSDK開(kāi)發(fā)包目錄下的GCC編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成可執(zhí)行文件。
備注:若使用eMMC配置評(píng)估板,請(qǐng)將命令中的"tlt113-evm-nand"修改為"tlt113-evm-emmc"。
Host#CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc make

圖 11
關(guān)鍵代碼
創(chuàng)建Mosquitto實(shí)例。

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

圖 13
連接MQTT服務(wù)器。

圖 14
發(fā)布消息。

圖 15
訂閱主題。

圖 16
mqtt_sinewave_pub案例
案例說(shuō)明
案例功能:使用libmosquitto(MQTT version 5.0/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ì)繪制波形。
程序流程圖如下圖所示。

圖 17
案例測(cè)試
本案例使用公網(wǎng)MQTT HiveMQ服務(wù)器與上位機(jī)UbuntuWeb程序通信。請(qǐng)通過(guò)網(wǎng)線(xiàn)將評(píng)估板千兆網(wǎng)口ETH0(RGMII)和上位機(jī)連接至公網(wǎng),確保可正常訪(fǎng)問(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

圖 18
執(zhí)行如下命令運(yùn)行程序,連接MQTT服務(wù)器,并發(fā)送正弦波數(shù)據(jù)至MQTT服務(wù)器。
Target#./mqtt_sinewave_pub -h broker.hivemq.com -p 1883
圖 19
評(píng)估板程序運(yùn)行后,在上位機(jī)使用瀏覽器打開(kāi)"toolsweb_mqtt_sub"目錄下的index.html文件。在彈出的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)不同。

圖 20

圖 21
案例編譯
將案例src文件夾拷貝至Ubuntu工作目錄下,請(qǐng)先確保已參考Linux系統(tǒng)使用手冊(cè)編譯過(guò)LinuxSDK,構(gòu)建T113-i處理器對(duì)應(yīng)的GCC編譯器。進(jìn)入案例src目錄執(zhí)行如下命令,使用LinuxSDK開(kāi)發(fā)包目錄下的GCC編譯器進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成可執(zhí)行文件。
備注:若使用eMMC配置評(píng)估板,請(qǐng)將命令中的"tlt113-evm-nand"修改為"tlt113-evm-emmc"。
Host#CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gcc make

圖 22
關(guān)鍵代碼
創(chuàng)建Mosquitto實(shí)例。

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

圖 24
連接MQTT服務(wù)器。

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

圖 26
審核編輯 黃宇
-
通信協(xié)議
+關(guān)注
關(guān)注
28文章
1092瀏覽量
42154 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6291瀏覽量
118103 -
MQTT
+關(guān)注
關(guān)注
5文章
733瀏覽量
25080
發(fā)布評(píng)論請(qǐng)先 登錄
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—雙屏異顯方案演示
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—Linux系統(tǒng)使用手冊(cè)(三)
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—Linux系統(tǒng)使用手冊(cè)(二)
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—視頻開(kāi)發(fā)案例
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—ARM + FPGA通信案例
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—ARM + DSP、RISC-V核間通信開(kāi)發(fā)案例
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—RISC-V案例開(kāi)發(fā)手冊(cè)(上)
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—DSP案例開(kāi)發(fā)手冊(cè)
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例(上)
【創(chuàng)龍TLT113-MiniEVM開(kāi)發(fā)板試用體驗(yàn)】開(kāi)箱評(píng)測(cè)
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—IgH EtherCAT主站開(kāi)發(fā)案例
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—LVGL應(yīng)用開(kāi)發(fā)案例
國(guó)產(chǎn)開(kāi)發(fā)板—米爾全志T113-i如何實(shí)現(xiàn)ARM+RISC-V+DSP協(xié)同計(jì)算?
一篇文章玩轉(zhuǎn)T113的ARM+RSIC V+DSP三核異構(gòu)!
國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—MQTT通信協(xié)議案例
評(píng)論