今天我們來學習使用合宙Air708E開發板的MQTT通訊基本功能。
一、MQTT介紹
MQTT是一種低開銷、低頻寬佔用的即時通訊協議,可以用極少的程式碼和頻寬為遠端裝置提供實時可靠的訊息服務。它適用於硬體效能低下的裝置以及網路狀況不佳的環境,因此在物聯網(IoT)小型裝置和移動應用等方面有廣泛應用。
MQTT採用釋出/訂閱通訊模型,客戶端可以釋出訊息到主題(Topic),也可以訂閱主題來接收訊息。這種模式解耦了訊息的傳送者和接收者。
MQTT的訊息傳遞質量分為三種:最多一次(QoS0)不保證交付,至少一次(QoS1)確保至少到達但可能重複,只有一次(QoS2)確保僅到達一次。
二、演示功能概述
本demo透過使用AIR708E開發板,帶你快速體驗透過MQTT協議進行資料接收與傳送。
三、準備硬體環境
3.1 AIR780E開發板
3.2 TYPE-C線快充線
四、準備軟體環境
注:以下軟體下載連結,請複製後,貼上到瀏覽器URL位址列進行下載;
4.1 MQTT.fx
MQTT客戶端軟體下載:
https://docs.openluat.com/air780e/luatos/app/socket/mqtt/
4.2 Luatools
Luatools日誌列印與程式燒錄軟體下載:
https://doc.openluat.com/wiki/52?wiki_page_id=5071
4.3 core韌體和原始碼指令碼
注:core韌體,是基礎環境,該韌體由合宙官方提供,使用者不可修改;原始碼指令碼,為應用程式,可由客戶自行修改;
五、軟硬體資料
●AIR708E開發板原理圖,開啟Air780E產品手冊,訪問頁面中的《EVB_Air780X_V1.6.zip》
●API使用介紹說明
●AIR708E開發板使用說明,開啟Air780E產品手冊,訪問頁面中的《Core_Air780E使用說明V1.0.5.pdf》
5.1 開發板按鈕與指示燈圖示與說明
5.2 硬體安裝與連線
5.2.1 SIM卡安裝
5.2.2 實物連線圖
注:開發板與電腦透過TYPE-C線連線,用於通訊與供電,所以必須使用“支援快充”的TYPE-C線才可以;
六、程式碼示例介紹
6.1 DEMO軟體流程圖
6.2 配置
6.2.1 MQTT的4個重要配置
-
localmqtt_host="lbsmqtt.airm2m.com"(MQTT伺服器地址,這裡使用合宙提供公用測試伺服器)
-
localmqtt_port=1884(MQTT埠)
-
localuser_name="user"(MQTT伺服器登入使用者名稱)
-
localpassword="password"(MQTT伺服器登入密碼)
6.2.2 MQTT的2個重要主題
-
localpub_topic="/luatos/pub/123"--..(mcu.unique_id():toHex())(裝置釋出主題,以下方原始碼55行,可自行修改)
-
localsub_topic="/luatos/sub/123"--..(mcu.unique_id():toHex())(裝置訂閱主題,以下方原始碼56行,可自行修改)
6.3 完整程式清單
注:完整複製後儲存為main.lua,可直接使用
七、功能驗證
7.1 開機
按圖1所示透過TYPE-C線將開發板與電腦連線無誤後,開發板電源指示紅燈常亮,網路指示燈滅,如下圖:
此時按下開機鍵,約2秒後釋放,等待幾秒網路指示綠燈常亮,即開機成功,如下圖:
此時電腦裝置管理器中會發現下圖所示幾個裝置,即代表開機成功!
7.2 開啟Luatool軟體工具並進入專案管理測試頁面
圖4
7.3 按序號步驟建立專案
7.4 按如下步驟進行程式燒錄
7.5 觀察下載過程後確認燒錄結果
7.6 檢視除錯日誌,獲取裝置釋出與訂閱主題
7.7 開啟MQTT客戶端MQTT.fx應用程式並配置
7.7.1 MQTT客戶端基本配置
ProfileName:合宙(可修改為你想要的名稱)
BrokerAddress:http://lbsmqtt.airm2m.com(合宙提供的免費測試伺服器,也可修改為自己的伺服器)
BrokerPort:1883(埠號)
UserName:user
Password:password
7.7.2 兩個重要主題
裝置釋出主題:861959068926349/up(裝置向伺服器傳送資料使用)
裝置訂閱主題:861959068926349/down(接收伺服器資料主題)
7.8 訂閱裝置主題
7.9 MQTT客戶端給開發板傳送資料
7.10 查MQTT客戶端訂閱的裝置資料
八、總結
至此,我們已使用AIR708E開發板完成了MQTT通訊的基本功能。