• 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         #释放客户端
    
    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

  • 相关阅读:
    数据库系统原理
    Java并发编程详解读书笔记(一)
    Java基础之String
    Java基础之数据类型
    winform BackgroundWorker控件的用法
    汉子转拼音
    model验证(验证登录、注册...)
    Ajax.BeginForm 异步搜索
    Ajax.ActionLink 辅助方法实现局部刷新
    js 随笔
  • 原文地址:https://www.cnblogs.com/xingboy/p/16072869.html
Copyright © 2020-2023  润新知