4G模塊SIMA76XX系列,使用AT指令實現MQTT操作


  本文全部使用的是AT指令,測試的時候使用串口助手測試,其實整個MQTT通信流程跟串口通信流程大體相似的。

  參考的官方文檔是:A76XX Series_AT_Command_Manual_V1.06A76XX Series_MQTT(S)_Application Note_V1.02

  MCU 編程完整AT指令方法:以“AT” 為例,在寫入“AT” 后,緊跟“\r” 才是一條完整的指令

  參考文章:https://www.shangmayuan.com/a/c0beaeff30e9453dac8168af.html

  測試的時候使用串口助手測試,串口助手發送AT指令時需要勾選發送新行,串口助手操作圖如下。

  

0、MQTT前期准備(類似串口的配置串口操作)

/*------------------MQTT前期准備---------------------*/

AT        #握手測試

AT+CPIN? #查詢SIM卡是否插入

AT+CSQ    #查詢信號質量

AT+CREG?  #網絡注冊

AT+CGREG?/AT+CEREG? #查詢網絡注冊狀態
 
AT+CPSI?             #查詢模塊終端信息 /****在WCDMA/GSW中,需要繼續執行以下指令*****/

        AT+CGDCONT=cid,"ip","APN" #指定PDP上下文的參數值

        AT+CGACT=1,cid             #激活指定的PDP文本

        AT+CGACT?                  #查詢PDP上下文的IP地址

    /*******************************************************/

1、建立MQTT鏈接(類似串口的打開串口操作)

/*-------------------建立MQTT鏈接---------------------*/

AT+CMQTTSTART                 #開始鏈接MQTT

AT+CMQTTACCQ=0,"client test0" #用於獲取MQTT客戶機,設置自己id為client test0

AT+CMQTTCONNECT=0,"tcp://broker.hivemq.com:1883",60,1  #連接到測試服務器,自己要測試的話可以網上查一些免費MQTT服務器測試,這里注意必須以”tcp://“開頭,然后再接你的測試服務器,默認1883端口,端口也可以根據需求修改

2、MQTT發送數據(類似串口的發送數據操作)

/*----------------------MQTT發送----------------------*/

AT+CMQTTTOPIC=0,5       #設置發布主題,第1個參數是客戶機數字參數0/1,第2個參數是主題數據長度

    /******************************************************
    輸入該指令后輸入對應長度的主題名,正確會回復OK
    ******************************************************/

AT+CMQTTPAYLOAD=0,60    #設置消息內容,參數和AT+CMQTTTOPIC的類似后面直接發送字符,長度要對應

    /****************************************************
    輸入該指令后輸入對應長度的內容,正確會回復OK
    ****************************************************/

AT+CMQTTPUB=0,1,60      #發布消息,參數1是客戶機參數,參數2是信息發布次數設置,參數3是發布超時時間間隔S

/*注意:模塊每次發送數據都要執行這3步,才能向MQTT服務器發送數據*/

3、MQTT接收數據(類似串口的接收數據操作)

/*----------------------MQTT接收----------------------*/

AT+CMQTTSUBTOPIC=0,5,1    #為要接收的消息設置一個數據長度為5的主題

    /******************************************************
    輸入該指令后輸入對應長度的主題名,正確會回復OK
    ******************************************************/

AT+CMQTTSUB=0             #訂閱設置好的主題的消息

/*執行了這兩步后,只要是這個主題的消息,模塊都可以直接接收,而不需要每次接收都執行該指令,如果要接收其他主題的信息則要重新執行該部分指令*/

4、MQTT關閉(類似關閉串口操作)

/*----------------------MQTT關閉----------------------*/

AT+CMQTTUNSUB=0,5,0    #從MQTT服務器取消訂閱一個主題,MQTT收發都要有主題的,取消后該主題的信息就不能收發了

    /******************************************************
    輸入該指令后輸入對應長度的主題名,正確會回復OK
    ******************************************************/

AT+CMQTTDISC=0,120 #從MQTT服務端斷開鏈接,參數1是客戶機參數,參數2是超時值

AT+CMQTTREL=0 #釋放客戶端0

AT+CMQTTSTOP          #停止MQTT服務 /*注意:要先斷開MQTT服務端,釋放客戶端后才能正確停止MQTT服務*/

  注意:這里所有的AT指令都沒有做具體說明,需要查看具體AT指令參數說明,可以登錄SIMCOM官網下載AT指令文檔查看,官網地址:www.simcom.com,這里說的AT指令是A76XX系列的操作,注意不要搞錯,上面的操作部分我已經分開記錄大家可以靈活結合使用。

5、附上官網的一個MQTT鏈接應用流程圖

  

 補充:

  測試的時候還要結合一個MQTT測試工具,MQTT測試工具的操作使用以及下載,可以參考我另外的博客:https://www.cnblogs.com/xingboy/p/16071606.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM