一、MQTT協(xié)議簡(jiǎn)介
MQTT(消息隊(duì)列遙測(cè)傳輸)是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,是ISO標(biāo)準(zhǔn)(ISO/IEC PRF 20922)下基于發(fā)布/訂閱范式的消息協(xié)議。MQTT工作在TCP/IP協(xié)議棧上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況不理想的情況下而設(shè)計(jì)的發(fā)布/訂閱型消息協(xié)議。由于MQTT協(xié)議的輕量、簡(jiǎn)便、開(kāi)放的特點(diǎn)使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中使用,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)。MQTT協(xié)議在衛(wèi)星鏈路通信傳感器、醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。
本文使用小凌派RK2206開(kāi)發(fā)板實(shí)現(xiàn)基于OpenHarmony的本地MQTT服務(wù)。小凌派RK2206開(kāi)發(fā)板采用瑞芯微高性能、高性價(jià)比的RK2206芯片。RK2206芯片是一款低功耗、高集成的MCU無(wú)線局域網(wǎng)處理器,它可以應(yīng)用于不同的應(yīng)用領(lǐng)域,如物聯(lián)網(wǎng)、可穿戴設(shè)備、家庭自動(dòng)化、云連接等。小凌派RK2206開(kāi)發(fā)板內(nèi)置WIFI模塊,外部接口豐富,使用一個(gè)小凌派RK2206開(kāi)發(fā)板就能夠輕松實(shí)現(xiàn)MQTT物聯(lián)網(wǎng)多種應(yīng)用。
二、硬件電路設(shè)計(jì)
如圖1所示,為小凌派RK2206開(kāi)發(fā)板支持的外部接口,本文使用小凌派RK2206開(kāi)發(fā)板內(nèi)置的WIFI和MQTT服務(wù)器通信。
圖1 小凌派RK2206開(kāi)發(fā)板
三、軟件設(shè)計(jì)
1、主程序設(shè)計(jì)
在iot_mqtt_example函數(shù)中,通過(guò)LOS_TaskCreate函數(shù)創(chuàng)建iot_mqtt_thread線程,并設(shè)置線程優(yōu)先級(jí)、線程堆棧大小等參數(shù)。

2、MQTT服務(wù)程序設(shè)計(jì)
iot_mqtt_thread函數(shù)中,開(kāi)發(fā)板先連接WIFI,通過(guò)WIFI和PC端的MQTT服務(wù)器通信;WIFI連接成功后,初始化網(wǎng)絡(luò),初始化MQTT客戶端;初始化完成后,連接MQTT服務(wù)端,注冊(cè)消息接收函數(shù)message_receive;函數(shù)進(jìn)入循環(huán),5s向PC端MQTT服務(wù)器發(fā)送一次消息。

3、MQTT消息接收程序設(shè)計(jì)
MQTT消息接收程序主要用于接收MQTT服務(wù)端下發(fā)的消息,接收到消息后,打印接收的信息。

