中国移动 ML307R 模组 AT 命令 MQTT 接入 ThingsCloud
中国移动 ML307R 模组 AT 命令 MQTT 接入 ThingsCloud
本篇教程介绍如何使用中国移动 ML307R 系列模组通过 AT 命令 MQTT 接入 ThingsCloud 物联网平台。请参考以下步骤,只需几分钟就可以将模组连接到平台,并实现数据上报,以及实时接收平台下发数据实现远程设备控制。

提示
如果您还不了解 ThingsCloud MQTT 接入协议,可以点击 设备 MQTT 接入 详细了解。
固件版本及适用模组型号
本教程中的 AT 命令使用 ML307R 模组官方 AT 固件 V6.8.2 测试通过。
适用于以下模组系列:
- MN316/318/319/326
- ML302/305/307
AT 基本介绍
什么是 AT 命令?
AT 命令是用于与蜂窝调制解调器等模组通信的命令集,由以"AT"前缀开头的 ASCII 字符集组成。它最早由贺氏公司为控制调制解调器而发明,后被纳入 GSM 相关标准,逐渐成为通信模组产品开发中的实际标准。以下是具体介绍:
- 功能:AT命令主要用于向移动调制解调器请求服务,如电话呼叫、短信发送、网络连接等操作。通过AT命令,主控设备(如MCU)可以控制模组执行各种功能,获取模组的状态信息等。
- 通信方式:AT命令通常通过USB或UART接口进行通信和数据传输。
AT命令基本语法
AT命令基本语法如下:
- 命令格式:AT命令都以"AT"或"at"开头,以回车符(
<CR>
,十六进制为0x0D)结束,通常会与换行符(<LF>
,十六进制为0x0A)一并发送,即结尾为<CR><LF>
("\r\n")。 - 命令类型:AT指令分测试指令、查询命令、设置参数指令、执行命令指令四类。
- 查询命令:用于获取模块当前设置的参数,格式为"AT+
<CMD>
? ",如"AT+CSQ? "用于查询模块信号强度。 - 设置命令:用于设置模块的参数,格式为"AT+
<CMD>
=p1(,p2(,p3(…)))",其中p1、p2等为参数,如"AT+CFUN=1"用于设置模块射频功能为开启。 - 执行命令:让模块执行某个功能,格式为"AT+
<CMD>
",如"AT+RESET"用于重启模块。 - 测试命令:格式为"AT+
<CMD>
=?",用于查询命令的参数列表和对应的取值范围,如"AT+CSQ=?"会返回模块支持的信号强度和误码率取值范围。
- 查询命令:用于获取模块当前设置的参数,格式为"AT+
- 响应格式:当模组处理完一条命令后,将会响应"OK""ERROR"或"+CME ERROR:
<err>
",表示已经准备好接收新命令。通常,命令后面跟随形式为<CR><LF><response><CR><LF>
的响应,如"\r\n
+CSQ: 25,0\r\n\r\n
OK\r\n
"。
串口连接及 PC 调试工具
这里我们使用了一块 ML307R 核心板,使用 UART 转 USB 工具,将模组的 UART 接口连接到 PC。

可以使用任意串口调试工具,打开串口,波特率使用模组默认的 115200。
教程中我们使用 LLCOM 串口调试工具。
AT 命令
检查模组基本信息
以下 AT 命令可以查询模组的一些基本信息,可以根据需要来使用,不是必须的。
查询模组型号
AT+CGMR
ML307R-DL-MBRH0S01
OK
查询物联网卡 ICCID
AT+MCCID
+MCCID: 89860848102470492095
OK
查询模组 IMEI
若使用一型一密的方式,动态获取设备证书,则需要用到模组 IMEI。
AT+CGSN=1
+CGSN: 866960077978102
OK
查询网络注册状态
AT+CEREG?
+CEREG: 0,1
OK
表示模组已注册到 4G 网络。
查询信号强度
AT+CSQ
+CSQ: 18,99
OK
建立 MQTT 连接
提示
进入 ThingsCloud 控制台 创建设备,获取设备证书,用于 MQTT 连接参数。
在设备详情页的【连接】选项中,找到当前可用区的 MQTT 服务器域名和端口,如下图:

发送以下 AT 命令:
AT+MQTTCONN=0,"<MQTT主机>",1883,"","<Username>","<Password>"
OK
+MQTTURC: "conn",0,0
模组成功通过 MQTT 连接到平台,如下图:

接下来,模组可以向平台发布消息或订阅消息。
提示
如果您还不了解 ThingsCloud 的 MQTT 发布和订阅主题,点此了解 MQTT 主题一览
上报设备属性
这里我们使用属性上报,来模拟上报温度和湿度数据,数据的格式是 JSON,如下:
{
"temperature": 22.1,
"humidity":45.5
}
将以上格式去掉空格和换行,如下:
{"temperature":22.1,"humidity":45.5}
计算长度为 36 个字节,在 AT 命令中先发送 AT+MQTTPUB
,进入数据模式,然后再发送 JSON 数据部分。
AT 命令如下:
AT+MQTTPUB=0,"attributes",0,0,0,36
>
{"temperature":22.1,"humidity":45.5}
+MQTTPUB: 0,3304,50
OK
此时,平台接收到上报的属性数据,如下图:

在上图中,可以看到模组还收到了平台下发的响应消息,这是平台对设备上报属性的响应,可以事先订阅该消息,但不是必须的。订阅该主题的 AT 命令如下:
AT+MQTTSUB=0,"attributes/response",0
+MQTTSUB: 0,3301
OK
+MQTTURC: "suback",0,3301,0,0
接收平台下发设备属性
设备要实时接收平台下发的属性数据,需要先订阅属性下发主题,AT 命令如下:
AT+MQTTSUB=0,"attributes/push",0
+MQTTSUB: 0,3301
OK
+MQTTURC: "suback",0,3301,0,0
接下来,我们在平台控制一个开关量属性的变化,可以看到模组实时收到平台下发的消息,如下图:

断开 MQTT 连接
AT 命令如下:
AT+MQTTDISC=0
OK
+MQTTURC: "conn",0,2