WiFi模块 ESP8266-01S的使用

  • ESP8266-01S的基本信息
  • 简单的AT测试
  • 1.接线
  • 2.AT指令测试
  • 通信测试
  • TCP/UDP协议
  • ESP8266 AP模式下的通信
  • ESP8266配置为TCP服务器时与电脑通信
  • ESP8266配置为TCP客户端时与电脑通信
  • ESP8266 STA模式下的通信
  • ESP8266配置为TCP服务器时与电脑通信
  • ESP8266配置为TCP客户端时与电脑通信
  • 两个模块之间通信


ESP8266-01S的基本信息

ESP8266 模块支持 三种工作模式。

  • STA——Station 模式 (可连接到其他热点)
  • AP ——AP 模式(默认模式ESP8266 模块作为热点,实现手机或电脑直接与模块通信,实现局域网无线控制)
  • STA+AP ——两种模式的共存模式,(STA 模式)即可以通过路由器连接到互联网,并通过互联网控制设备;(AP 模式)也可作为 wifi 热点,其他 wifi设备连接到模块。这样实现局域网和广域网的无缝切换,方便操作

简单的AT测试

1.接线

与蓝牙模块相似,也是需要用USB转TTL模块(交叉连接)

RX -------------------TX

TX ------------------- RX

VCC ----------------- 3.3V

GND ----------------- GND

注意:尽量不要使用USB转TTL模块直接供电 VCC不能接5V。如果用到项目中的话,可以向下图那样接到单片机的串口中

esp8266热点 服务器 esp8266热点模式_TCP

模块上电时,蓝灯会闪一下,之后就处于熄灭的状态,上电出现乱码属于正常现象

2.AT指令测试

简单的AT指令

指令

响应

说明

AT

OK

测试指令

AT+RST

OK

重启模块

AT+GMR

AT version: AT 版本

SDK version: SDK 版本

发布公司

发布时间

OK

查看版本信息

ATE

OK

开关回显功能

AT+RESTORE

OK

恢复出厂设置

打开串口调试助手,把波特率设置为115200勾选发送新行发送AT就能收到AT OK了

esp8266热点 服务器 esp8266热点模式_esp8266热点 服务器_02


如果觉得回显功能太碍眼了,可以发送ATE0关闭回显,想打开是就发送ATE1打开回显。关闭后发送AT就只能收到OK了。

esp8266热点 服务器 esp8266热点模式_stm32_03

通信测试

用ESP8266与电脑或手机进行通信,ESP8266接到USB转TTL上即可

TCP/UDP协议

传输控制协议(TCP):TCP定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是提供的是面向连接、可靠的字节流服务。
用户数据报协议(UDP):UDP是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

使用TCP协议,进行通信时,通信双方所扮演的角色分别为TCP Server(服务器)/TCP Client(客户端)

ESP8266 AP模式下的通信

ESP8266配置为TCP服务器时与电脑通信

用到的AT指令

  • AT+CWMODE 选择 WIFI 应用模式在这里插入图片描述
  • esp8266热点 服务器 esp8266热点模式_stm32_04

  • AT+CWSAR 设置 AP 模式下的参数
    举例 AT+CWSAR="ESP8266","12345678",6,4 它们的参数分别为WiFi的名称,密码,通道号,加密方式
  • esp8266热点 服务器 esp8266热点模式_客户端_05

  • AT+CIFSR 获取本地 IP 地址
    +CIFSR:APIP,“192.168.4.1
    +CIFSR:APMAC,“4e:75:25:12:6e:e5”
  • AT+CIPMUX 启动多连接
  • esp8266热点 服务器 esp8266热点模式_esp8266热点 服务器_06

  • AT+CIPSERVER 开启服务器
  • esp8266热点 服务器 esp8266热点模式_stm32_07

  • 配置过程
  • AT+CWMODE=2 配置为AP模式
  • AT+CWSAP="ESP8266","12345678",6,4 配置AP信息,配置完后就可以在WiFi列表看到名为ESP8266的WiFi。如果配置报错可以使用AT+CWSAP_DEF进行配置
  • AT+CIFSR 查询IP地址,后面会用到
  • AT+CIPMUX=1 开启多连接
  • AT+CIPSERVER=1,8080 开启服务器配置端口号为8080,不设置默认为333
  • 用电脑连上“ESP8266”这个WiFi,打开网络调试助手将协议类型改为TCP Client,远程主机地址改为192.168.4.1(即刚开始查询到的IP地址),端口号为8080

连接成功后会出现0,CONNECT然后就可以发送信息了

esp8266热点 服务器 esp8266热点模式_esp8266热点 服务器_08


