准备
前置条件:SIM卡可以正常工作,通过串口与ML302模块可以正常通信(通过串口发送AT有OK应答)
进行MQTT的连接呢主要分为两步
第一通过AT指令配置本地网络,以及MQTT连接信息。
第二呢则是通过onenet注册平台以及设备,并且生成鉴权信息。
通过AT指令进行ML302初始化
首先我们先开始第一步,模块初始化。
串口配置:波特率115200 8bit数据位 none校验位 1bit停止位
通过串口发送AT返回OK后,代表通信没问题。
需要用到的AT指令
AT ATE0 /* 关闭回显功能 */ AT+CPIN? // 查询SIM卡
AT+CFUN? //查询协议栈是否打开,设置电话功能 AT+CGDCONT? // 配置APN AT+CGACT? // 查询PDP AT+MPING="www.baidu.com" AT+MQTTCFG AT+MQTTDEL AT+MQTTREC=1 AT+MQTTSTAT? AT+MQTTOPEN=1,1,0,0,0,"","" |
ML302配网所需AT指令详解
模块配网
首先发送AT,返回OK,代表通信成功,如果发送AT串口无resp(响应),则代表与ML302模块通信有问题,或者ML302未启动。
ATE0 /* 关闭回显功能 */
ATE1 /* 打开回显功能 */
回显功能:模块将发送过来的指令原封不动的先复述了一遍后接着发送有效回复,我们称这种复述为回显。
ATE1
OK
ATOK
ATE0OK
OK
根据自己设备调试来决定是否需要打开(个人建议项目开发阶段还是打开比较好)
AT+CPIN? // 查询SIM卡
查询是否有SIM卡。
AT=CSQ //查询当前信号质量
一般信号质量不小于10就行。
AT+CREG? // 查询网络注册状态,是否驻网成功
有些模块有自动驻网功能,所以可以先查询是否驻网,
AT+CPIN?
+CPIN: READY
OK
AT+CSQ+CSQ: 27,99
OK
AT+CREG?+CREG: 0,1
OK
根据返回值判断驻网状态。常见的返回值有: 0,1:已注册在网络,且信号强度良好。 1,5:正在尝试注册。 0,5:注册失败。 1,1:已注册在网络,但信号强度较弱。
如果返回值显示注册失败 (0,5 或 1,5),则需要尝试重新设置驻网命令: Copy Code AT+CREG=1 再次查询驻网状态确认是否成功。
查询协议栈是否打开: Copy Code AT+CFUN? 如果返回 +CFUN: 1,则表示协议栈已完全开启。若不是 1,则设置为 1 以确保设备功能完整: Copy Code AT+CFUN=1
AT+CFUN?
+CFUN: 1
OK
设置 APN 在关闭 PDP 上下文的状态下才能设置 APN。首先关闭 PDP 上下文: Copy Code AT+CGACT=0 然后查询当前 APN 配置: Copy Code AT+CGDCONT? 配置新的 APN。根据需要选择 IP 类型: Copy Code AT+CGDCONT=1,"IP","CMNET" // 对于 IPv4 AT+CGDCONT=1,"IPv4v6","CMNET" // 对于 IPv4 和 IPv6
激活APN
AT+CGACT=0 //PDP关的时候才可以设置APN
AT+CGDCONT? // 配置APN
AT+CGDCONT=1,"IP","CMNET"
AT+CGDCONT=1,"IPv4v6","CMNET"
激活PDP上下文
AT+CGACT? // 查询PDP
AT+CGACT=1,1 //激活PDP,MQTT使用的是1.1,TCP使用的是1.0(开场景)
MQTT服务器连接
1. AT+MQTTDEL
- 用途: 删除现有的MQTT配置。
- 用法: 运行此命令会清除设备上当前的MQTT配置,通常用于在重新配置之前清除旧的设置。
2. AT+MQTTCFG
参数需要在注册onenet之后获取。
- 用途: 配置MQTT连接的详细设置。
- 用法: 这个命令通常用于设置MQTT的服务器地址、端口、用户名、密码等参数。具体的配置方式和参数可以参考设备的文档。
3. AT+MQTTREC=1
- 用途: 启用MQTT消息的接收。
- 用法: 运行此命令后,设备会开始接收MQTT消息。数字1表示启用接收功能。
4. AT+MQTTOPEN=1,1,0,0,0,"",""
- 用途: 打开MQTT连接。
- 用法: 这个命令的参数配置如下:
- 第一个1:表示开启MQTT功能。
- 第二个1:通常表示QoS(服务质量)设置,这里1表示QoS 1(消息至少送达一次)。
- 后面的0:可能代表心跳时间等设置,具体取决于设备。
- "":表示MQTT服务器地址。
- "":表示MQTT服务器端口。
- 需要根据实际服务器配置填写服务器地址和端口。
5. AT+MQTTSTAT?
- 用途: 查询MQTT连接的当前状态。
- 用法: 运行此命令可以获取当前MQTT连接的状态信息,例如是否连接成功、连接的状态等。返回的信息通常包括连接状态、订阅的主题等