大夏龙雀科技4G Cat1 CT511-AT0 MQTT联网实战教程
https://www.dong-blog.fun/post/1960
大夏龙雀科技4G Cat1 CT511-AT0 MQTT联网实战教程
本文将详细介绍如何搭建自己的MQTT Broker,并使用大夏龙雀科技4G Cat1 CT511-AT0模块进行MQTT联网实战。通过本教程,您将学会如何配置模块、连接MQTT服务器、订阅和发布消息等操作。
1. 搭建MQTT Broker
在开始之前,您需要搭建自己的MQTT Broker。匿名的Broker不需要用户名和密码即可使用。关于如何搭建MQTT Broker,可以参考以下链接:
搭建MQTT Broker教程
2. 获取大夏龙雀科技4G Cat1 CT511-AT0模块
大夏龙雀科技4G Cat1 CT511-AT0模块现以9.9元的价格提供样品。
资料下载
相关文档如下:
DX-CT511&CT511N_串口UART_应用指导.pdf
3. 硬件连接
按照以下步骤连接模块:
- 将USB转串口模块的TX、RX、GND分别连接到DX-CT511/DX-CT511N模块的RX、TX、GND。
- 插入SIM卡。
- 连接4G天线,如果使用带N的模块,还需连接GPS天线。
- 连接电源,确保模块正常供电。
4. 模块串口配置
模块串口默认配置如下:
- 波特率:115200bps
- 数据位:8位
- 校验位:无
- 停止位:1位(115200/8/N/1)
5. 模块工作模式
模块支持三种工作模式:
- AT指令模式(默认模式)
- 数据传输模式
- 休眠模式
说明:模块上电后默认进入AT指令模式。
6. 使用XCOM连接模块
打开电脑上的XCOM软件,并连接串口设备:
发送AT
指令后,如果收到OK
回复,说明模块工作正常:
7. MQTT连接配置
接下来,参考以下图片进行MQTT连接配置:
7.1 设置APN
当设备需要接入中国移动的NB-IoT网络时,需要通过以下指令设置APN。如果APN配置错误,设备将无法成功连接到网络。
AT+QICSGP=1,1,"cmnbiot","",""
OK
7.2 开启移动网络
AT+NETOPEN
OK
+NETOPEN: SUCCESS
7.3 设置客户端ID
设置客户端ID。指令 AT+MCONFIG=<clientid>,[<username>,<password>][,<will_flag>,<will_qos>,<will_retain>,<will_topic>,<will_message>]
用于配置MQTT连接的客户端ID(<clientid>
)、用户名(<username>
,最大长度256)、密码(<password>
,最大长度256)以及遗嘱相关参数,包括遗嘱开关(<will_flag>
,0表示禁用,1表示启用)、遗嘱QoS(<will_qos>
,0-2分别表示最多一次、最少一次、只有一次)、遗嘱保留标志(<will_retain>
,0表示服务器不存储,1表示存储)、遗嘱主题(<will_topic>
,最大长度256)和遗嘱内容(<will_message>
,最大长度1024),配置成功后返回 OK
;通过 AT+MCONFIG?
可以查询当前配置,返回格式为 <clientid>,[<username>],[<password>],[<will_flag>,<will_qos>,<will_retain>,<will_topic>,<will_message>]
,分别对应客户端ID、用户名、密码及遗嘱参数。
通过以下指令配置MQTT连接的客户端ID:
AT+MCONFIG="4G_TEST"
OK
7.4 配置MQTT服务器信息
配置MQTT服务器信息:通过指令 AT+MIPSTART=<ipaddress>,<port>[,<version>]
可以配置MQTT服务器的IP地址(最大长度256字符)、端口号(范围0-65535,默认值为0)以及协议版本(3表示3.1版本,4表示3.1.1版本,可选),配置成功后返回 OK
,并通过 +MIPSTART: <result>
反馈配置结果(SUCCESS
表示成功,FAILURE
表示失败);使用 AT+MIPSTART?
可以查询当前配置,返回格式为 <port>,<version>
,分别表示当前端口号和协议版本。
通过以下指令配置MQTT服务器的IP地址、端口号和协议版本:
AT+MIPSTART=198.12.95.182,9000,4
OK
+MIPSTART: SUCCESS
7.5 连接MQTT服务器
连接MQTT服务器。指令 AT+MCONNECT=<clean_session>,<keepalive>
用于连接MQTT服务器,其中 <clean_session>
指定会话模式(0表示持久会话模式,1表示临时会话模式),<keepalive>
设置心跳间隔时间(范围30-1800秒),连接成功后返回 OK
,并通过 +MCONNECT: <result>
反馈连接结果(SUCCESS
表示成功,FAILURE
表示失败);使用 AT+MCONNECT?
可以查询当前连接配置,返回格式为 <clean_session>,<keepalive>
,分别表示会话模式和心跳间隔。
通过以下指令连接MQTT服务器:
AT+MCONNECT=1,60
OK
+MCONNECT: SUCCESS
7.6 订阅主题
订阅主题。指令 AT+MSUB=<topic>,<qos>
用于订阅MQTT主题,其中 <topic>
为主题名称(最大长度256,最多可订阅50个主题),<qos>
为服务质量等级(0表示最多一次,1表示最少一次,2表示只有一次),订阅成功后返回 OK
,并根据 AT+MQTTMIX
的设置反馈结果:当 AT+MQTTMIX=0
时,通过 +MSUB:<result>
返回订阅结果(SUCCESS
表示成功,FAILURE
表示失败);当 AT+MQTTMIX=1
时,通过 +MSUBID: <packetid>
返回数据包标识符(范围1-65535),并在订阅确认后通过 +MSUBACK: <packetid>
返回确认信息;使用 AT+MSUB?
可以查询当前订阅配置,返回格式为 <topic>,<qos>
,分别表示主题和服务质量等级。
<qos>
是MQTT协议中 服务质量等级(Quality of Service, QoS) 的参数,用于定义消息传递的可靠性和保证机制。它有三个等级,分别如下:
- QoS 0:最多一次(At most once)
- 消息发送后不保证接收方是否收到,也不进行确认和重传。
- 适用于对可靠性要求不高的场景,例如传感器数据丢失对系统影响较小的情况。
就像你随便把信扔进邮筒,邮局会尽力送,但不会告诉你信有没有送到。如果信丢了,你也不知道。
- QoS 1:最少一次(At least once)
- 消息发送后,接收方会确认收到消息。如果发送方未收到确认,会重发消息。
- 确保消息至少被接收一次,但可能导致重复接收。
- 适用于需要保证消息到达但对重复数据不敏感的场景。
这次邮局会确认信送到了。如果没收到确认,邮局会再送一次。但可能会发生“信送到了,但邮局以为没送到,又送了一次”的情况,导致你的朋友收到两封信。
- QoS 2:只有一次(Exactly once)
- 通过复杂的确认机制,确保消息只被接收一次,避免重复或丢失。
- 适用于对数据完整性和准确性要求极高的场景,例如金融交易或关键控制指令。
这次邮局会确保信只送一次,既不会丢,也不会重复。它会用一套复杂的流程来保证这一点。
<qos>
等级越高,消息传递的可靠性越强,但网络开销和延迟也会增加。选择适当的 QoS 等级需要根据具体应用场景的需求权衡。
通过以下指令订阅MQTT主题:
AT+MSUB="hello/topic_mcu_rev",0
OK
+MSUB: SUCCESS
比如我在linux客户端往这个主题发消息:
mosquitto_pub -t 'hello/topic_mcu_rev' -m 'hello MCU' -h localhost -p 9000
可以看到收到了消息:
7.7 发布消息
发布消息。指令 AT+MPUB=<topic>,<qos>,<retain>,<message>
用于发布MQTT消息,其中 <topic>
为主题名称(最大长度256),<qos>
为服务质量等级(0表示最多一次,1表示最少一次,2表示只有一次),<retain>
为保留标志(0表示服务器不存储消息,1表示存储消息和QoS),<message>
为消息内容(最大长度512),发布成功后返回 OK
,并根据 AT+MQTTMIX
的设置和 QoS 等级反馈结果:当 AT+MQTTMIX=0
时,通过 +MPUB:<result>
返回发布结果(SUCCESS
表示成功,FAILURE
表示失败);当 AT+MQTTMIX=1
且 QoS=1
时,通过 +MPUBACK: <packetid>
返回数据包标识符(范围1-65535);当 AT+MQTTMIX=1
且 QoS=2
时,通过 +MPUBREC: <packetid>
和 +MPUBCOMP: <packetid>
分别返回消息接收和完成确认;使用 AT+MPUB?
可以查询当前发布配置,返回格式为 <topic>,<qos>,<retain>,<message>
,分别表示主题、服务质量等级、保留标志和消息内容。
通过以下指令发布MQTT消息:
AT+MPUB="hello/topic",0,0,"hello world"
OK
在别的客户端订阅了这个主题的会收到消息:
root@racknerd-b12da5f:~/mqtt5# mosquitto_sub -v -t 'hello/topic' -h localhost -p 9000
hello/topic hello world # 这是收到的消息
7.8 取消订阅
取消订阅:AT+MUNSUB=“hello/topic”. 可以订阅多个主题,所以不需要的主题也可以取消。
AT+MUNSUB="hello/topic"
OK
+MUNSUB: SUCCESS
7.9 断开MQTT连接
通过以下指令断开MQTT连接:
AT+MDISCONNECT
7.10 释放MQTT资源
通过以下指令释放MQTT资源:
AT+MIPCLOSE
8. 其他操作
8.1 查询SIM信号质量
通过以下指令查询SIM信号质量:
AT+CSQ
+CSQ: 21,99
OK
8.2 Ping服务器
通过以下指令Ping服务器,测试网络连通性:
AT+MPING=test.ranye-iot.net,1
OK
+MPING:3,0,0,0,0,0,0
结语
通过本教程,您已经成功配置并连接了大夏龙雀科技4G Cat1 CT511-AT0模块到MQTT服务器,并进行了消息的订阅和发布。希望本教程对您的开发工作有所帮助。