AT指令

本文最后更新于:2022年2月25日 凌晨

参考链接

乐鑫ESP-AT

AT指令

AT指令可以通过串口下发相应的指令来控制模块。

模块与串口连接方式

1
2
3
4
5
串口    模块
3.3V -> 3.3V
RX -> TX
TX -> RX
GND -> GND

常用AT指令

进入AT指令模式 - AT

AT

1
OK #返回值为“**OK**”即表示可以进行AT指令操作。

查询/设置 Wi-Fi 模式 - AT+CWMODE

AT+CWMODE=<mode>[,<auto_connect>]

1
2
3
4
5
6
7
8
9
<mode>:模式
0: 无 Wi-Fi 模式,并且关闭 Wi-Fi RF
1: Station 模式
2: SoftAP 模式
3: SoftAP+Station 模式

<auto_connect>:切换 ESP 设备的 Wi-Fi 模式时(例如,从 SoftAP 或无 Wi-Fi 模式切换为 Station 模式或 SoftAP+Station 模式),是否启用自动连接 AP 的功能,默认值:1。参数缺省时,使用默认值,也就是能自动连接。
0: 禁用自动连接 AP 的功能
1: 启用自动连接 AP 的功能,若之前已经将自动连接 AP 的配置保存到 flash 中,则 ESP 设备将自动连接 AP

示例:AT+CWMODE=1

配置 SoftAP 参数 - AT+CWSAP

AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>[,<max conn>][,<ssid hidden>]

1
2
3
4
5
6
7
8
9
10
11
12
<ssid>:字符串参数,接入点名称
<pwd>:字符串参数,密码,范围:8 ~ 63 字节 ASCII
<channel>:信道号
<ecn>:加密方式,不支持 WEP
0: OPEN
2: WPA_PSK
3: WPA2_PSK
4: WPA_WPA2_PSK
[<max conn>]:允许连入 ESP SoftAP 的最多 station 数目,取值范围:[1,10]
[<ssid hidden>]
0: 广播 SSID(默认)
1: 不广播 SSID

示例:AT+CWSAP=”ESP”,”1234567890”,5,3

扫描当前可用的AP - AT+CWLAP

AT+CWLAP=[<ssid>,<mac>,<channel>,<scan_type>,<scan_time_min>,<scan_time_max>]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<ecn>:加密方式
0: OPEN
1: WEP
2: WPA_PSK
3: WPA2_PSK
4: WPA_WPA2_PSK
5: WPA2_ENTERPRISE
6: WPA3_PSK
7: WPA2_WPA3_PSK
[ESP32-C3 Only] 8: WAPI_PSK
<ssid>:字符串参数,AP SSID
<rssi>:信号强度
<mac>:字符串参数,AP MAC 地址
<channel>:信道号
<scan_type>:Wi-Fi 扫描类型,默认值为:0
0: 主动扫描
1: 被动扫描
<scan_time_min>:每个信道最短扫描时间,单位:毫秒,范围:[0,1500],如果扫描类型为被动扫描,本参数无效
<scan_time_max>:每个信道最长扫描时间,单位:毫秒,范围:[0,1500],如果设为 0,固件采用参数默认值,主动扫描为 120 ms,被动扫描为 360 ms
<freq_offset>:频偏(保留项目)
<freqcal_val>:频率校准值(保留项目)
<pairwise_cipher>:成对加密类型
0: None
1: WEP40
2: WEP104
3: TKIP
4: CCMP
5: TKIP and CCMP
6: AES-CMAC-128
7: 未知
<group_cipher>:组加密类型,与 <pairwise_cipher> 参数的枚举值相同
<bgn>:802.11 b/g/n,若 bit 设为 1,则表示使能对应模式,若设为 0,则表示禁用对应模式
bit 0: 是否使能 802.11b 模式
bit 1: 是否使能 802.11g 模式
bit 2: 是否使能 802.11n 模式
<wps>:wps flag
0: 不支持 WPS
1: 支持 WPS

示例:
AT+CWLAP=”Wi-Fi”,”ca:d7:19:d8:a6:44”,6,0,400,1000

AT+CWLAP=”Wi-Fi” #寻找指定 SSID 的 AP

连接AP - AT+CWJAP