因为在“一对多”(TCP 服务器)的模式下,ESP8266是不能进入透传模式的,当模块想要发送信息的时候必须先使用AT+CIPSEND=0,7指令,(表示向0号客户端发送7个字节的数据,超出部分会被屏蔽掉。)然后出现">"输入数据。之前连接成功的时候出现0,CONNECT就表示0号客户端,如果有多个客户端连接,按顺序选择他们的ID号,进行数据发送即可,WiFi模块接收到的数据转换出来的格式为+IPD,0,7: 发送的数据,0代表客户端的ID,7代表数据的长度

esp8266热点 服务器 esp8266热点模式_esp8266热点 服务器_09


如果客户端长时间没有发送信息,服务器会把客户端踢掉,TCP连接自然就会断开了

ESP8266配置为TCP客户端时与电脑通信

过程中电脑要连接上模块的WiFi

  • AT+CWMODE=2 配置为AP模式
  • AT+CWSAP="ESP8266","12345678",6,4 配置AP信息
  • AT+CIPMUX=0 开启单连接,如果不能正常开启,重启一下AT+RST
  • 打开网络调试助手,协议选择TCP Server,本地主机地址,端口号可随意设置,只要下一步于此,保持一致,点击打开。
  • esp8266热点 服务器 esp8266热点模式_客户端_10

  • AT+CIPSTART="TCP","192.168.4.2",8080 建立 TCP 连接到“192.168.4.2”,8080
  • AT+CIPMODE=1 开启透传模式
  • AT+CIPSEND 开启发送数据,之后就可以进行数据的通信了
  • esp8266热点 服务器 esp8266热点模式_esp8266热点 服务器_11

  • 想要退出的时候把发送新行取消掉,发送+++
  • 发送新行打开AT+CIPMODE=0 关闭透传,之后就回到AT模式了,如果没有关闭透传,发送如何数据都会返回ERROR

ESP8266 STA模式下的通信

ESP8266配置为TCP服务器时与电脑通信

STA与AT模式的区别是连接WiFi,还是自己创建一个WiFi,而通信是建立在同一个WiFi下的,所以无论哪个模式都是差不多的。与上面AT模式下,配置为TCP 服务器的差别就是将AT+CWSAP="ESP8266","12345678",6,4更换为AT+CWJAP="mingcheng","123456789"这里我用的是手机的热点,电脑也要连到手机的热点

esp8266热点 服务器 esp8266热点模式_服务器_12


配置过程

  • AT+CWMODE=1 配置为STA模式
  • AT+CWJAP="mingcheng","123456789" 连接WiFi,连接需要1~2s的时间,连接成功会出现WIFI CONNECTED,WIFI GOT IP
  • AT+CIFSR 查询IP地址
  • AT+CIPMUX=1 开启多连接
  • AT+CIPSERVER=1,8080 开启服务器,端口号为8080
  • 打开网络调试助手将协议类型改为TCP Client,远程主机地址改为,查询到的IP地址
  • esp8266热点 服务器 esp8266热点模式_服务器_13

  • 模块(服务器)发送信息还像前面那样需要加AT+CIPSEND=0,7
  • esp8266热点 服务器 esp8266热点模式_服务器_14

ESP8266配置为TCP客户端时与电脑通信

配置过程

  • AT+CWMODE=1 配置为STA模式
  • AT+CWJAP="mingcheng","123456789" 连接WiFi
  • AT+CIPSTART="TCP","192.168.43.19",8080 建立 TCP 连接到“192.168.43.19”,8080。IP地址在WiFi属性里面看
  • AT+CIPMODE=1 进入透传
  • AT+CIPSEND 开始发送数据
  • +++(不带换行) 退出
  • AT+CIPMODE=0(带换行) 退出透传

如果想要上电直接进入透传,可以按一下配置

  • AT+CWMODE=1 配置为STA模式
  • AT+CWJAP="mingcheng","123456789" 连接WiFi
  • AT+CIPSTART="TCP","192.168.43.19",8080
  • AT+SAVETRANSLINK=1,"192.168.43.19",8080,"TCP"

想要在使用AT指令,先

  • +++(不带换行) 退出
  • AT+CIPMODE=0(带换行) 退出透传

才行

两个模块之间通信

TCP Server 为AP 模式 TCP Client 为STA模式

TCP Server 服务器

TCP Client 客户端

AT+CWMODE=2(AP模式)

AT+CWMODE=1(STA模式)

AT+CWSAP=“ESP8266”,“12345678”,6,4

AT+CWJAP=“ESP8266”,“12345678”

AT+CIPMUX=1 开启多连接

AT+CIPSTART=“TCP”,“192.168.4.1”,333

AT+CIPSERVER=1 开启服务器

AT+SAVETRANSLINK=1,“192.168.4.1”,333,“TCP”

AT+CIPSEND=0,6 发送信息必须加这条

目测是这样,没试过。

记录学习过程