【ARDUINO】通过ESP8266连接WIFI,启动TCP,接受TCP客户端指令【待测试】
记录
2025年9月8日11:20:37
昨晚测试:
【成功步骤】
代码可以跑到正确连接WIFI,也能获得IP,但是启动TCP服务失败了。
【当前问题】
- 启动TCP服务必现失败
- 为什么后期连AT都测试不了?
【怀疑待测
- 怀疑当前ESP有问题,又买一个新的来做对比
2025年9月9日08:45:34
昨晚测试:
【我的发现】
- 接入3.3V的ESP8266 RST引脚,插入拔下会触发重启,但是重启有几率成功和失败,失败时会一直打印乱码。
- 如果要启动TCP服务,需要设置AT+CIPMUX=1
【成功步骤】
- 插入拔下接入3.3V的ESP8266 RST引脚,触发重启,同时重启ARDUINO
- 等一段时间后,重启TCP服务有几率成功
【当前问题】
- 在ESP8266断电再上电情况下,看资料说临时设置会消失,但是为什么我断电上电后,还会打印WIFI CONNECTED?
- ESP8266重启所需要花费的时间是多久?
- 为什么启动TCP服务是有几率成功?这个和什么有关系?
- ESP8266重启后为什么有时候一直打印乱码?
【怀疑测试】
怀疑是RST使用不当,尝试使用代码重启,arudino在串口发送命令控制ESP8266的重启。
接线图
ESP-01 Arduino/Uno
EN ─────────── D4(GPIO输出)
RST ─────────── D5(GPIO输出)
GND ─────────── GND(共地)
TX ─────────── D3(软件串口RX)
RX ─────────── D2(软件串口TX)
代码
#include <SoftwareSerial.h>
SoftwareSerial espSerial(2, 3); // D2=RX, D3=TX(连接ESP-01的TX/RX)#define ESP_EN 4 // EN引脚接D4
#define ESP_RST 5 // RST引脚接D5void setup() {Serial.begin(115200);espSerial.begin(115200);// 初始化EN和RST引脚为输出,默认高电平(模块正常工作)pinMode(ESP_EN, OUTPUT);pinMode(ESP_RST, OUTPUT);digitalWrite(ESP_EN, HIGH);digitalWrite(ESP_RST, HIGH);Serial.println("模块初始化完成");
}void loop() {// 示例1:按下串口输入'R'触发复位if (Serial.available() && Serial.read() == 'R') {Serial.println("触发模块复位...");digitalWrite(ESP_RST, LOW); // RST拉低复位delay(100);digitalWrite(ESP_RST, HIGH);delay(1000); // 等待重启}// 示例2:按下串口输入'S'触发休眠(关闭模块)if (Serial.available() && Serial.read() == 'S') {Serial.println("模块进入休眠...");digitalWrite(ESP_EN, LOW); // EN拉低关闭模块}// 串口透传逻辑(省略,参考之前的软件串口代码)
}
代码
https://gitee.com/likexiang/like-code/blob/master/Arduino/ESP-TCP.ino