AT+CWJAP:<ssid>,<bssid>,<channel>,<rssi>,<pci_en>,<reconn_interval>,<listen_interval>,<scan_mode>,<pmf>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<ssid>:目标 AP 的 SSID #如果 SSID 和密码中有 ,、"、\\ 等特殊字符,需转义
<pwd>:密码最长 63 字节 ASCII
<bssid>:目标 APMAC 地址,当多个 AP 有相同的 SSID 时,该参数不可省略
<channel>:信道号
<rssi>:信号强度
<pci_en>:PCI 认证
0: ESP station 可与任何一种加密方式的 AP 连接,包括 OPEN 和 WEP
1: ESP station 可与除 OPEN 和 WEP 之外的任何一种加密方式的 AP 连接
<reconn_interval>:Wi-Fi 重连间隔,单位:秒,默认值:1,最大值:7200
0: 断开连接后,ESP station 不重连 AP
[1,7200]: 断开连接后,ESP station 每隔指定的时间与 AP 重连
<listen_interval>:监听 AP beacon 的间隔,单位为 AP beacon 间隔,默认值:3,范围:[1,100]
<scan_mode>:扫描模式
0: 快速扫描,找到目标 AP 后终止扫描,ESP station 与第一个扫描到的 AP 连接
1: 全信道扫描,所有信道都扫描后才终止扫描,ESP station 与扫描到的信号最强的 AP 连接
<jap_timeout>:AT+CWJAP 命令超时的最大值,单位:秒,默认值:15,范围:[3,600]
<pmf>:PMF(Protected Management Frames,受保护的管理帧),默认值 0
0 表示禁用 PMF
bit 0: 具有 PMF 功能,提示支持 PMF,如果其他设备具有 PMF 功能,则 ESP 设备将优先选择以 PMF 模式连接
bit 1: 需要 PMF,提示需要 PMF,设备将不会关联不支持 PMF 功能的设备
<error code>:错误码,仅供参考
1: 连接超时
2: 密码错误
3: 无法找到目标 AP
4: 连接失败
其它值: 发生未知错误

示例:AT+CWJAP=”abc”,”0123456789”

断开与当前AP的连接 -AT+CWQAP

AT+CWQAP

查询本地 IP 地址和 MAC 地址 - AT+CIFSR

AT+CIFSR:APIP,<"APIP">
AT+CIFSR:APIP6LL,<"APIP6LL">
AT+CIFSR:APIP6GL,<"APIP6GL">
AT+CIFSR:APMAC,<"APMAC">
AT+CIFSR:STAIP,<"STAIP">
AT+CIFSR:STAIP6LL,<"STAIP6LL">
AT+CIFSR:STAIP6GL,<"STAIP6GL">
AT+CIFSR:STAMAC,<"STAMAC">
AT+CIFSR:ETHIP,<"ETHIP">
AT+CIFSR:ETHIP6LL,<"ETHIP6LL">
AT+CIFSR:ETHIP6GL,<"ETHIP6GL">
AT+CIFSR:ETHMAC,<"ETHMAC">

1
2
3
4
5
6
7
8
9
10
11
12
<”APIP”>: ESP SoftAP 的 IPv4 地址
<”APIP6LL”>: ESP SoftAP 的 IPv6 本地链路地址
<”APIP6GL”>: ESP SoftAP 的 IPv6 全局地址
<”APMAC”>: ESP SoftAP 的 MAC 地址
<”STAIP”>: ESP station 的 IPv4 地址
<”STAIP6LL”>: ESP station 的 IPv6 本地链路地址
<”STAIP6GL”>: ESP station 的 IPv6 全局地址
<”STAMAC”>: ESP station 的 MAC 地址
<”ETHIP”>: ESP ethernet 的 IPv4 地址
<”ETHIP6LL”>: ESP ethernet 的 IPv6 本地链路地址
<”ETHIP6GL”>: ESP ethernet 的 IPv6 全局地址
<”ETHMAC”>: ESP ethernet 的 MAC 地址

断开与 AP 的连接 - AT+CWQAP

AT+CWQAP

建立 TCP 连接、UDP 传输或 SSL 连接 - AT+CIPSTART

该功能适用于PC与模块之间进行TCP、UDP、SSL通讯。

1. 建立 TCP 连接

// 单连接 (AT+CIPMUX=0):

AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<keep alive>][,<"local IP">]

// 多连接 (AT+CIPMUX=1):

AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<keep alive>][,<"local IP">]

1
2
3
4
5
6
7
8
<link ID>:网络连接 ID (0 ~ 4),用于多连接的情况。该参数范围取决于 menuconfig 中的两个配置项。一个是 AT 组件中的配置项 AT_SOCKET_MAX_CONN_NUM ,默认值为 5。另一个是 LWIP 组件中的配置项 LWIP_MAX_SOCKETS ,默认值为 10。要修改该参数的范围,您需要修改配置项 AT_SOCKET_MAX_CONN_NUM 的值并确保该值不大于 LWIP_MAX_SOCKETS 的值。(请参考 编译 ESP-AT 工程 获取更多信息。)
<”type”>:字符串参数,表示网络连接类型,”TCP” 或 “TCPv6”。默认值:”TCP”
<”remote host”>:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名
<remote port>:远端端口值
<keep alive>:TCP keep-alive 间隔,默认值:0
0: 禁用 TCP keep-alive 功能
1 ~ 7200: 检测间隔,单位:秒
<”local IP”>:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值

