<ESP8266>WIFI模块AT指令浅学
下面记录一下作为 WIFI 模块去使用所需要了解的 AT 指令。大致主要分为:主要需要掌握的有:基础命令很多,但大部分的使用都不是很多,大多使用的就一个命令,用于测试启动。Wi-Fi 的三种模式:命令:响应:2、设置命令:设置 ESP 设备的 Wi-Fi 模式命令:响应:示例:例1:Station 模式下 TCP serveESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远
·
前言
人生如逆旅,我亦是行人。
名词解释
缩写 | 意思 |
---|---|
AT(automatic transmission) | 自动变速器 |
WiFi | 无线网 |
AP(Access Point) | 无线访问接入点,无线路由器等类设备的统称 |
AP 模式 | 无线接入点模式 |
RST(TCP协议的 6 个标志之一) | 表示重置连接、复位连接 |
TCP | 传输控制协议 |
UDP | 用户数据报协议 |
SSL | 安全套接字协议 |
RF(Radio Frequency) | 射频,射频电流 |
Serve | 服务 |
DHCP | 动态主机配置协议 |
ESP8266本身就是一个MCU(微型控制单元,可以进行编程),具有两种功能: |
- 做为一个普通的 WIFI 模块,连接 STM32单片机,通过使用官方集成的 AT 指令进行开发;
- 作为一个集成了 WIFI 功能的 MCU(单片机),用平台提供的 SDK 进行深度的开发;
下面记录一下作为 WIFI 模块去使用所需要了解的 AT 指令。大致主要分为:
- 基础
AT
指令 WIFI
功能AT
指令Top/IP
工具箱AT
命令
一、基础 AT 命令
主要需要掌握的有:
命令 | 功能 |
---|---|
AT | 测试 AT 启动 ,返回 OK |
AT + RST | 重启模块,返回 OK |
AT + GMR | 查看版本信息,返回 OK,为8位版本号 |
基础 AT
命令很多,但大部分的使用都不是很多,大多使用的就一个 AT
命令,用于测试 AT
启动。
二、Wi-Fi AT 命令集
1)AT + CWMODE:查询/设置 Wi-Fi 模式
Wi-Fi 的三种模式:
模式 | 功能 | <mode> |
---|---|---|
Station 模式(客户模式) | ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制 | 1 |
SoftAP 模式 | ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制 | 2 |
SoftAP+Station 模式 | 两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作 | 3 |
无 WIFI 模式 | 关闭 Wi-Fi RF | 0 |
1、查询命令:查询 ESP 设备的 Wi-Fi 模式
命令:
AT+CWMODE?
响应:
+CWMODE:<mode>
OK
2、设置命令:设置 ESP 设备的 Wi-Fi 模式
命令:
AT+CWMODE=<mode>[,<auto_connect>]
响应:
OK
示例:
printf("2. CWMODE\r\n"); //查询/设置 Wi-Fi 模式:设置WiFi模式为Station模式
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
例1:Station 模式下 TCP serve
ESP8266模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制 |
AT+CWMODE=1 设置模组为STA模式(串口助手)
AT+CWJAP 查询附近 WiFi(串口助手)
AT+CWJAP="WIFI名称(最好使用英文)","WIFI密码" 连接WiFi(串口助手)
当外面需要再用引号将其括起来时,里面则需要在每个引号的前面加上 / 作为转义字符
AT+CIFSR 查看路由器分配给模组的IP地址,例如:192.168.43.103(串口助手)
AT+CIPMUX=1 打开多连接(串口助手)
AT+CIPSERVER=1,8080 设置模块服务器端口(串口助手)
打开网络调试助手进行设置:
请打开电脑连接路由器的WIFI热点,并且打开网络调试助手,在网络调试助手上输入连接模块的 IP和设置的端口。
路由器给模块分配的 IP 为 192.168.43.103,端口为自己设定的 8899(默认的为 333)(网络调试助手)
AT+CIPSEND=0,11 进入数据发送模式:11个字节
例2:SoftAP 模式下 TCP serve
ESP8266模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制 |
AT+CWMODE=2 开启 AP 模式(串口助手)
AT+CWJAP="ESP8266","密码",11,0 设置模块的 wifi 名和 wifi 密码(串口助手)
当外面需要再用引号将其括起来时,里面则需要在每个引号的前面加上 / 作为转义字符
AT+CIPSERVER=1,8080 设置模块服务器端口(串口助手)
打开电脑去连接模块建立的AP热点
打开网络调试助手,输入连接模块的 ip 和设置的端口。
AT+CIPSEND=0,11 进入数据发送模式:11个字节
例3:SoftAP+Station 模式下 TCP serve
两种模式的共存模式,即可以通过互联网控制可实现无缝切换,方便操作 |
2)AT+CWDHCP:启用/禁用 DHCP
查询命令
命令:
AT+CWDHCP?
响应:
<state>:状态
设置命令
功能: 启用/禁用 DHCP
命令:
AT+CWDHCP=<operate>,<mode>
printf("3. AT+CWDHCP\r\n"); //启用/禁用 DHCP
while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
响应:
OK
参数:
<operate>
:0表示禁用;1表示启用;<mode>
:Bit0 表示 Station 的 DHCP;Bit1 表示 SoftAP 的 DHCP;<state>
:DHCP 的状态- Bit0:
- 0:禁用 Station 的 DHCP
- 1:启用 Station 的 DHCP
- Bit1:
- 0:禁用 SoftAP 的 DHCP
- 1:启用 SoftAP 的 DHCP
- Bit2(ESP32 only)
- 0: 禁用 Ethernet 的 DHCP
- 1: 启用 Ethernet 的 DHCP
- Bit0:
三、TCP/IP AT 命令
1)AT+CIPSTATUS:查询 TCP/UDP/SSL 连接状态和信息
命令:
AT+CIPSTATUS
响应:
STATUS:<stat>
+CIPSTATUS:<link ID>,<"type">,<"remote IP">,<remote port>,<local port>,<tetype>
OK
参数:
2)AT+CIPSTART:建立 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">]
- 响应:
CONNECT
OK
-
参数:
-
连接OneNet 的 MQTT 的实际应用:
//连接上OneNet的 MQTT
#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"183.230.40.39\",6002\r\n"
- 示例:
AT+CIPSTART="TCP","iot.espressif.cn",8000
AT+CIPSTART="TCP","192.168.101.110",1000
AT+CIPSTART="TCP","192.168.101.110",1000,,"192.168.101.100"
AT+CIPSTART="TCPv6","test-ipv6.com",80
AT+CIPSTART="TCPv6","fe80::860d:8eff:fe9d:cd90",1000,,"fe80::411c:1fdb:22a6:4d24"
// esp-at 已通过 AT+CWJAP 获取到 IPv6 全局地址
AT+CIPSTART="TCPv6","2404:6800:4005:80b::2004",80,,"240e:3a1:2070:11c0:32ae:a4ff:fe80:65ac"
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">]
- 响应:
CONNECT
OK
- 参数:
- 示例:
// UDPv4 单播
AT+CIPSTART="UDP","192.168.101.110",1000,1002,2
AT+CIPSTART="UDP","192.168.101.110",1000,,,"192.168.101.100"
// 基于 IPv6 网络的 UDP 单播
AT+CIPSTART="UDPv6","fe80::32ae:a4ff:fe80:65ac",1000,,,"fe80::5512:f37f:bb03:5d9b"
// 基于 IPv6 网络的 UDP 多播
AT+CIPSTART="UDPv6","FF02::FC",1000,1002,0
3、建立 SSL 连接
- 命令:
AT+CIPSTART=[<link ID>,]<"type">,<"remote host">,<remote port>[,<keep alive>,<"local IP">]
- 响应:
OK
- 参数:
- 示例:
AT+CIPSTART="SSL","iot.espressif.cn",8443
AT+CIPSTART="SSL","192.168.101.110",1000,,"192.168.101.100"
// esp-at 已通过 AT+CWJAP 获取到 IPv6 全局地址
AT+CIPSTART="SSLv6","240e:3a1:2070:11c0:6972:6f96:9147:d66d",1000,,"240e:3a1:2070:11c0:55ce:4e19:9649:b75"
ESP8266 初始化示例:
void ESP8266_Init(void)
{
ESP8266_Clear();
printf("1. AT\r\n"); //AT:测试AT启动
while(ESP8266_SendCmd("AT\r\n", "OK"))
HAL_Delay(500);
printf("2. CWMODE\r\n"); //查询/设置 Wi-Fi 模式:设置WiFi模式为Station模式
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
HAL_Delay(500);
printf("3. AT+CWDHCP\r\n"); //启用/禁用 DHCP
while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
HAL_Delay(500);
printf("4. CWJAP\r\n"); //连接wifi
while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
HAL_Delay(500);
printf("5. CIPSTART\r\n"); //连接ONENET的TCP协议
while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
HAL_Delay(500);
printf("6. ESP8266 Init OK\r\n");
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献7条内容
所有评论(0)