<ESP8266>WIFI模块AT指令浅学

前言

人生如逆旅,我亦是行人。


名词解释

缩写 意思
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

  • 三、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");
    
    }
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » <ESP8266>WIFI模块AT指令浅学

    发表评论