4G Cat.1模組ML302使用MQTT協議接入OneNet平臺

拿到中移物聯網的4G通用開發板許久了,上面搭載的是中移最新推出的LTE Cat.1模組ML302,本文通過AT命令操作ML302模組接入OneNet平臺,使用MQTT協議進行數據收發,將整個流程摸索測試一遍,爲後續程序開發做準備。

1. ML302及開發板硬件介紹

ML302是LTE Cat.1模組,內部集成了豐富的網絡協議和行業標準接口及功能,外設接口也蠻豐富,具體的軟硬件資料可以從官網下載

4G通用開發板上的功能模塊如下圖所示:

在開發板上電之前,需要使用跳線帽短接一下相關的插針進行配置:

將J1、J2處排針短接,J3根據使用的USB轉串口模塊電平進行選擇。串口模塊連接J4的UART0_TX、UART0_RX和GND,安裝主天線,安裝4G SIM卡,連接Micro USB接口給開發板供電。所有配置如下圖所示:

2.模組上電初始化流程

打開串口助手,選擇對應端口號,串口配置115200-N-8-1,打開板載電源開關,會看到串口調試助手有數據返回:

ML302開機默認手動PDP激活方式,上電初始化流程如下圖所示:

更多AT指令參考官方資料。

當模塊初始化完成,就可以配置TCP/UDP跟服務器進行通訊了。模組內部集成了AT擴展指令集,支持MQTT協議通訊,包括MQTT參數設置、MQTT連接、訂閱、發佈、消息接收等。

具體請參考「ML302_MQTT用戶手冊」。

3. OneNet平臺添加設備

登錄註冊好的OneNet平臺,進入開發者中心,點擊全部產品,選擇基礎服務中的MQTT物聯網套件:

點擊添加產品,根據實際填寫信息,設備接入協議選擇MQTTS:

接着點擊添加設備,給設備取個名字:

現在平臺設備已經創建好了,後面就可以配置模組上線,進行數據收發了。不過在此之前,需要下載token生成工具,根據產品id等信息生成token,這在後續設備進行MQTT配置時需要用到。

開發文檔中下載軟件到PC機,根據實際填寫對應參數,然後點擊Generate生成token:

產品ID可以在平臺的產品概況中找到,access_key需要點擊查看,然後平臺會給註冊手機發送驗證碼,填寫驗證碼後可獲取到key。這裏的離線時間戳,表示設備經過多長時間會被平臺強制下線。這裏通過在線轉換工具設置一年時間:

4.MQTT數據收發

1. 配置MQTT參數

平臺的MQTT服務器IP爲183.230.40.96,端口號爲1883,id字段填寫設備名稱ML302,用戶名和密碼分別是產品id和前面根據產品id生成的token,如下爲測試時發送的數據,返回OK,配置信息已經存儲到模組:

AT+MQTTCFG="183.230.40.96",1883,"ML302",60,"364992","version=2018-10-31&res=products%2F364992&et=1628214414&method=md5&sign=eQlNK67QznJA0Grs5HhQ5A%3D%3D",1,"",0

2.連接服務器

模組返回"+MQTTOPEN:OK",表示連接成功,這時候平臺顯示設備在線狀態。

我們可以看到,模組每間隔1分鐘會收到心跳包,這裏跟前面配置的「keepAlive」字段一致。

3.訂閱主題

OneNet平臺定義了系統topic簇,包括數據點、設備命令、設備鏡像,都以“$sys/{pid}/{device-name}”開頭,其中參數爲產品id和設備名稱。

通過「$sys/364992/ML302/#」來訂閱所有系統topic,後續就可以接收系統所有topic相關信息:

4. 發佈消息到平臺

平臺定義的數據點topic如下所示:

其中數據內容僅支持json格式,並且規定了相關參數名稱,具體可查閱開發文檔

如下爲測試時發送的數據:

AT+MQTTPUB="$sys/364992/ML302/dp/post/json",1,0,0,"{\"id\":123,\"dp\":{\"temperatrue\":[{\"v\":28.5}]}}"

在平臺的設備列表中,點擊設備後面的數據流,可看到數據已經上傳,打開實時刷新,每發送一次,數據都會自動顯示出來。

5. 平臺下發數據

點擊設備後面的更多操作,然後點擊下發命令:

填寫命令內容及超時時間,點擊發送,這時候模組會收到平臺發送的消息,由於模組沒有應答,超時後平臺顯示超時錯誤:

平臺定義的設備命令相關topic如下:

設備在回覆命令應答時,需要將平臺下發的cmid字段作爲應答消息的一部分發回平臺。這裏將超時時間設置爲最長的30秒,以便有時間拷貝出cmid字段進行發送:

設備在應答中可以攜帶數據,平臺可以收到,如上圖中的“test”。

6. 斷開連接

雖然使用MQTT必然是想保持長連接的,但也少不了主動斷開連接和銷燬參數配置的操作。

ML302接入OneNet平臺通過MQTT收發數據的整個流程還是挺順暢的,後面可以通過MCU進行程序控制來完成整個通訊流程,當然更期待ML302的OpenCPU版本及資料。


關注公衆號「TonyCode」,後臺回覆“提高”,獲取文中代碼。

個人博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章