本文将详细介绍:如何更新 AT 应用程序固件;如何实现工作模式切换;如何开启模块 WiFi 功能的不同工作模式;以及如何建立 Socket 连接并通信等功能。
软件准备
- 对应 WiFi 模块的 AT 固件,如:EMW3xxx_0000.xxxx.xxxx_ota.bin。
- 固件下载软件:SecureCRT。
- AT指令串口调试软件:格西烽火。
- 基础版 AT 指令的格西烽火bsp工程文件at_v2.0_cmd.bsp.zip
- 通过 MQTT 协议连接 FOG 云 相关 AT 指令at_cmd_fog_mqtt.bsp.zip
- 通过 MQTT 协议连接AWS 亚马逊云at_cmd_aws_mqtt.bsp.zip
- 本文档的各demo示例指令集合版bsp工程,可下载at_all_demo.bsp.zip
- MCU与AT固件的WiFi模组交互的参考代码MCU-WIFI通讯例程.rar
工作模式切换
AT指令模式切换至透传模式
AT 指令模式时,用户串口输入指令:AT+CIPSENDRAW\r
,返回: OK
, 即可退出 AT 指令模式,进入数据透传模式。
透传模式切换至 AT 指令模式
透传模式时,用户串口输入指令:+++
,返回: OK
,即可退出透传模式,进入 AT 指令模式。
具体指令输入情况,如下图所示。
WiFi功能用例
启动AP模式
在 AT 指令模式下,通过 “用户串口” 输入以下指令,实现模块启动 Soft_AP 模式,步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 进入 AT 指令模式 | +++ |
OK |
2 | 设置模块 Soft_AP 名称并启动 | AT+WSAP=MXCHIP,12345678\\r |
OK |
3 | 查询 Soft_AP 是否成功建立 | AT+WSAPS\\r |
+WSAPS:AP_UP\\r\\nOK |
4 | 查询 模块 IP 地址 | AT+WSAPIP?\\r |
WSAPIP:10.10.10.1,255.255.255.0,10.10.10.1 |
AP 模式设置串口工具log输出如下图所示:
启动STATION模式
在 AT 指令模式下,通过 “用户串口” 输入以下指令,实现模块启动 STATION 模式,步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置模块接入的 AP 名称和密码 | AT+WJAP=SWYANG,yangbatian2015\\r |
OK |
2 | 查询是否成功连接该 AP | AT+WJAPS\\r |
+WJAPS:CONNECTED\\r\\nOK |
3 | 查看模块的 IP 地址 | AT+WJAPIP?\\r |
+WJAPIP:192.168.31.67,255.255.255.0,192.168.31.1 |
Station模式设置串口log输出如下图所示:
AT透传固件OTA更新
进入 AT 指令模式,设备需首先连接至 AP, 保证可联网通信,然后通过发送 OTA 查询和更新的 AT 指令进行在线固件更新。具体步骤及指令如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 进入 AT 指令模式 | +++ |
OK |
2 | 重启模块 | AT+REBOOT\\r |
OK |
3 | 设置模块STATION模式,及接入的AP信息 | AT+WJAP=Xiaomi.Router,stm32f215\\r |
OK , +WEVENT:STATION_UP |
4 | 查询云端可更新的 AT 固件版本 | AT+OTACHECK\\r |
+OTACHECK:fog_v3_AT_v2.0.3 , OK |
5 | 开始更新指定版本号的 AT 固件 | AT+OTASTART=fog_v3_AT_v2.0.3 |
OK ,继而出现通知信息: +OTAEVENT:START , +OTAEVENT:SUCCESS ,然后重启,出现: +WEVENT:STATION_UP 。 |
具体步骤参考下图内容:
Socket通信用例
TCP服务器端
AP模式下,模块做TCP服务器
模块在 Soft_AP 模式下,做为 TCP 服务器,与 PC 端的 TCP 客户端之间建立一个 TCP 连接并通信。 步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启Soft_AP模式 | AT+WSAP=jenny,12345678\\r |
OK |
2 | 查询模块 IP 地址 | AT+WSAPIP?\\r |
+WSAPIP=10.10.10.1,255.255.255.0,10.10.10.1 |
3 | PC 连接到模块启动的 AP | PC端 Wlan 列表找到AP:jenny ,并连接 |
成功连接 |
4 | 设置模块做 TCP Server | AT+CIPSTART=0,tcp_server,8080\\r |
OK |
5 | PC 起 TCP 客户端并连接 | 目标IP:10.10.10.1,目标端口:8080,不指定本地端口 | 连接成功.+CIPEVENT=CLIENT,CONNECTED,10.10.10.2,54849 |
6 | AT指令模式下,模块通过串口向TCP客户端发数据 | AT+CIPSEND=0,54849,5\\r12345 |
TCP客户端接收区收到:12345 |
7 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则需输入指令: AT+CIPRECV=0,54849\\r 进行数据接收 |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令进行数据接收. |
模块串口接收到:1234567890 |
||
8 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端TCP客户端接收到:abcdefghijklmn |
||
9 | 透传模式下,TCP 客户端发送数据至模块串口 | TCP客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
PC端利用TCP/UDP测试软件创建TCP客户端,如下图:
TCP/UDP测试软件工作区如下:
串口调试软件的数据接收工作区信息如下:
STATION模式下,模块做TCP服务器
模块在 STATION 模式下,做 TCP 服务器,建立一个 TCP 连接,并通信。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启STATION模式 | AT+WJAP=William Xu,mx099555\\r |
OK |
2 | 查询模块的IP地址 | AT+WJAPIP?\\r |
+WSAPIP=10.0.1.45,255.255.255.0,10.10.10.1 |
3 | 模块设置TCP SERVER参数 | AT+CIPSTART=0,tcp_server,8080\\r |
OK |
4 | PC端 起tcp 客户端 | PC WLAN 连接到 Willam Xu,TCP/UDP调试工具起一个TCP client,目标IP: 10.0.1.45, 端口号:8080,并连接 | 连接成功.+CIPEVENT=CLIENT,CONNECTED,10.0.1.41,53594 |
5 | AT指令模式下,模块通过串口向TCP客户端发数据 | AT+CIPSEND=0,53594,5\\r12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=0,53594\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端TCP客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
PC端利用TCP/UDP测试软件创建TCP客户端,如下图:
TCP/UDP测试软件工作区:
右侧为串口调试软件的数据接收工作区。
TCP客户端
当需要模块做 TCP 客户端,并创建 TCP 链接,进行 TCP 通信时,可参考如下步骤:
AP模式下,模块做TCP客户端
AP 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启Soft_AP模式 | AT+WSAP=jenny,12345678\\r |
OK |
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至jenny ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块做 tcp client 的参数 | AT+CIPSTART=1,tcp_client,10.10.10.2,20001\\r |
OK |
4 | PC起 TCP 服务器并自动连接 | 设置本机port端口号:20001 | 与模块的 tcp client 自动连接成功.+CIPEVENT:1,SERVER,CONNECTED |
5 | AT指令模式下,模块通过串口向TCP客户端发数据 | AT+CIPSEND=1,5\\r12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端TCP客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
PC端利用TCP/UDP测试软件创建一个TCP服务器,与模块TCP客户端进行通信,具体情况请参考下图。
TCP/UDP测试软件工作区如下图:
串口调试软件的数据收发工作区如下图:
STATION模式下的TCP客户端
在 STATION 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。具体步骤如下:
注意:请确保当前id的连接为断开状态,再进行设置,否则,会报错。
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启STATION模式,等待连接成功 | AT+WJAP=Willam Xu,mx099555\\r |
OK +WEVNET:STATION UP |
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至Willam Xu ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接Willam Xu,PC的IP 地址:10.0.1.45 |
3 | 设置模块做 tcp client 的参数 | AT+CIPSTART=1,tcp_client,10.0.1.48,20001\\r |
OK |
4 | PC起 TCP 服务器并自动连接 | 设置本机port端口号:20001 | 与模块的 tcp client 自动连接成功。+CIPEVENT:1,SEVER,CONNECTED |
5 | AT指令模式下,模块通过串口向TCP服务端发数据 | AT+CIPSEND=1,5\\r12345 |
TCP服务端接收区收到:12345 |
6 | AT指令模式下,TCP服务端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端TCP客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
利用TCP/UDP测试软件创建一个TCP服务器,与模块的TCP客户端进行通信,具体情况如下图。
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
UDP广播
当需要模块做 UDP 广播(服务器端),并发 UDP 广播信息时,可参考以下步骤。
AP模式下的UDP广播
在 AP 模式下,模块建立一个UDP广播服务(服务器端),发 UDP 广播信息。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启Soft_AP模式 | AT+WSAP=jenny,12345678\\r |
OK |
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至jenny ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块 UDP 广播服务的参数 | AT+CIPSTART=2,udp_broadcast,10.10.10.255,20001,4001\\r |
OK 返回通知 +CIPEVENT:2,UDP,CONNECTED |
4 | PC起 UDP 客户端并连接 | 设置目标 Port 端口号:4001,本机端口号:20001 | 与模块的自动连接成功. |
5 | AT指令模式下,模块通过串口向 UDP 服务器端发数据 | AT+CIPSEND=2,5\\12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. 发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 UDP 服务器发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端 UDP 客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
在PC端利用TCP/UDP测试软件创建一个UDP广播连接,与模块进行UDP通信,具体情况请参考。
PC端 UDP 连接创建如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区。
STATION模式下的UDP广播
在 STATION 模式下, 建立一个UDP服务端,模块发 UDP 广播信息。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启STATION模式,等待连接成功 | AT+WJAP=MX,88888880\\r |
OK +WEVNET:STATION UP |
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至MX ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接Willam Xu,PC的IP 地址:192.168.100.118 |
3 | 设置模块做 UDP 服务器端 的参数 | AT+CIPSTART=2,udp_broadcast,192.168.100.255,20001,4001\\r |
OK |
4 | PC起 UDP 客户端并连接 | 设置目标 port 端口号:4001,本机端口号:20001 | 与模块的udp广播连接成功。+CIPEVENT:2,UDP,CONNECTED |
5 | AT指令模式下,模块通过串口向 UDP 客户端发数据 | AT+CIPSEND=2,5\\r12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 UDP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端 UDP 客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
在PC端利用TCP/UDP测试软件创建一个UDP广播连接,与模块进行UDP通信,具体情况请参考。
PC端创建 UDP 客户端 如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
UDP单播
当需要模块做 UDP 单播(服务端),并发 UDP 单播信息时,可参考以下步骤。
AP模式下的UDP单播
在WiFi AT指令模式下,AP 模式下建立一个UDP客户端,模块发 UDP 单播信息。具体步骤如下(以链接 1 为例,链接 2 方法相同):
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启Soft_AP模式 | AT+WSAP=jenny,12345678\\r |
OK |
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至jenny ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块 UDP 广播服务的参数 | AT+CIPSTART=3,udp_unicast,10.10.10.1,20003,4003\\r |
OK |
4 | PC起 UDP 客户端并连接 | 设置目标 Port 端口号:4003,本机端口号:20003 | 与模块的自动连接成功.+CIPEVENT:2,UDP,CONNECTED |
5 | AT指令模式下,模块通过串口向 UDP 服务器端发数据 | AT+CIPSEND=2,5\\r12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. 发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 UDP 服务器发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端 UDP 客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
PC端创建 UDP 单播连接如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
STATION模式下的UDP单播
在WiFi AT指令模式下,STATION 模式下建立一个UDP客户端,模块发 UDP 单播信息。具体步骤如下(以链接 1 为例,链接 2 方法相同):
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 设置并开启STATION模式,等待连接成功 | AT+WJAP=MX,88888880\\r |
OK +WEVNET:STATION UP |
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至MX ; PC端打开cmd.exe,输入指令: ipconfig 。 |
成功连接Willam Xu,PC的IP 地址:192.168.100.105 |
3 | 设置模块做 UDP 服务器端 的参数 | AT+CIPSTART=3,udp_unicast,192.168.100.105,20003,4003\\r |
OK |
4 | PC起 UDP 客户端并连接 | 设置目标 port 端口号:4003,本机端口号:20003 | 与模块的udp client 自动连接成功。+CIPEVENT:3,UDP,CONNECTED |
5 | AT指令模式下,模块通过串口向 UDP 客户端发数据 | AT+CIPSEND=3,5\\r12345 |
TCP客户端接收区收到:12345 |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. TCP工具发送区发送:1234567890 |
发送成功 |
2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG 设置为0,则输入指令: AT+CIPRECV=1\\r |
+CIPRECV:10,1234567890\\r\\nOK |
||
3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG 设置为1,则不需输入指令. |
模块串口接收到:1234567890 |
||
7 | 透传模式下,模块通过串口向 UDP 客户端发数据 | 1. 模块串口输入指令:AT+CIPSENDRAW\\r ; |
OK |
2. 串口输入:abcdefghijklmn |
PC端 UDP 客户端接收到:abcdefghijklmn |
||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据:1234567890 |
模块串口接收到:1234567890 |
PC端创建 UDP 单播连接如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
Easylink配网
当需要使用 Easylink配网 为模块配网时,可向模块发送AT指令,启动配网。具体示例如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 不管模块处于何种工作模式 | AT+SMARTSTART=1\\r |
+WEVENT:STATION_DOWN ,STATION 断开 |
2 | 手机打开 Easylink 配网APP,输入 ssid和key,开始配网 | —— | +WEVENT:STATION_UP ,配网成功 |
Airkiss配网
当需要使用微信公众号的 Airkiss 为模块配网时,可向模块发送AT指令,启动配网。具体如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 仅当发送了该配置指令, Airkiss 配网后,才可发现设备 | AT+SMARTCFG=gh_420af5d2de71_9b6ee2f805e286e2,gh_420af5d2de71\\r (说明:第一个参数是您的微信公众号的原始ID:original_id,第二个参数是在该公众号下创建了产品后生成的设备ID:device_id) |
OK |
2 | 启动 Airkiss 配网状态 | AT+SMARTSTART=2\\r |
+WEVENT:STATION_DOWN ,STATION 断开 |
3 | 手机打开您的微信公众号 或 扫描下方配网二维码,进入Airkiss配网页面,输入 ssid和key,开始配网 | —— | +WEVENT:STATION_UP ,配网成功,且APP端列表发现设备:米客鹿 |
Airkiss 配网 测试二维码:
获取SNTP时间
当需要模块获取 网络同步时间时,可向模块发送 AT 指令,获取 SNTP 时间。
提示:若要获取网络时间,前提是 模块必须连接上某路由器,要么启用 STATION 模式,要么 Easylink 配网成功,要么 Airkiss 配网成功,即处于 STATION_UP 状态。
具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 模块连接路由器 | 启动STATION工作模式或配网 | +WEVENT=STATION_UP |
2 | 配置SNTP时区和服务器域名 | AT+SNTPCFG=+8,cn.ntp.org.cn,pool.ntp.org\\r |
OK |
3 | 获取 SNTP 时间 | AT+SNTPTIME\\r |
+SNTPTIME:2017-09-05T14:33:05.022320 \r\n OK |
获取RTC时间
当需要模块获取模块的 RTC 时间时,可向模块发送 AT 指令,获取 RTC 时间。
具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 当未做 SNTP 时间同步时,获取的 RTC 时间是:从 1970年1月1日0时0分0秒开始计时的系统运行时间 | AT+RTCGET\\r |
+RTCGET:1970-01-01T00:01:00.028856 \r\n OK |
2 | 当做过 SNTP 时间同步后,获取的 RTC时间是:当前指定时区的标准时间。 | AT+RTCGET\\r |
如: +RTCGET:2017-09-05T14:33:05.022320 \r\n OK |
3 | 当系统掉电时,RTC 时间不保存,会恢复至初始时间:1970年1月1日0时0分0秒,直到再次上电时才从该初试时间重新开始计时 | AT+RTCGET\\r |
+RTCGET:1970-01-01T00:01:00.090555 \r\n OK |
MQTT协议通信用例
1.和庆科Fog云实现mqtt通信
以下讲解如何通过AT指令,实现设备与 Fog 云服务器之间的 MQTT 通信,包括:MQTT 连接建立,订阅主题,与发布数据。
说明: Fog云服务器不需要验证证书,需要 SSL 加密。
序号 | 步骤 | 发送指令(或操作) |
---|---|---|
1 | 连接路由器 | AT+WJAP=ssid,password\\r |
返回 | OK 和 +WEVNET:STATION UP |
|
2 | 使能事件推送功能 | AT+MQTTEVENT=ON\\r |
返回 | OK |
|
3 | 设置MQTT用户名和密码 | AT+MQTTAUTH=6618fdda2a4f11e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164, ibV/zzpOyHKDUVH4EEXK7RoZtJHp6GTj6fazxst2+k4=\\r |
返回 | OK |
|
4 | 设置主机和端口号 | AT+MQTTSOCK=6618fdda2a4f11e7a554fa163e876164.mqtt.iot.gz.baidubce.com,1884\\r |
返回 | OK |
|
5 | 关闭MQTT证书验证 | AT+MQTTCAVERIFY=OFF,OFF\\r |
返回 | OK |
|
7 | 使能SSL加密 | AT+MQTTSSL=ON\\r |
返回 | OK |
|
8 | 设置客户端标识符 | AT+MQTTCID=77a0853e3a1a11e7a554fa163e876164\\r\\r |
返回 | OK |
|
9 | 设置MQTT心跳周期 | AT+MQTTKEEPALIVE=30\\r |
返回 | OK |
|
10 | 使能MQTT自动重连功能 | AT+MQTTRECONN=ON\\r |
返回 | OK |
|
11 | 使能MQTT上电自动连接功能 | AT+MQTTAUTOSTART=ON\\r |
返回 | OK |
|
12 | 启动MQTT服务 | AT+MQTTSTART\\r |
返回 | OK 和 +MQTTEVENT:CONNECT,SUCCESS |
|
13 | 订阅主题 | AT+MQTTSUB=0,6618fdda2a4f11e7a554fa163e876164/df358c1a348611e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164/status/json,0\\r |
返回 | +MQTTEVENT:0,SUBSCRIBE,SUCCESS |
|
14 | 发布设置 | AAT+MQTTPUB=6618fdda2a4f11e7a554fa163e876164/df358c1a348611e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164/status/json,0\\r |
返回 | OK |
|
15 | 发布数据 | AT+MQTTSEND=6\\r ,返回 > 后,输入数据: 123456 |
返回 | +MQTTEVENT:PUBLISH,SUCCESS , 同时接收到订阅的相同主题返回的数据: +MQTTRECV:0,6,123456 |
|
16 | 取消订阅主题 | AT+MQTTUNSUB=0\\r |
返回 | OK 和 +MQTTEVENT:0,UNSUBSCRIBE,SUCCESS |
|
17 | 关闭MQTT服务 | AT+MQTTCLOSE\\r |
返回 | OK 和 +MQTTEVENT:CLOSE,SUCCESS |
和亚马逊aws云实现mqtt通信
以下讲解如何通过 MQTT 通信 AT指令,实现设备与 AWS 云服务器之间的 MQTT 通信。该服务器要求进行证书验证,因此与 Fog 通信相比,多了 3 个证书验证指令。 具体过程如下,包括:MQTT 连接建立,订阅主题,发布数据。
说明: 1.由于亚马逊提供的是付费服务,这里仅提供完整的使用流程,并不提供真实的用户名、密码及证书。 2.需用户根据具体的产品或项目,在亚马逊上注册服务,获取相关的用户名、密码和证书等。点此进入亚马逊aws官网。 3.用户在实际传递证书时,必须在证书的末尾追加Ctrl+Z (ASCII码是0x1A,不属于证书的一部分),作为证书传递结束的标志,此时模块会将证书存入flash。
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 连接路由器 | AT+WJAP=ssid,password\\r |
OK 和 +WEVNET:STATION UP |
2 | 使能事件推送功能 | AT+MQTTEVENT=ON\\r |
OK |
3 | 设置MQTT用户名和密码 | AT+MQTTAUTH=UserName,PassWord\\r |
OK |
4 | 设置主机和端口号 | AT+MQTTSOCK=a1lqshc4oegz64.iot.us-west-2.amazonaws.com,8883\\r |
OK |
5 | 使能MQTT证书验证 | AT+MQTTCAVERIFY=ON,ON\\r |
OK |
6 | 传递服务器根证书 | AT+SSLCERTSET=0\\r |
OK |
7 | 发送服务器根证书文件内容 | 服务器根证书文件内容 |
OK |
8 | 传递客户端证书 | AT+SSLCERTSET=1\\r |
OK |
9 | 发送客户端证书文件内容 | 客户端证书文件内容 |
OK |
10 | 传递客户端私钥 | AT+SSLCERTSET=2\\r |
OK |
11 | 发送客户端私钥文件内容 | 客户端私钥文件内容 |
OK |
12 | 使能SSL加密 | AT+MQTTSSL=ON\\r |
OK |
13 | 设置客户端标识符 | AT+MQTTCID=MiCO\\r |
OK |
14 | 设置MQTT心跳周期 | AT+MQTTKEEPALIVE=10\\r |
OK |
15 | 关闭MQTT自动重连功能 | AT+MQTTRECONN=OFF\\r |
OK |
16 | 使能MQTT上电自动连接功能 | AT+MQTTAUTOSTART=ON\\r |
OK |
17 | 启动MQTT服务 | AT+MQTTSTART\\r |
OK 和 +MQTTEVENT:CONNECT,SUCCESS |
18 | 订阅主题0 | AT+MQTTSUB=0,$aws/things/myLight/shadow/delete/accepted,1\\r |
OK 和 +MQTTEVENT:0,SUBSCRIBE,SUCCESS |
19 | 订阅主题1 | AT+MQTTSUB=1,$aws/things/myLight/shadow/update/delta,0\\r |
OK 和 +MQTTEVENT:1,SUBSCRIBE,SUCCESS |
20 | 订阅主题2 | AT+MQTTSUB=2,$aws/things/myLight/shadow/update,0\\r |
OK 和 +MQTTEVENT:2,SUBSCRIBE,SUCCESS |
21 | 发布设置 | AT+MQTTPUB=$aws/things/myLight/shadow/update,0\\r |
OK |
22 | 发布数据 | AT+MQTTSEND=6\\r ,返回 > 后,输入数据: 123456 |
+MQTTEVENT:PUBLISH,SUCCESS , 同时接收到订阅的相同主题返回的数据: +MQTTRECV:2,6,123456 |
23 | 取消订阅主题1 | AT+MQTTUNSUB=1\\r |
OK 和 +MQTTEVENT:1,UNSUBSCRIBE,SUCCESS |
24 | 关闭MQTT服务 | AT+MQTTCLOSE\\r |
OK 和 +MQTTEVENT:CLOSE,SUCCESS |
EMW3239 BT蓝牙通信实例
当在 EMW3239 模块上实现蓝牙连接与透传功能时,具体指令配置如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
---|---|---|---|
1 | 查询 3239 蓝牙设备名称 | AT+BTNAME=?\\r |
+BTNAME:MXCHIP_BT123456 \\r\\n OK |
2 | 查询 3239 蓝牙配对秘钥 | AT+BTPASSKEY=?\\r |
+BTPASSKEY:123456 \\r\\n OK |
3 | 开启蓝牙可发现可连接模式 | AT+BTDISCOVERY=ON\\r |
OK |
4 | 开始监听蓝牙事件 | AT+BTEVENT=ON\\r |
OK |
5 | 查询当前蓝牙状态 | AT+BTSTATE?\\r |
+BTSTATE:DISCOVERABLE \\r\\n OK —-处于蓝牙待连接状态 |
5 | 打开手机蓝牙功能,并与蓝牙设备配对 | 手机蓝牙设备列表中找到 MXCHIP_123456 ,点击,输入配对秘钥,开始配对 |
成功配对 |
6 | 连接蓝牙设备 | 打开手机蓝牙串口 APP, 并连接3239蓝牙设备 | +BTEVENT:CONNECTION,ON —处于已连接成功状态 |
7 | AT指令模式下,3239 蓝牙设备与手机APP端通信 | 设备通过指令发送数据给手机APP端,发送指令: AT+BTSEND=10\\r |
> |
返回 > 后, 紧接着1分钟内,发送指定长度的数据内容,如:1234567890 |
OK |
||
手机蓝牙串口 APP 端,发送数据给 3239 蓝牙设备 ,如:12345 |
OK |
||
8 | BT 透传模式下,3239 蓝牙设备与手机APP端通信 | 设备由AT指令模式切换至BT透传模式,发送指令: AT+BTSENDRAW\\r |
OK |
设备直接发送数据给手机APP:1234567890 |
APP接收到数据:1234567890 |
||
手机APP直接发送数据给设备:12345 |
APP接收到数据:12345 |