一: ESP和电脑实现串口通信
- 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
响应 :
OK - 连接路路由器器
AT+CWJAP="SSID","password" // SSID and password of router
响应 :
OK - 查询 ESP8266 设备的 IP 地址
AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.3.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK - PC 与 ESP8266 设备连接同⼀一路路由器器,在 PC 端使⽤用⽹网络调试⼯工具,建⽴立⼀一个 TCP 服
务器器。
- 假设,PC 创建的服务器器 IP 地址为 192.168.3.116,端⼝口为 8000。
- ESP8266 设备作为 TCP client 连接到上述服务器器
AT+CIPSTART="TCP","192.168.3.116",8000
响应 :
OK - ESP8266 设备向服务器器发送数据
AT+CIPSEND=4 // set date length which will be sent, such as 4 bytes
>test // enter the data, no CR
响应 :
Recv 4 bytes
SEND OK - 当 ESP8266 设备接收到服务器器发来的数据,将提示如下信息:
+IPD,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
⚠ 注意:
•发送数据时,如果输⼊入的字节数超过了了设置⻓长度(n):
-系统将提示busy,并发送数据的前n个字节,发送完成后响应SEND OK。
*-*超出⻓长度的部分数据被认为是⽆无效数据,不不被接受。
小总结:
基础 AT 指令
指令 | 功能 | 示例 | 响应 |
---|---|---|---|
AT |
测试模块连通性 | AT |
OK |
AT+RST |
重启模块 | AT+RST |
OK + 重启日志 |
AT+GMR |
查询固件版本 | AT+GMR |
AT version:x.x.x SDK version:x.x.x |
AT+UART |
设置串口参数 | AT+UART=115200,8,1,0,0 (波特率,数据位,停止位,校验,流控) |
OK |
WiFi 配置指令
指令 | 功能 | 示例 | 响应 |
---|---|---|---|
AT+CWMODE |
设置 WiFi 模式 | AT+CWMODE=3 (1=STA, 2=AP, 3=STA+AP) |
OK |
AT+CWJAP |
连接路由器 | AT+CWJAP="SSID","password" |
WIFI CONNECTED WIFI GOT IP OK |
AT+CWLAP |
扫描附近 WiFi | AT+CWLAP |
+CWLAP:(ecn,ssid,rssi,mac) OK |
AT+CIFSR |
查询 IP 地址 | AT+CIFSR |
+CIFSR:STAIP,"192.168.1.100" +CIFSR:APIP,"192.168.4.1" |
TCP/IP 通信指令
指令 | 功能 | 示例 | 响应 |
---|---|---|---|
AT+CIPSTATUS |
查询连接状态 | AT+CIPSTATUS |
STATUS:<状态码> (2=已连接WiFi,3=TCP连接) |
AT+CIPSTART |
建立 TCP/UDP 连接 | AT+CIPSTART="TCP","192.168.1.116",8000 |
CONNECT OK |
AT+CIPSEND |
发送数据 | AT+CIPSEND=4 → 输入 test |
SEND OK |
AT+CIPCLOSE |
关闭连接 | AT+CIPCLOSE |
CLOSED |
+IPD |
接收数据 (自动触发) | - | +IPD,5:hello (收到5字节数据"hello") |
多连接配置 (服务器模式)
指令 | 功能 | 示例 | 响应 |
---|---|---|---|
AT+CIPMUX |
设置多连接 | AT+CIPMUX=1 (0=单连接,1=多连接) |
OK |
AT+CIPSERVER |
创建 TCP 服务器 | AT+CIPSERVER=1,8080 (1=开启,端口8080) |
OK |
AT+CIPSTO |
设置超时时间 | AT+CIPSTO=300 (300秒) |
OK |
今日问题
为啥我选本地ip选了上面两个192.168.85.1和192.168.237.1使用AT+CIPSTART="TCP","192.168.237.1",8000
ERROR
CLOSED但选第三个192.168.83.120就可以成功
问题根本原因
-
IP 地址类型差异:
IP 地址 类型 说明 192.168.83.120
局域网 IP ESP8266 和 PC 在同一子网内,直接可达 192.168.85.1
可能为虚拟网络 IP VMware/Hyper-V 等虚拟网卡地址 192.168.237.1
可能为Docker/WSL2 IP 容器化环境的虚拟网桥地址 -
网络隔离机制:
-
虚拟网络(如 WSL2/Docker)默认与物理网络隔离
-
ESP8266 只能访问同一物理交换机下的设备 (即
192.168.83.x
网段)
-
虚拟 IP 连通性对比表
IP 地址 | 类型 | 是否可达 | 解决方案 |
---|---|---|---|
192.168.83.120 |
物理网卡 | ✅ 是 | 直接使用 |
192.168.237.1 |
WSL2 虚拟网卡 | ❌ 否 | 配置端口转发 |
192.168.85.1 |
VMware 虚拟网卡 | ❌ 否 | 切换为桥接模式 |
127.0.0.1 |
本地环回 | ❌ 否 | 永远无法被 ESP8266 访问 |