四、編譯測(cè)試
1、修改MQTT服務(wù)端IP
PC端按鍵WIN + R鍵打開(kāi)命令行CMD,執(zhí)行命令ipconfig獲取PC端的IP地址,如圖2所示,PC端的IP地址為:192.168.1.164。
圖2 獲取PC端IP地址
對(duì)應(yīng)修改代碼中的MQTT_SERVER_IP為查詢到PC端IP地址192.168.1.164,MQTT_SERVER_PORT修改為MQTT服務(wù)器端口號(hào)1883。代碼如下所示:
#define MQTT_SERVER_IP "192.168.1.164"
#define MQTT_SERVER_PORT 1883
2、下載MQTT代理工具mosquitto
根據(jù)PC電腦位數(shù)選擇對(duì)應(yīng)的安裝包,32位系統(tǒng)下載x86后綴的安裝包,64位系統(tǒng)下載x64后綴的安裝包,本文選擇mosquitto-2.0.9a-install-windows版本進(jìn)行測(cè)試。
32位系統(tǒng)下載地址:https://mosquitto.org/files/binary/win32/,如圖3所示。
圖3 32位系統(tǒng)安裝包
64位系統(tǒng)下載地址:https://mosquitto.org/files/binary/win64/,如圖4所示。
圖4 64位系統(tǒng)安裝包
下載mosquitto安裝包后,點(diǎn)擊安裝mosquitto工具;安裝完畢后,需要配置mosquitto,修改mosquitto安裝路徑下的mosquitto.conf文件,如圖5所示。
圖5 mosquitto配置文件
在mosquitto.conf文件末尾增加如下配置,其中,192.168.1.164為PC端IP地址,1883為MQTT服務(wù)器端口號(hào),allow_anonymous為允許匿名登錄。
listener 1883 192.168.1.164
listener 1883 localhost
allow_anonymous true
mosquitto安裝配置完成后,需要開(kāi)啟mosquitto服務(wù),右擊打開(kāi)我的電腦-管理-服務(wù)和應(yīng)用程序-服務(wù),找到Mosquitto Broker服務(wù),如圖6所示。
圖6 mosquitto服務(wù)
雙擊打開(kāi)Mosquitto Broker服務(wù),點(diǎn)擊啟動(dòng),開(kāi)啟Mosquitto服務(wù),如圖7所示。
圖7 開(kāi)啟mosquitto服務(wù)
3、下載Eclipse Paho MQTT 工具
Paho MQTT工具下載地址:
https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/。
下載Paho軟件包:org.eclipse.paho.ui.app-1.1.1-win32.win32.x86_64.zip。如圖8所示。
圖8 Eclipse Paho MQTT工具下載地址
下載Paho軟件包后,解壓軟件包,雙擊打開(kāi)Paho.exe;進(jìn)入Paho軟件界面,點(diǎn)擊右上角加號(hào)按鍵,添加一個(gè)MQTT服務(wù)器連接,如圖9所示。
圖9 Eclipse Paho MQTT軟件界面
4、WIFI連接
修改代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網(wǎng)絡(luò),設(shè)備通過(guò)WIFI訪問(wèn)PC端MQTT服務(wù)器。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
5、運(yùn)行結(jié)果
例程代碼編譯燒寫(xiě)到開(kāi)發(fā)板后,按下開(kāi)發(fā)板的RESET按鍵,通過(guò)串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
連接
打開(kāi)paho軟件,點(diǎn)擊連接,當(dāng)連接成功時(shí),連接狀態(tài)顯示為已連接;需要注意的是,如果出現(xiàn)連接失敗,請(qǐng)嘗試關(guān)閉PC防火墻再進(jìn)行連接。
訂閱
點(diǎn)擊訂閱添加按鍵,新增主題IOT_MQTT(主題名稱需要與例程代碼MQTTPublish函數(shù)傳參的主題名稱一致),點(diǎn)擊訂閱按鍵,此時(shí),歷史記錄頁(yè)面就開(kāi)始顯示接收的開(kāi)發(fā)板上報(bào)信息,如圖10所示。
圖10 訂閱消息
發(fā)布
在發(fā)布主題欄,輸入主題名稱substopic(主題名稱需要與例程代碼MQTTSubscribe函數(shù)傳參的主題名稱一致),在消息欄輸入消息hello world,點(diǎn)擊發(fā)布,此時(shí),歷史記錄頁(yè)面顯示已發(fā)布出的消息,如圖11所示。
圖11 發(fā)布消息
同時(shí),開(kāi)發(fā)板串口會(huì)同步顯示接收到的消息日志,如下所示。
message arrived on topic substopic: hello world
message arrived on topic substopic: hello world
-
MQTT
+關(guān)注
關(guān)注
5文章
674瀏覽量
23578 -
OpenHarmony
+關(guān)注
關(guān)注
29文章
3844瀏覽量
18310
發(fā)布評(píng)論請(qǐng)先 登錄
《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT協(xié)議連接阿里云服務(wù)器
MQTT物聯(lián)網(wǎng)平臺(tái)有哪些?有哪些功能?

【教程】使用NE2系列串口服務(wù)器MQTT模式接入云平臺(tái)實(shí)例

采用華為云 Flexus 云服務(wù)器 X 實(shí)例部署 MQTT 服務(wù)器完成設(shè)備上云

如何使用HTTP服務(wù)器搭建本地Web網(wǎng)站

梯度科技成為AI Cloud MSP技術(shù)服務(wù)實(shí)驗(yàn)室首批成員單位
百問(wèn)MQTT協(xié)議分析 - MQTT簡(jiǎn)述及協(xié)議報(bào)文格式組成
全新NVIDIA NIM微服務(wù)實(shí)現(xiàn)突破性進(jìn)展
通過(guò)物通博聯(lián)工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)MQTT穿透

ESP8266 通過(guò) MQTT 協(xié)議實(shí)現(xiàn) LED 的遠(yuǎn)程控制

MQTT網(wǎng)關(guān):物聯(lián)網(wǎng)中的關(guān)鍵橋梁

如何在服務(wù)器上調(diào)試本地FPGA板卡
Modbus RTU、Modbus TCP轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)Modbus設(shè)備與云平臺(tái)的無(wú)縫通信

評(píng)論