前面讲到了:
一个月玩转MQTT(篇二:部署阿里云服务器和EMQX)-CSDN博客
现在开始我们使用移远的EC200U模块来进行测试。主要实现如下功能:
1、通过EC200U建立与EMQX服务器的MQTT连接。
2、然后就是订阅"test/win11"主题消息(因为前文一直在用这个主题做测试)
3、然后就是发布"test/win11"主题消息
后边我们会看到当我用EC200U发消息时,订阅了"test/win11"的MQTTX客户端,以及webSocket客户端,都能收到来自EC200U发出的主题消息,由于EC200U自己也订阅了这个消息,因此EC200U自己也能收到自己发出的消息。
下面开始吧!
1、开发板(硬件的准备)

首先,用到了上图这个开发板。必须吐槽的是,这个开发板的资料,写得稀里糊涂的。文档写得乱七八糟,毫无重点,逻辑混乱;教程视频更是又臭又长,讲得云里雾里,完全抓不住关键。后来干脆不看他的文档了。
好在这个板子的硬件还是有利用价值的。该电路板通过CH340芯片实现了COM串口。通过上图白色的USB线连接电脑,就可以用串口调试助手实现与EC200U模块的连接。这样就可以用AT指令操作EC200U了。
这个板子直接略过,简单的说,就是现在我要用串口调试助手,通过AT指令来操控EC200U的MQTT连接。
2、AT指令完整流程
2.1 基础网络配置
| 序号 | AT 指令 | 返回内容 | 说明 |
|---|---|---|---|
| 1 | AT |
OK |
测试模块响应,确认串口通信正常 |
| 2 | AT+CGATT=1 |
+CGATT: 1 OK |
附着移动网络(注册到核心网) |
| 3 | AT+CGDCONT=1,"IP","cmnet" |
OK |
设置 APN(移动 / 联通 = cmnet,电信 = ctnet) |
| 4 | AT+CGACT=1,1 |
OK |
激活数据连接 |
| 5 | AT+QPING=1,"101.201.110.56" |
+QPING: 0,"101.201.110.56",64,165,255 +QPING: 0,"101.201.110.56",64,58,255 +QPING: 0,"101.201.110.56",64,61,255 +QPING: 0,"101.201.110.56",64,55,255 +QPING: 0,4,4,0,55,165,70 |
测试模块到 EMQX 服务器的连通性 |
2.2 MQTT连接配置
| 序号 | AT 指令 | 返回内容 | 说明 |
|---|---|---|---|
| 6 | AT+QMTCFG="version",0,4 |
OK |
设置 MQTT 版本为 5.0 |
| 7 | AT+QMTCFG="session",0,1 |
OK |
Clean Session=1(MQTT 5.0 兼容该参数,默认开启) |
| 8 | AT+QMTCFG="keepalive",0,60 |
OK |
心跳时间 60 秒(MQTT 5.0 支持,和 EMQX 保持一致) |
| 9 | AT+QMTOPEN=0,"101.201.110.56",1883 |
+QMTOPEN: 0,0 |
打开 MQTT 5.0 连接(端口仍用 1883,EMQX 5.0 兼容 1883)返回 0,0= 成功 |
| 10 | AT+QMTCONN=0,"EC200U_MQTT5_Client","admin","public" |
+QMTCONN: 0,0,0 |
登录 EMQX(MQTT 5.0 认证逻辑和 3.1.1 一致,账号密码仍用 admin/public)返回 0,0,0= 登录成功 |
以下是串口调试助手的设置截图:

2.3 MQTT 主题消息的订阅 + 发布
| 序号 | AT 指令 | 返回内容 | 说明 |
|---|---|---|---|
| 11 | AT+QMTSUB=0,1,"test/win11",0 |
+QMTSUB: 0,1,0,0 |
订阅 MQTT 主题(QoS 0,返回 0,1,0,0= 成功) |
| 12 | AT+QMTPUB=0,0,0,0,"test/win11","hello, i love you!" |
+QMTPUB: 0,0,0 |
发布基础消息(返回 0,0,0= 成功) |
| 13 | (接收消息) | +QMTRECV: 0,0,"test/win11","hello, i love you!" |
由于订阅了该消息,所以也会接收到该消息 |
串口调试助手截图:

我们再看看MQTTX客户端,也收到消息了哦。

再看看webSocket客户端,也收到消息了哦。这是因为这两个客户端都订阅了"test/win11"主题消息。

至此,大家应该明白如何使用串口通过给EC200模块发送AT指令,来将消息发送到服务器,也可收到来自服务器的消息了吧。
这样,您进一步的就可以使用STM32的uart口来编程实现消息的订阅与发布了。这里算是已经打通了硬件层面与服务器的连接问题。关于stm32如何实现自己的应用,我这里就不再展开来讲了。
下一篇,我会进一步讲解,如何在手机端实现消息的订阅和发布。这样我们就可以有效的将stm32的数据(比如将温度数据,倾角数据)传递给手机进行显示。当然也可以将手机的命令传递给stm32实现类似开关控制等功能。
其他:
| 序号 | AT 指令 | 预期返回 | 说明 |
|---|---|---|---|
| 1 | AT+QMTDISC=0 |
+QMTDISC: 0,0 |
断开 MQTT 连接 |
| 2 | AT+QMTCLSE=0 |
OK |
关闭 MQTT 套接字 |