赞
踩
最近在做一个采用SIM7600模块,做一个MQTT协议传输数据到服务器,这里我先简单介绍一下关于AT指令的流程,后面有时间我会详细介绍自己移植的底层MQTT协议在单片机上面的实现(用于某些模块没有内置关于MQTT的AT指令),这里我给大家推荐一个链接是中国移动的onenet平台的MQTT相关源码,他们给出了单片机的应用代码,需要的话可以自己去参考。还有就是别去相信网上和淘宝的什么开发板说什么实现了MQTT协议上传服务器,他就是抄的中国移动onene的代码,黑心商家啊(拿别人的开源成果来卖钱)。
下面介绍下关于SIM7600CE模块实现AT指令上传服务器的流程。关于HTTP、TCP/TP、以及UDP我就不介绍了,卖家的资料里都有详细的说明。
- AT+CRESET //复位
-
- OK
-
- //开机输出信息
- RDY
- +CPIN: READY
- SMS DONE
- PB DONE
注意在进行复位后,大约需要15s时间的等待时间。等到完全输出开机信息后,向模块发送AT指令才会有效果。
- //查询是否检测到卡
- AT+CPIN?
-
- +CPIN: READY
-
- OK
-
-
- //查询信号质量
- AT+CSQ
-
- +CSQ: 26,99
-
- OK
-
-
- //检测联网
- AT+CREG?
-
- +CREG: 0,1
-
- OK
-
-
- //检测4G网
- AT+CGREG?
-
- +CGREG: 0,1
-
- OK
- //设置 APN
- AT+CGDCONT=1,"IP","CMNET"
-
- OK
-
- //确保第一个PDP上下文获取IP地址
- AT+CGPADDR
-
- +CGPADDR: 1,10.114.29.137
- +CGPADDR: 2,0.0.0.0,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
- +CGPADDR: 3,0.0.0.0,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
-
- OK
- //启动MQTT服务,激活PDP上下文
- AT+CMQTTSTART
-
- OK
-
- +CMQTTSTART: 0
-
- //获取客户
- AT+CMQTTACCQ=0,"client test0"
-
- OK
注意启动MQTT服务时,不能反复启动后,再启动。否则会报错。
- //"tcp://116.247.119.165:5141”必须以“tcp://”开头。如果<server_addr>不包括端口,默认端口为1883。
- //第3个参数是从客户机接收到的两条消息之间的时间间隔。当长时间没有消息发送到服务器时,客户端将发送一个保持活动的数据包。范围是从60s至64800s(18小时)。
- //第4个参数清除会话标志。值的范围是从0到1,默认值是0。
- 0-服务器断开连接后必须存储客户端的订阅。这包括继续存储QoS1和QoS2个订阅主题的消息,以便在客户端重新连接时可以传递这些主题。服务器还必须在连接丢失时保持正在传输的飞行中消息的状态。必须保留此信息,直到客户端重新连接。
- 1-服务器必须放弃以前维护的有关客户端的任何信息,并将连接视为“干净”。当客户端断开连接。
- //第5,6个参数分别为服务器的名字和密码
- //MQTT连接服务器
- AT+CMQTTCONNECT=0,"tcp://120.76.100.197:18831",60,1,"TEST","TEST"
- OK
- +CMQTTCONNECT: 0,0
这里也需要注意的是,连接到服务器后再次连接,会报错。
- //订阅一个主题
- AT+CMQTTSUB=0,3,1
- >ISC //输入的主题
- OK
-
- +CMQTTSUB: 0,0
-
- //发布一个主题
- AT+CMQTTTOPIC=0,3
- >ISC //发布的主题
- OK
-
- //发布消息
- AT+CMQTTPAYLOAD=0,12
- >youlangtest1 //发布的消息
- OK
-
- //发送服务器
- AT+CMQTTPUB=0,1,60
-
- OK
-
- +CMQTTPUB: 0,0
-
- //以下是订阅后的回执信息
- +CMQTTRXSTART: 0,3,12
- +CMQTTRXTOPIC: 0,3
- ISC
- +CMQTTRXPAYLOAD: 0,12
- youlangtest1
- +CMQTTRXEND: 0
-
- //取消订阅主题
- AT+CMQTTUNSUB=0,4,0
- >ISC1
- OK
-
- +CMQTTUNSUB: 0,0
这里我使用了通信猫中的MQTT的调试软件的服务器通信猫调试助手。我测试的时候,不知道为什么有点小BUG,在调试软件那边只能显示接收一次推送,但是实际上每次都是推送成功了的。所以在测试中,我采用了先订阅主题,再发布自己的主题,来实现自发自收的效果进而测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。