一、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è)備中已廣泛使用。
阿里云為國(guó)內(nèi)主流的云平臺(tái),提供免費(fèi)試用的物聯(lián)網(wǎng)平臺(tái),本文使用小凌派RK2206開(kāi)發(fā)板實(shí)現(xiàn)基于OpenHarmony的阿里云IoT服務(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ì)
主程序設(shè)計(jì)
在iot_aliyun_example函數(shù)中,通過(guò)LOS_TaskCreate函數(shù)創(chuàng)建iot_aliyun_thread線程,并設(shè)置線程優(yōu)先級(jí)、線程堆棧大小等參數(shù)。
阿里云服務(wù)程序設(shè)計(jì)
iot_aliyun_thread函數(shù)中,開(kāi)發(fā)板先連接WIFI,通過(guò)WIFI和阿里云IoT平臺(tái)通信;WIFI連接成功后,初始化網(wǎng)絡(luò),初始化MQTT客戶端;初始化完成后,成功連接阿里云IoT平臺(tái)。
四、編譯測(cè)試
登錄阿里云
設(shè)備連接阿里云前,需要做一些準(zhǔn)備工作;登錄阿里云IoT平臺(tái),在平臺(tái)注冊(cè)個(gè)人用戶賬號(hào),并且需要實(shí)名認(rèn)證后才可以正常使用。如圖2所示,為阿里云IoT平臺(tái)地址:https://free.aliyun.com/product/iotfreetrail。
圖2 阿里云IoT平臺(tái)地址
開(kāi)通物聯(lián)網(wǎng)服務(wù)
在阿里云IoT平臺(tái)注冊(cè)個(gè)人用戶賬號(hào)并進(jìn)行登錄,登錄后需要開(kāi)通物聯(lián)網(wǎng)平臺(tái)服務(wù),點(diǎn)擊立即開(kāi)通,如圖3所示。
圖3 開(kāi)通物聯(lián)網(wǎng)平臺(tái)
點(diǎn)擊立即開(kāi)通,在確認(rèn)頁(yè)面,點(diǎn)擊右下角的立即開(kāi)通,如圖4所示。
圖4 立即開(kāi)通
點(diǎn)擊立即開(kāi)通,提示開(kāi)通成功,如圖5所示。
圖5 開(kāi)通成功提示
點(diǎn)擊進(jìn)入管理控制臺(tái),管理控制臺(tái)如圖6所示。
圖6 管理控制臺(tái)
創(chuàng)建產(chǎn)品
點(diǎn)擊進(jìn)入公共實(shí)例,點(diǎn)擊側(cè)邊欄的產(chǎn)品頁(yè)面,點(diǎn)擊創(chuàng)建產(chǎn)品,如圖7所示。
圖7 創(chuàng)建產(chǎn)品
輸入產(chǎn)品名稱,選擇自定義品類(lèi)-直連設(shè)備,點(diǎn)擊確定創(chuàng)建產(chǎn)品,如圖8所示。
圖8 創(chuàng)建產(chǎn)品詳情
成功創(chuàng)建產(chǎn)品后,側(cè)邊欄點(diǎn)擊產(chǎn)品,可以查看到創(chuàng)建的產(chǎn)品信息,如圖9所示。
圖9 產(chǎn)品詳情
添加設(shè)備
點(diǎn)擊側(cè)邊欄設(shè)備頁(yè)面,點(diǎn)擊添加設(shè)備,如圖10所示。
圖10 添加設(shè)備
按照要求填入產(chǎn)品名稱和DeviceName,點(diǎn)擊確認(rèn),如圖11所示。
圖11 添加設(shè)備詳情頁(yè)
成功創(chuàng)建設(shè)備后,側(cè)邊欄點(diǎn)擊設(shè)備,可以查看到創(chuàng)建的設(shè)備信息,如圖12所示。
圖12 設(shè)備頁(yè)面
點(diǎn)擊進(jìn)入剛添加的設(shè)備,可以查看到設(shè)備的詳細(xì)信息,如圖13所示。
圖13 設(shè)備詳情
點(diǎn)擊查看MQTT連接參數(shù),查看MQTT連接所需的參數(shù),如圖14所示。
圖14 MQTT連接參數(shù)
在PC上使用WIN + R鍵打開(kāi)命令行CMD,執(zhí)行如下命令獲取接入域名的IP地址。如圖15所示,通過(guò)ping命令可以查詢到MQTT域名的IP地址為47.102.164.191。
ping iot-06z00d4dxawzdv7.mqtt.iothub.aliyuncs.com
圖15 查詢MQTT域名IP地址
對(duì)應(yīng)修改代碼中的MQTT_SERVER_IP為查詢到PC端IP地址47.102.164.191,MQTT_SERVER_PORT修改為MQTT服務(wù)器端口號(hào)1883。代碼如下所示:
#define MQTT_SERVER_IP "47.102.164.191"
#define MQTT_SERVER_PORT 1883
根據(jù)MQTT連接參數(shù)依次修改代碼中的CLIENT_ID、USERNAME和PASSWORD,代碼如下所示:
#define PRODUCT_KEY "hdm1KctTIxC"
#define DEVICE_NAME "aliyun"
#define CLIENT_ID "hdm1KctTIxC.aliyun|securemode=2,signmethod=hmacsha256,timestamp=1655280007303|"
#define USERNAME "aliyun&hdm1KctTIxC"
#define PASSWORD "d41441cfae339f4a09ac2bc600b736db80d3d6694f1d58efc16eb8e812d4d295"
WIFI連接
修改代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網(wǎng)絡(luò),設(shè)備通過(guò)WIFI訪問(wèn)阿里云IoT平臺(tái)。代碼如下所示:
#define SSID "lzdz"
#define PASSWORD "12345678"
運(yùn)行結(jié)果
例程代碼編譯燒寫(xiě)到開(kāi)發(fā)板后,按下開(kāi)發(fā)板的RESET按鍵,通過(guò)串口軟件查看日志,串口打印MQTT初始化、連接等日志。
NetworkConnect...
MQTTClientInit...
MQTTConnect...
MQTTSubscribe...
此時(shí)登錄阿里云IoT平臺(tái),點(diǎn)擊進(jìn)入設(shè)備詳情頁(yè)面,可以看到設(shè)備的當(dāng)前狀態(tài)為在線。如圖所示。
圖16 設(shè)備上線阿里云IoT平臺(tái)
來(lái)源:凌智電子
-
IOT
+關(guān)注
關(guān)注
186文章
4178瀏覽量
196228 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3660瀏覽量
16156 -
RK2206
+關(guān)注
關(guān)注
0文章
34瀏覽量
1766 -
小凌派
+關(guān)注
關(guān)注
0文章
27瀏覽量
1193
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論