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

posted @ 2022-03-29 17:16  白菜没我白  阅读(3246)  评论(1编辑  收藏  举报