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。如果用到项目中的话,可以向下图那样接到单片机的串口中
模块上电时,蓝灯会闪一下,之后就处于熄灭的状态,上电出现乱码属于正常现象
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了
如果觉得回显功能太碍眼了,可以发送ATE0关闭回显,想打开是就发送ATE1打开回显。关闭后发送AT就只能收到OK了。
通信测试
用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 应用模式在这里插入图片描述AT+CWSAR
设置 AP 模式下的参数
举例AT+CWSAR="ESP8266","12345678",6,4
它们的参数分别为WiFi的名称,密码,通道号,加密方式AT+CIFSR
获取本地 IP 地址
+CIFSR:APIP,“192.168.4.1”
+CIFSR:APMAC,“4e:75:25:12:6e:e5”AT+CIPMUX
启动多连接AT+CIPSERVER
开启服务器- 配置过程
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
然后就可以发送信息了
因为在“一对多”(TCP 服务器)的模式下,ESP8266是不能进入透传模式的,当模块想要发送信息的时候必须先使用AT+CIPSEND=0,7
指令,(表示向0号客户端发送7个字节的数据,超出部分会被屏蔽掉。)然后出现">"输入数据。之前连接成功的时候出现0,CONNECT
就表示0号客户端,如果有多个客户端连接,按顺序选择他们的ID号,进行数据发送即可,WiFi模块接收到的数据转换出来的格式为+IPD,0,7: 发送的数据
,0代表客户端的ID,7代表数据的长度
如果客户端长时间没有发送信息,服务器会把客户端踢掉,TCP连接自然就会断开了
ESP8266配置为TCP客户端时与电脑通信
过程中电脑要连接上模块的WiFi
AT+CWMODE=2
配置为AP模式AT+CWSAP="ESP8266","12345678",6,4
配置AP信息AT+CIPMUX=0
开启单连接,如果不能正常开启,重启一下AT+RST
- 打开网络调试助手,协议选择TCP Server,本地主机地址,端口号可随意设置,只要下一步于此,保持一致,点击打开。
AT+CIPSTART="TCP","192.168.4.2",8080
建立 TCP 连接到“192.168.4.2”,8080AT+CIPMODE=1
开启透传模式AT+CIPSEND
开启发送数据,之后就可以进行数据的通信了- 想要退出的时候把发送新行取消掉,发送
+++
- 把发送新行打开
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"
这里我用的是手机的热点,电脑也要连到手机的热点
配置过程
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地址
- 模块(服务器)发送信息还像前面那样需要加
AT+CIPSEND=0,7
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 发送信息必须加这条 |
目测是这样,没试过。
记录学习过程