# AT 指令用例
本文将详细介绍:如何更新 AT 应用程序固件;如何实现工作模式切换;如何开启模块 WiFi 功能的不同工作模式;以及如何建立 Socket 连接并通信等功能。
#软件准备
对应模组的AT固件,如:EMW3xxx_0000.xxxx.xxxx_ota.bin。
固件下载软件:SecureCRT (opens new window)。
AT指令串口调试软件:格西烽火 (opens new window)。
AT指令格西烽火bsp工程文件:📎at_v2.0_cmd.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 指令模式 |
|
|
2 | 设置模块 Soft_AP 名称并启动 |
|
|
3 | 查询 Soft_AP 是否成功建立 |
|
|
4 | 查询 模块 IP 地址 |
|
|
AP 模式设置串口工具log输出如下图所示:
#启动STATION模式
在 AT 指令模式下,通过 “用户串口” 输入以下指令,实现模块启动 STATION 模式,步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置模块接入的 AP 名称和密码 |
|
|
2 | 查询是否成功连接该 AP |
|
|
3 | 查看模块的 IP 地址 |
|
|
Station模式设置串口log输出如下图所示:
#AT透传固件OTA更新
进入 AT 指令模式,设备需首先连接至 AP, 保证可联网通信,然后通过发送 OTA 查询和更新的 AT 指令进行在线固件更新。具体步骤及指令如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 进入 AT 指令模式 |
|
|
2 | 重启模块 |
|
|
3 | 设置模块STATION模式,及接入的AP信息 |
|
, |
4 | 查询云端可更新的 AT 固件版本 |
|
, |
5 | 开始更新指定版本号的 AT 固件 |
|
,继而出现通知信息: , ,然后重启,出现: |
具体步骤参考下图内容:
#Socket通信用例
#TCP服务器端
#AP模式下,模块做TCP服务器
模块在 Soft_AP 模式下,做为 TCP 服务器,与 PC 端的 TCP 客户端之间建立一个 TCP 连接并通信。 步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启Soft_AP模式 |
|
|
2 | 查询模块 IP 地址 |
|
|
3 | PC 连接到模块启动的 AP | PC端 Wlan 列表找到AP: ,并连接 | 成功连接 |
4 | 设置模块做 TCP Server |
|
|
5 | PC 起 TCP 客户端并连接 | 目标IP:10.10.10.1,目标端口:8080,不指定本地端口 | 连接成功. |
6 | AT指令模式下,模块通过串口向TCP客户端发数据 |
| TCP客户端接收区收到: |
7 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则需输入指令: 进行数据接收 |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令进行数据接收. | 模块串口接收到: | ||
8 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端TCP客户端接收到: | ||
9 | 透传模式下,TCP 客户端发送数据至模块串口 | TCP客户端发送区输入数据: | 模块串口接收到: |
PC端利用TCP/UDP测试软件创建TCP客户端,如下图:
TCP/UDP测试软件工作区如下:
串口调试软件的数据接收工作区信息如下:
#STATION模式下,模块做TCP服务器
模块在 STATION 模式下,做 TCP 服务器,建立一个 TCP 连接,并通信。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启STATION模式 |
|
|
2 | 查询模块的IP地址 |
|
|
3 | 模块设置TCP SERVER参数 |
|
|
4 | PC端 起tcp 客户端 | PC WLAN 连接到 Willam Xu,TCP/UDP调试工具起一个TCP client,目标IP: 10.0.1.45, 端口号:8080,并连接 | 连接成功. |
5 | AT指令模式下,模块通过串口向TCP客户端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端TCP客户端接收到: | ||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据: | 模块串口接收到: |
PC端利用TCP/UDP测试软件创建TCP客户端,如下图:
TCP/UDP测试软件工作区:
右侧为串口调试软件的数据接收工作区。
#TCP客户端
当需要模块做 TCP 客户端,并创建 TCP 链接,进行 TCP 通信时,可参考如下步骤:
#AP模式下,模块做TCP客户端
AP 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启Soft_AP模式 |
|
|
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块做 tcp client 的参数 |
|
|
4 | PC起 TCP 服务器并自动连接 | 设置本机port端口号:20001 | 与模块的 tcp client 自动连接成功. |
5 | AT指令模式下,模块通过串口向TCP客户端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,TCP客户端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端TCP客户端接收到: | ||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据: | 模块串口接收到: |
PC端利用TCP/UDP测试软件创建一个TCP服务器,与模块TCP客户端进行通信,具体情况请参考下图。
TCP/UDP测试软件工作区如下图:
串口调试软件的数据收发工作区如下图:
#STATION模式下的TCP客户端
在 STATION 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。具体步骤如下:
注意:请确保当前id的连接为断开状态,再进行设置,否则,会报错。
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启STATION模式,等待连接成功 |
|
|
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接Willam Xu,PC的IP 地址:10.0.1.45 |
3 | 设置模块做 tcp client 的参数 |
|
|
4 | PC起 TCP 服务器并自动连接 | 设置本机port端口号:20001 | 与模块的 tcp client 自动连接成功。 |
5 | AT指令模式下,模块通过串口向TCP服务端发数据 |
| TCP服务端接收区收到: |
6 | AT指令模式下,TCP服务端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 TCP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端TCP客户端接收到: | ||
8 | 透传模式下,TCP客户端发送数据至模块串口 | TCP客户端发送区输入数据: | 模块串口接收到: |
利用TCP/UDP测试软件创建一个TCP服务器,与模块的TCP客户端进行通信,具体情况如下图。
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
#UDP广播
当需要模块做 UDP 广播(服务器端),并发 UDP 广播信息时,可参考以下步骤。
#AP模式下的UDP广播
在 AP 模式下,模块建立一个UDP广播服务(服务器端),发 UDP 广播信息。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启Soft_AP模式 |
|
|
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块 UDP 广播服务的参数 |
|
返回通知 |
4 | PC起 UDP 客户端并连接 | 设置目标 Port 端口号:4001,本机端口号:20001 | 与模块的自动连接成功. |
5 | AT指令模式下,模块通过串口向 UDP 服务器端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. 发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 UDP 服务器发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端 UDP 客户端接收到: | ||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据: | 模块串口接收到: |
在PC端利用TCP/UDP测试软件创建一个UDP广播连接,与模块进行UDP通信,具体情况请参考。
PC端 UDP 连接创建如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区。
#STATION模式下的UDP广播
在 STATION 模式下, 建立一个UDP服务端,模块发 UDP 广播信息。具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启STATION模式,等待连接成功 |
|
|
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接Willam Xu,PC的IP 地址: |
3 | 设置模块做 UDP 服务器端 的参数 |
|
|
4 | PC起 UDP 客户端并连接 | 设置目标 port 端口号:4001,本机端口号:20001 | 与模块的udp广播连接成功。 |
5 | AT指令模式下,模块通过串口向 UDP 客户端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 UDP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端 UDP 客户端接收到: | ||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据: | 模块串口接收到: |
在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模式 |
|
|
2 | PC连接到 AP,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接jenny,PC的IP 地址:10.10.10.2 |
3 | 设置模块 UDP 广播服务的参数 |
|
|
4 | PC起 UDP 客户端并连接 | 设置目标 Port 端口号:20003,本机端口号:4003 | 与模块的自动连接成功. |
5 | AT指令模式下,模块通过串口向 UDP 服务器端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. 发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 UDP 服务器发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端 UDP 客户端接收到: | ||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据: | 模块串口接收到: |
PC端创建 UDP 单播连接如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
#STATION模式下的UDP单播
在WiFi AT指令模式下,STATION 模式下建立一个UDP客户端,模块发 UDP 单播信息。具体步骤如下(以链接 1 为例,链接 2 方法相同):
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 设置并开启STATION模式,等待连接成功 |
|
|
2 | PC连接到 Willam Xu,并获取IP地址 | PC端 Wlan 连接至 ; PC端打开cmd.exe,输入指令: 。 | 成功连接Willam Xu,PC的IP 地址:192.168.100.105 |
3 | 设置模块做 UDP 服务器端 的参数 |
|
|
4 | PC起 UDP 客户端并连接 | 设置目标 port 端口号:4003,本机端口号:20003 | 与模块的udp client 自动连接成功。 |
5 | AT指令模式下,模块通过串口向 UDP 客户端发数据 |
| TCP客户端接收区收到: |
6 | AT指令模式下,UDP 客户端向模块串口发数据 | 1. TCP工具发送区发送: | 发送成功 |
2. 若模块端为非自动接收至串口,即: 设置为0,则输入指令: |
| ||
3. 若模块端为自动接收至串口,即: 设置为1,则不需输入指令. | 模块串口接收到: | ||
7 | 透传模式下,模块通过串口向 UDP 客户端发数据 | 1. 模块串口输入指令: ; |
|
2. 串口输入: | PC端 UDP 客户端接收到: | ||
8 | 透传模式下,UDP 客户端发送数据至模块串口 | UDP 客户端发送区输入数据: | 模块串口接收到: |
PC端创建 UDP 单播连接如下:
PC端TCP/UDP测试软件数据收发工作区:
串口调试软件数据收发工作区:
#Easylink配网
当需要使用 Easylink配网 为模块配网时,可向模块发送AT指令,启动配网。具体示例如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 不管模块处于何种工作模式 |
|
,STATION 断开 |
2 | 手机打开 Easylink 配网APP,输入 ssid和key,开始配网 | ---- |
,配网成功 |
#Airkiss配网
当需要使用微信公众号的 Airkiss 为模块配网时,可向模块发送AT指令,启动配网。具体如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 仅当发送了该配置指令, Airkiss 配网后,才可发现设备 |
(说明:第一个参数是您的微信公众号的原始ID:original_id,第二个参数是在该公众号下创建了产品后生成的设备ID:device_id) |
|
2 | 启动 Airkiss 配网状态 |
|
,STATION 断开 |
3 | 手机打开您的微信公众号 或 扫描下方配网二维码,进入Airkiss配网页面,输入 ssid和key,开始配网 | ---- |
,配网成功,且APP端列表发现设备:米客鹿 |
Airkiss 配网 测试二维码:
#获取SNTP时间
当需要模块获取 网络同步时间时,可向模块发送 AT 指令,获取 SNTP 时间。
提示:若要获取网络时间,前提是 模块必须连接上某路由器,要么启用 STATION 模式,要么 Easylink 配网成功,要么 Airkiss 配网成功,即处于 STATION_UP 状态。
具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 模块连接路由器 | 启动STATION工作模式或配网 |
|
2 | 配置SNTP时区和服务器域名 |
|
|
3 | 获取 SNTP 时间 |
|
\r\n |
#获取RTC时间
当需要模块获取模块的 RTC 时间时,可向模块发送 AT 指令,获取 RTC 时间。
具体步骤如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 当未做 SNTP 时间同步时,获取的 RTC 时间是:从 1970年1月1日0时0分0秒开始计时的系统运行时间 |
|
\r\n |
2 | 当做过 SNTP 时间同步后,获取的 RTC时间是:当前指定时区的标准时间。 |
| 如: \r\n |
3 | 当系统掉电时,RTC 时间不保存,会恢复至初始时间:1970年1月1日0时0分0秒,直到再次上电时才从该初试时间重新开始计时 |
|
\r\n |
#MQTT协议通信用例
#1.和庆科Fog云实现mqtt通信
以下讲解如何通过AT指令,实现设备与 Fog 云服务器之间的 MQTT 通信,包括:MQTT 连接建立,订阅主题,与发布数据。
说明: Fog云服务器不需要验证证书,需要 SSL 加密。
序号 | 步骤 | 发送指令(或操作) |
1 | 连接路由器 |
|
返回 |
和 | |
2 | 使能事件推送功能 |
|
返回 |
| |
3 | 设置MQTT用户名和密码 |
|
返回 |
| |
4 | 设置主机和端口号 |
|
返回 |
| |
5 | 关闭MQTT证书验证 |
|
返回 |
| |
7 | 使能SSL加密 |
|
返回 |
| |
8 | 设置客户端标识符 |
|
返回 |
| |
9 | 设置MQTT心跳周期 |
|
返回 |
| |
10 | 使能MQTT自动重连功能 |
|
返回 |
| |
11 | 使能MQTT上电自动连接功能 |
|
返回 |
| |
12 | 启动MQTT服务 |
|
返回 |
和 | |
13 | 订阅主题 |
|
返回 |
| |
14 | 发布设置 |
|
返回 |
| |
15 | 发布数据 |
,返回 后,输入数据: |
返回 |
, 同时接收到订阅的相同主题返回的数据: | |
16 | 取消订阅主题 |
|
返回 |
和 | |
17 | 关闭MQTT服务 |
|
返回 |
和 |
#和亚马逊aws云实现mqtt通信
以下讲解如何通过 MQTT 通信 AT指令,实现设备与 AWS 云服务器之间的 MQTT 通信。该服务器要求进行证书验证,因此与 Fog 通信相比,多了 3 个证书验证指令。 具体过程如下,包括:MQTT 连接建立,订阅主题,发布数据。
说明:
1.由于亚马逊提供的是付费服务,这里仅提供完整的使用流程,并不提供真实的用户名、密码及证书。
2.需用户根据具体的产品或项目,在亚马逊上注册服务,获取相关的用户名、密码和证书等。点此进入亚马逊aws官网 (opens new window)。
3.用户在实际传递证书时,必须在证书的末尾追加Ctrl+Z (ASCII码是0x1A,不属于证书的一部分),作为证书传递结束的标志,此时模块会将证书存入flash。
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 连接路由器 |
|
和 |
2 | 使能事件推送功能 |
|
|
3 | 设置MQTT用户名和密码 |
|
|
4 | 设置主机和端口号 |
|
|
5 | 使能MQTT证书验证 |
|
|
6 | 传递服务器根证书 |
|
|
7 | 发送服务器根证书文件内容 |
|
|
8 | 传递客户端证书 |
|
|
9 | 发送客户端证书文件内容 |
|
|
10 | 传递客户端私钥 |
|
|
11 | 发送客户端私钥文件内容 |
|
|
12 | 使能SSL加密 |
|
|
13 | 设置客户端标识符 |
|
|
14 | 设置MQTT心跳周期 |
|
|
15 | 关闭MQTT自动重连功能 |
|
|
16 | 使能MQTT上电自动连接功能 |
|
|
17 | 启动MQTT服务 |
|
和 |
18 | 订阅主题0 |
|
和 |
19 | 订阅主题1 |
|
和 |
20 | 订阅主题2 |
|
和 |
21 | 发布设置 |
|
|
22 | 发布数据 |
,返回 后,输入数据: |
, 同时接收到订阅的相同主题返回的数据: |
23 | 取消订阅主题1 |
|
和 |
24 | 关闭MQTT服务 |
|
和 |
#EMW3239 BT蓝牙通信实例
当在 EMW3239 模块上实现蓝牙连接与透传功能时,具体指令配置如下:
序号 | 步骤 | 发送指令(或操作) | 返回(或现象) |
1 | 查询 3239 蓝牙设备名称 |
|
|
2 | 查询 3239 蓝牙配对秘钥 |
|
|
3 | 开启蓝牙可发现可连接模式 |
|
|
4 | 开始监听蓝牙事件 |
|
|
5 | 查询当前蓝牙状态 |
|
---处于蓝牙待连接状态 |
5 | 打开手机蓝牙功能,并与蓝牙设备配对 | 手机蓝牙设备列表中找到 ,点击,输入配对秘钥,开始配对 | 成功配对 |
6 | 连接蓝牙设备 | 打开手机蓝牙串口 APP, 并连接3239蓝牙设备 |
--处于已连接成功状态 |
7 | AT指令模式下,3239 蓝牙设备与手机APP端通信 | 设备通过指令发送数据给手机APP端,发送指令: |
|
返回 > 后, 紧接着1分钟内,发送指定长度的数据内容,如: |
| ||
手机蓝牙串口 APP 端,发送数据给 3239 蓝牙设备 ,如: |
| ||
8 | BT 透传模式下,3239 蓝牙设备与手机APP端通信 | 设备由AT指令模式切换至BT透传模式,发送指令: |
|
设备直接发送数据给手机APP: | APP接收到数据: | ||
手机APP直接发送数据给设备: | APP接收到数据: |