示例:AT+CIPSTART=”TCP”,”192.168.101.110”,1000

2. 建立 UDP 传输

// 单连接:(AT+CIPMUX=0)

AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<local port>,<mode>,<"local IP">]

// 多连接:(AT+CIPMUX=1)

AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<local port>,<mode>,<"local IP">]

1
2
3
4
5
6
7
8
9
10
<link ID>:网络连接 ID (0 ~ 4),用于多连接的情况
<”type”>:字符串参数,表示网络连接类型,”UDP” 或 “UDPv6”。默认值:”TCP”
<”remote host”>:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名
<remote port>:远端端口值
<local port>:ESP 设备的 UDP 端口值
<mode>:在 UDP Wi-Fi 透传下,本参数的值必须设为 0
0: 接收到 UDP 数据后,不改变对端 UDP 地址信息(默认)
1: 仅第一次接收到与初始设置不同的对端 UDP 数据时,改变对端 UDP 地址信息为发送数据设备的 IP 地址和端口
2: 每次接收到 UDP 数据时,都改变对端 UDP 地址信息为发送数据的设备的 IP 地址和端口
<”local IP”>:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值

示例:AT+CIPSTART=”UDP”,”192.168.101.110”,1000,1002,2

3. 建立 SSL 连接

/ 单连接:(AT+CIPMUX=0)

AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<keep alive>,<"local IP">]

// 多连接:(AT+CIPMUX=1)

AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<keep alive>,<"local IP">]

1
2
3
4
5
6
<link ID>:网络连接 ID (0 ~ 4),用于多连接的情况
<”type”>:字符串参数,表示网络连接类型,”SSL” 或 “SSLv6”。默认值:”TCP”
<”remote host”>:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名
<remote port>:远端端口值
<keep alive>:SSL 保留配置,默认值:0
<”local IP”>:连接绑定的本机 IPv4 地址或 IPv6 地址,该参数在本地多网络接口时和本地多 IP 地址时非常有用。默认为禁用,如果您想使用,需自行设置,空值也为有效值

示例:AT+CIPSTART=”SSL”,”iot.espressif.cn”,8443

查询/设置传输模式 - AT+CIPMODE

AT+CIPMODE=<mode>

1
2
3
4
<mode>:
0: 普通传输模式
1: Wi-Fi 透传接收模式,仅支持 TCP 单连接、UDP 固定通信对端、SSL 单连接的情况
#配置更改不保存到 flash。

示例:AT+CIPMODE=1

开始透传 - AT+CIPSEND

AT+CIPSEND

  • 退出透传:+++ (不发送换行)

AT+SAVETRANSLINK=<mode>,<"remote host">,<remote port>[,<"type">,<keep alive>]

1
2
3
4
5
6
7
8
9
<mode>:
0: 关闭 ESP 上电进入 Wi-Fi 透传模式
1: 开启 ESP 上电进入 Wi-Fi 透传模式
<”remote host”>:字符串参数,表示远端 IPv4 地址、IPv6 地址,或域名
<remote port>:远端端口值
<”type”>:字符串参数,表示传输类型:”TCP”,”TCPv6”,”SSL”,或 “SSLv6”。默认值:”TCP”
<keep alive>:TCP keep-alive 间隔,默认值:0
0: 禁用 keep-alive 功能
1 ~ 7200: 检测间隔,单位:秒

TCP-IP AT示例

ESP 设备作为 TCP 客户端,建立单连接,实现 UART Wi-Fi 透传

该功能可用于2个WIFI模块之间进行通讯测试。

模块1设置步骤:

1
2
3
4
5
6
7
8
9
10
11
AT+CWMODE=2     #设置 Wi-Fi 模式为 softAP

AT+CIPMUX=1 #使能多连接

AT+CWSAP="ESP32_softAP","1234567890",5,3 #设置 softAP

AT+CIPAP? #查询 softAP 信息

AT+CIPSERVER=1 #建立 TCP 服务器,默认端口为 333

AT+CIPCLOSE=0 #关闭 TCP 连接

模块2设置步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AT+CWMODE=1     #设置 Wi-Fi 模式为 station

AT+CWJAP="ESP32_softAP","1234567890" #连接模块1的AP

AT+CIPSTA? #查询 ESP 设备 IP 地址

AT+CIPMUX=1 #使能多连接

AT+CIPSTART="TCP","192.168.x.xxx",333 #模块1的TCP服务器IP与端口

AT+CIPMODE=1 #进入透传模式

AT+CIPSEND #开始透传

+++ #退出透传