DX-WF24 Wi-Fi/蓝牙二合一模组单片机AT使用记录
驱动源文件dx_wf_24.c 和 驱动头文件dx_wf_24.h
前言介绍
大夏龙雀科技 DX-WF24 是 Wi-Fi/蓝牙二合一模组,拥有 802.11 b/g/n 协议和 BLE 5.2 蓝牙协议,模块内置标准串口协议。设备可以通过模块跟移动端、PC 端、主设备端、路由器等进行数据交互,并可以使用 AT 命令对模块参数进行配置和修改。从而使设备以极低的成本、极快的速度加入物联网,让设备更方便、智能。
基本参数
模块串口默认参数:115200bps/8/n/1(波特率/数据位/无校验/停止位)
串口使用
使用AT指令
命令格式说明
AT+Command=<param1,param2,param3><CR><LF>- 所有的指令以
AT开头,<CR><LF>结束,在本文档中表现命令和响应的表格中,省略了<CR><LF>,仅显示命令和响应。 - 所有 AT 命令字符都为大写。
<>内为可选内容,如果命令中有多个参数,以逗号“,”隔开,实际命令中不包含尖括号。<CR>为回车字符\r,十六进制为0X0D。<LF>为换行字符\n,十六进制为0X0A。- 指令执行成功,返回相应命令以
OK结束,失败返回ERROR=<>,“<>”内容为对应错误码。
回应格式说明
+Indication:<param1,param2,param3><CR><LF>- 回应指令以加号“
+”开头,<CR><LF>结束 - 等于“
:”后面为回应参数 - 如果回应参数中有多个参数,会以逗号“
,”隔开
WIFI配置AT命令
注意: 模块默认为 Station 模式
- 假设目标 AP 的 SSID 是 abc,密码是 0123456789,则命令是:
AT+CWJAP=abc,0123456789- 如果多个 AP 有相同的 SSID 是 abc,可通过查询目标 AP 的 BSSID,找到目标 AP:
AT+CWJAP=abc,0123456789,11:22:33:44:55:66
1. 测试模块
命令:
AT响应:
OK
2. 重启模块
命令:
AT+RST响应:
OK power on
3. 查询设备的Wi-Fi状态
查询命令:
AT+CWSTATE?响应:
+CWSTATE:<state>,<ssid> OK说明:
<state>:当前 Wi-Fi 状态0: Station 尚未进行任何 Wi-Fi 连接1: Station 已连接上 AP,但尚未获取 IPv4 地址2: Station 已连接上 AP,并已经获取 IPv4 地址3: Station 正在进行 Wi-Fi 连接或 Wi-Fi 重连4: Station 处于 Wi-Fi 断开状态
<ssid>:所连接 AP 的 SSID
4. 设置Station需连接的AP
设置命令:
AT+CWJAP=<ssid>,<pwd>[,<bssid>]响应:
OK +CWJAP:1,<ssid>,<ip>
MQTT配置AT命令
1. 查询MQTT连接属性
查询命令:
AT+MQTTCONNCFG?响应:
+MQTTCONNCFG:<keepalive>,<disable_clean_session>,<lwt_topic>,<lwt_msg>,<lwt_qos>,<lwt_retain> OK说明:
<keepalive>: MQTT ping超时时间,范围:[0,7200]秒,默认:120秒。<disable_clean_session>: MQTT清理会话标志。
2. 设置MQTT连接属性
设置命令:
AT+MQTTCONNCFG=<keepalive>,<disable_clean_session>,<lwt_topic>,<lwt_msg>,<lwt_qos>,<lwt_retain>响应:
OK说明:
<keepalive>: MQTT ping超时时间,范围:[0,7200]秒,默认:120秒。<disable_clean_session>: MQTT清理会话标志。1:使能清理会话(默认)0:禁用清理会话
<lwt_topic>: 遗嘱主题,最大长度:64字节。<lwt_msg>: 遗嘱消息,最大长度:64字节。<lwt_qos>: 遗嘱QoS。0:最多一次(默认)1:最少一次2:只有一次
<lwt_retain>: 遗嘱retain。0:关闭(默认)1:开启
- 备注: 该指令需在未连接MQTT服务器的状态下使用。
使用示例:
发送:AT+MQTTCONNCFG=120,1,TTT,456,0,0 返回: OK
3. 设置MQTT客户端ID
设置命令:
AT+MQTTLONGCLIENTID=<client_id>响应:
OK说明:
<client_id>:客户端ID,最长为100个字节。
举例:
发送:AT+MQTTLONGCLIENTID=123456 返回: OK
4. 设置MQTT登录用户名
设置命令:
AT+MQTTLONGUSERNAME=<username>响应:
OK说明:
<username>:用户名,最长为64个字节。
- 备注: MQTT服务器无用户名和密码验证时,跳过该步骤。
示例:
发送:AT+MQTTLONGUSERNAME=TEST123 返回: OK
5. 设置MQTT密码
设置命令:
AT+MQTTLONGPASSWORD=<password>响应:
OK说明:
<password>:密码,最长为64个字节。
- 备注: MQTT服务器无用户名和密码验证时,跳过该步骤。
示例:
发送:AT+MQTTLONGPASSWORD=123456 返回: OK
6. 连接MQTT服务器
设置命令:
AT+MQTTCONN=<host>,<port>,<reconnect>响应:
OK +MQTTCONNECTED:<host>,<port>,<reconnect>说明:
<host>:MQTT服务器IP,最大长度:128字节。<port>:MQTT服务器端口号,范围:[0,65535]。<reconnect>:自动重连。0: MQTT不自动重连(默认)1: MQTT自动重连
使用示例:
发送:AT+MQTTCONN=192.168.0.124,1883,0 返回: OK +MQTTCONNECTED:192.168.0.124,1883,0
7. 发布MQTT主题消息
设置命令:
AT+MQTTPUBRAW=<topic>,<length>,<qos>,<retain>响应:
OK >说明:
<topic>:MQTT topic,最大长度:128字节。<length>:MQTT消息长度,最大长度:1000。<qos>:发布消息的QoS。0:最多一次(默认)1:最少一次2:只有一次
<retain>:发布retain。0:关闭(默认)1:开启
- 备注:
retain=1时,服务器为该主题存储一条最新的保留消息,消息发布后才上线的客户端在订阅主题时仍可以接收到该消息。 示例:
发送:AT+MQTTPUBRAW=wf24,12,0,0 返回: OK > 发送数据后返回:+MQTTPUB:OK
8. 订阅MQTT主题
设置命令:
AT+MQTTSUB=<topic>,<qos>响应:
OK说明:
<topic>:订阅的topic,主题最大长度:120字节,订阅的最大数量:8个。<qos>:订阅的QoS。0:最多一次(默认)1:最少一次2:只有一次
举例:
发送:AT+MQTTSUB=phone1,0 返回: OK (若已订阅过该主题后输入该指令,则返回:ALREADY SUBSCRIBE)
9. 取消订阅MQTT Topic
设置命令:
AT+MQTTUNSUB=<topic>响应:
OK说明:
<topic>:订阅的topic,主题最大长度:120字节。
举例:
发送:AT+MQTTUNSUB=phone1 返回: OK (若未订阅过该topic,则返回:NO UNSUBSCRIBE OK)
10. 断开MQTT连接
设置命令:
AT+MQTTCLEAN响应:
OK +MQTTDISCONNECTED举例:
发送:AT+MQTTCLEAN 返回: OK +MQTTDISCONNECTED
官方连接程序CONNECT_TO_MQTT 函数执行流程分析
表格1:主要步骤执行表格
| 序号 | 执行操作 | AT指令/操作 | 预期响应 | 超时时间 | 说明 |
|---|---|---|---|---|---|
| 1 | 清理MQTT连接 | AT+MQTTCLEAN | OK | 1000ms | 断开现有MQTT连接 |
| 2 | 恢复出厂设置 | AT+RESTORE | OK | 5000ms | 重置模块所有配置 |
| 3 | 测试模块通讯 | AT | OK | 1000ms | 验证AT指令可用 |
| 4 | 设置Wi-Fi模式 | AT+CWMODE=0 | OK | 2000ms | 设为Station客户端模式 |
| 5 | 连接Wi-Fi网络 | AT+CWJAP=<ssid>,<password> | +CWJAP:1, | 5000ms | 连接传入的Wi-Fi |
| 6 | 设置MQTT客户端ID | AT+MQTTLONGCLIENTID=WF-TEST2 | OK | 1000ms | 固定ID"WF-TEST2" |
| 7 | 连接MQTT服务器 | AT+MQTTCONN=broker.emqx.io,1883,0 | MQTTCONNECTED: | 2000ms | 连接公共EMQX服务器 |
| 8 | 订阅主题 | AT+MQTTSUB=test-app,0 | OK | 2000ms | 订阅主题"test-app" |
| 9 | 准备发布消息 | AT+MQTTPUBRAW=test-w,32,0,0 | OK | 2000ms | 准备发布到"test-w" |
| 10 | 发送提示信息 | 发送"MQTT_Connected\r\n" | 无 | 无 | 调试/状态提示 |
| 11 | 清理缓冲区 | WIFI_BUFF_MEMSET() | 无 | 无 | 清空接收缓存 |
| 12 | 设置连接标志 | CONNECT_FLEG = 1 | 无 | 无 | 标记连接成功 |
表格2:配置参数表格
| 参数类型 | 参数名称 | 设定值 | 说明 |
|---|---|---|---|
| Wi-Fi配置 | 工作模式 | 0 (STA) | 仅作为客户端 |
| SSID | 函数参数id | 外部传入Wi-Fi名称 | |
| 密码 | 函数参数password | 外部传入Wi-Fi密码 | |
| MQTT服务器 | 地址 | broker.emqx.io | EMQX公共服务器 |
| 端口 | 1883 | 标准MQTT端口 | |
| 自动重连 | 0 | 禁用自动重连 | |
| MQTT客户端 | 客户端ID | WF-TEST2 | 固定标识符 |
| 订阅主题 | test-app | 接收消息的主题 | |
| 发布主题 | test-w | 发送消息的主题 | |
| QoS等级 | 0 | 最多一次 | |
| 消息长度 | 32字节 | 发布消息长度 |
评论
暂无评论