我是靠谱客的博主 欢喜钢笔,最近开发中收集的这篇文章主要介绍中移M5310A模块MQTT详解1.模块介绍2.模块初始化3.AT+MQTT 以MQTT协议接入Onenet平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.模块介绍

M5310A作为一款NB-IoT模块,价格符合全球NB-IoT价格(3美元)。不仅封装小巧,而且内置AT指令,可快速连接到Onenet平台。

2.模块初始化

1.上电,等待5秒左右,发送AT指令,返回OK
2.AT+CIMI:查询NBcard卡号
3.AT+CSQ:查询信号质量,返回“信号:99”,如 22,99;
4.AT+CEREG?:查询网络是否可用
5.AT+CEREG=1:驻网
6.AT+CEREG? 返回 +CGATT:1
参考初始化代码:

	while(M5310A_SendCmd("ATrn", "OK"))
		DelayXms(500);
	
	UsartPrintf(USART1, "2. AT+CIMIrn");
	while(M5310A_SendCmd("AT+CIMIrn", "460"))		//查询卡号
		DelayXms(500);
	
	UsartPrintf(USART1,"3.AT+CSQrn");
	M5310A_Clear();
	while(M5310A_SendCmd("ATrn","OK"))
		DelayXms(500);
	
	UsartPrintf(USART1, "4. AT+CEREG?rn");
	while(M5310A_SendCmd("AT+CEREG?rn","CEREG:0,1"))
		DelayXms(500);
	
	UsartPrintf(USART1, "5. AT+CGATT=1rn");
	while(M5310A_SendCmd("AT+CGATT=1rn","OK"))					
		DelayXms(500);
	
	UsartPrintf(USART1, "6. AT+CGATT?rn");
	while(M5310A_SendCmd("AT+CGATT?rn","CGATT:1"))					//附着GPRS业务
		DelayXms(500);

3.AT+MQTT 以MQTT协议接入Onenet平台


1.创建实体
AT+MQTTCFG=“183.230.40.39”,6002,"%s",20,"%s","%s",1rn",DeviceID,ProID,APIKEY
Device为设备ID;ProID为产品ID,APIKey为鉴权信息
返回:OK


2.连接ONENET
AT+MQTTOPEN=1,1,0,0,0,"",""
返回 :+MQTTOPEN:OK
注意:连接时间可能需要等待2-10s,若返回ERROR,则创建实体时,信息错误


3.查询MQTT连接状态
AT+MQTTSTAT?
返回:
+MQTTSTAT:
0 未初始化
1 已初始化
2 已断开
3 正在首次连接服务器
4 正在重连服务器
5 已连接


4.订阅消息
AT+MQTTSUB

AT+MQTTSUB=“test”,2 //topic为test,质量等级为2
OK
+MQTTSUBACK: 5,2
AT+MQTTSUB?
+MQTTSUB:test OK


5.发布消息
AT+MQTTPUB
如:
AT+MQTTPUB=“test”,2,1,0,0,“update message”
+++++++++++++++++++++++++++++++
主题名:test
质量等级2
服务器是储存该消息,并向新订阅者发送最新订阅消 息
无重发标志
输入消息类型,0-字符串输入,1-16 进制串输入
内容:updata message
+++++++++++++++++++++++++++++
返回:
OK
+MQTTPUBREC: 0,10
+MQTTPUBCOMP: 0,10
+MQTTPUBREL: 0,6


6.断开连接以及删除实体
AT+MQTTDISC 断开连接
AT+MQTTDEL 释放资源,之后可以再次使用+MQTTCFG 进行配置
注意
1.需要断开连接才能删除实体
2.实体只能创建一个
3.建议代码为:连接前先进行AT+MQTTDISC,AT+MQTTDEL

接入参考代码:

char buff[128];
	memset(buff, 0, sizeof(buff));
	sprintf(buff,"AT+MQTTCFG="183.230.40.39",6002,"%s",20,"%s","%s",1rn",DeviceID,ProID,APIKEY);
	UsartPrintf(USART1,buff);
	
	UsartPrintf(USART1,"断开连接rn");
	M5310A_SendString("AT+MQTTDISCrn");
		DelayXms(50);
	
	UsartPrintf(USART1,"删除实体rn");
	M5310A_SendString("AT+MQTTDELrn");
		DelayXms(200);

	UsartPrintf(USART1,"建立实体rn");
	while(M5310A_SendCmd(buff,"OK"))
		DelayXms(500);
	
	UsartPrintf(USART1,"进入连接rn");
	while(M5310A_Time_SendCmd("AT+MQTTOPEN=1,1,0,0,0,"",""rn","+MQTTOPEN:OK",100))
		DelayXms(500);
	DelayXms(200);
	
	UsartPrintf(USART1,"查询状态rn");
	while(M5310A_SendCmd("AT+MQTTSTAT?rn","MQTTSTAT:5"))
		DelayXms(500);
	
	
	memset(buff, 0, sizeof(buff));

最后,还有NBIoT连接TCP,再通过MQTT协议连接,这种连接方式,更能体现MQTT报文,同时也能实现功能,时间不早,在下一篇博客中讲解

最后

以上就是欢喜钢笔为你收集整理的中移M5310A模块MQTT详解1.模块介绍2.模块初始化3.AT+MQTT 以MQTT协议接入Onenet平台的全部内容,希望文章能够帮你解决中移M5310A模块MQTT详解1.模块介绍2.模块初始化3.AT+MQTT 以MQTT协议接入Onenet平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部