本文全部使用的是AT指令,测试的时候使用串口助手测试,其实整个MQTT通信流程跟串口通信流程大体相似的。
参考的官方文档是:A76XX Series_AT_Command_Manual_V1.06、A76XX 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