拿到中移物聯網的4G通用開發板許久了,上面搭載的是中移最新推出的LTE Cat.1模組ML302,本文經過AT命令操做ML302模組接入OneNet平臺,使用MQTT協議進行數據收發,將整個流程摸索測試一遍,爲後續程序開發作準備。html
1. ML302及開發板硬件介紹
ML302是LTE Cat.1模組,內部集成了豐富的網絡協議和行業標準接口及功能,外設接口也蠻豐富,具體的軟硬件資料能夠從官網下載。json
4G通用開發板上的功能模塊以下圖所示:服務器
在開發板上電以前,須要使用跳線帽短接一下相關的插針進行配置:網絡
將J一、J2處排針短接,J3根據使用的USB轉串口模塊電平進行選擇。串口模塊鏈接J4的UART0_TX、UART0_RX和GND,安裝主天線,安裝4G SIM卡,鏈接Micro USB接口給開發板供電。全部配置以下圖所示:工具
2.模組上電初始化流程
打開串口助手,選擇對應端口號,串口配置115200-N-8-1,打開板載電源開關,會看到串口調試助手有數據返回:post
ML302開機默認手動PDP激活方式,上電初始化流程以下圖所示:學習
更多AT指令參考官方資料。測試
當模塊初始化完成,就能夠配置TCP/UDP跟服務器進行通信了。模組內部集成了AT擴展指令集,支持MQTT協議通信,包括MQTT參數設置、MQTT鏈接、訂閱、發佈、消息接收等。spa
具體請參考「ML302_MQTT用戶手冊」。3d
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」,後臺回覆「提升」,獲取文中代碼。