2025-03-01
单片机
00

目录

大夏龙雀科技4G Cat1 CT511-AT0 MQTT联网实战教程
1. 搭建MQTT Broker
2. 获取大夏龙雀科技4G Cat1 CT511-AT0模块
资料下载
3. 硬件连接
4. 模块串口配置
5. 模块工作模式
6. 使用XCOM连接模块
7. MQTT连接配置
7.1 设置APN
7.2 开启移动网络
7.3 设置客户端ID
7.4 配置MQTT服务器信息
7.5 连接MQTT服务器
7.6 订阅主题
7.7 发布消息
7.8 取消订阅
7.9 断开MQTT连接
7.10 释放MQTT资源
8. 其他操作
8.1 查询SIM信号质量
8.2 Ping服务器
结语

大夏龙雀科技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. 硬件连接

按照以下步骤连接模块:

  1. 将USB转串口模块的TX、RX、GND分别连接到DX-CT511/DX-CT511N模块的RX、TX、GND。
  2. 插入SIM卡。
  3. 连接4G天线,如果使用带N的模块,还需连接GPS天线。
  4. 连接电源,确保模块正常供电。

硬件连接示意图

4. 模块串口配置

模块串口默认配置如下:

  • 波特率:115200bps
  • 数据位:8位
  • 校验位:无
  • 停止位:1位(115200/8/N/1)

5. 模块工作模式

模块支持三种工作模式:

  1. AT指令模式(默认模式)
  2. 数据传输模式
  3. 休眠模式

说明:模块上电后默认进入AT指令模式。

6. 使用XCOM连接模块

打开电脑上的XCOM软件,并连接串口设备:

XCOM连接示意图

发送AT指令后,如果收到OK回复,说明模块工作正常:

AT指令回复

7. MQTT连接配置

接下来,参考以下图片进行MQTT连接配置:

MQTT连接配置

7.1 设置APN

当设备需要接入中国移动的NB-IoT网络时,需要通过以下指令设置APN。如果APN配置错误,设备将无法成功连接到网络。

bash
AT+QICSGP=1,1,"cmnbiot","","" OK

7.2 开启移动网络

bash
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:

bash
AT+MCONFIG="4G_TEST",,,1,2,1,"hello/topic","mcu is lost" OK

image.png

设备没心跳后,broker会发布遗嘱消息:

root@racknerd-b12da5f:~/mqtt5# mosquitto_sub -v -t 'hello/topic' -h localhost -p 9000 hello/topic mcu is lost

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地址、端口号和协议版本:

bash
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服务器:

bash
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) 的参数,用于定义消息传递的可靠性和保证机制。它有三个等级,分别如下:

  1. QoS 0:最多一次(At most once)
    • 消息发送后不保证接收方是否收到,也不进行确认和重传。
    • 适用于对可靠性要求不高的场景,例如传感器数据丢失对系统影响较小的情况。

就像你随便把信扔进邮筒,邮局会尽力送,但不会告诉你信有没有送到。如果信丢了,你也不知道。

  1. QoS 1:最少一次(At least once)
    • 消息发送后,接收方会确认收到消息。如果发送方未收到确认,会重发消息。
    • 确保消息至少被接收一次,但可能导致重复接收。
    • 适用于需要保证消息到达但对重复数据不敏感的场景。

这次邮局会确认信送到了。如果没收到确认,邮局会再送一次。但可能会发生“信送到了,但邮局以为没送到,又送了一次”的情况,导致你的朋友收到两封信。

  1. QoS 2:只有一次(Exactly once)
    • 通过复杂的确认机制,确保消息只被接收一次,避免重复或丢失。
    • 适用于对数据完整性和准确性要求极高的场景,例如金融交易或关键控制指令。

这次邮局会确保信只送一次,既不会丢,也不会重复。它会用一套复杂的流程来保证这一点。

<qos> 等级越高,消息传递的可靠性越强,但网络开销和延迟也会增加。选择适当的 QoS 等级需要根据具体应用场景的需求权衡。

通过以下指令订阅MQTT主题:

bash
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

可以看到收到了消息:

image.png

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=1QoS=1 时,通过 +MPUBACK: <packetid> 返回数据包标识符(范围1-65535);当 AT+MQTTMIX=1QoS=2 时,通过 +MPUBREC: <packetid>+MPUBCOMP: <packetid> 分别返回消息接收和完成确认;使用 AT+MPUB? 可以查询当前发布配置,返回格式为 <topic>,<qos>,<retain>,<message>,分别表示主题、服务质量等级、保留标志和消息内容。

通过以下指令发布MQTT消息:

bash
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 取消订阅

取消订阅

+MUNSUB="hello/topic". 可以订阅多个主题,所以不需要的主题也可以取消。

bash
AT+MUNSUB="hello/topic" OK +MUNSUB: SUCCESS

7.9 断开MQTT连接

通过以下指令断开MQTT连接:

bash
AT+MDISCONNECT

7.10 释放MQTT资源

通过以下指令释放MQTT资源:

bash
AT+MIPCLOSE

8. 其他操作

8.1 查询SIM信号质量

通过以下指令查询SIM信号质量:

bash
AT+CSQ +CSQ: 21,99 OK

8.2 Ping服务器

通过以下指令Ping服务器,测试网络连通性:

bash
AT+MPING=test.ranye-iot.net,1 OK +MPING:3,0,0,0,0,0,0

结语

通过本教程,您已经成功配置并连接了大夏龙雀科技4G Cat1 CT511-AT0模块到MQTT服务器,并进行了消息的订阅和发布。希望本教程对您的开发工作有所帮助。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!