ESP32使用原有代码此前可正常连WiFi 现在连接失败串口输出乱码如何解决
ESP32串口乱码+WiFi连接失败排查方案
一、串口乱码排查步骤
- 优先确认串口监视器波特率和代码中
Serial.begin(115200)的参数完全一致,串口监视器默认波特率多为9600,手动调整为115200后重新查看输出即可解决大部分乱码问题 - 检查USB转串口驱动:根据开发板的串口芯片型号(CH340/CP2102/FT232等)重装官方驱动,避免驱动兼容问题导致数据解析错误
- 更换USB数据线:劣质数据线会同时出现供电不足、数据传输丢包的问题,换带屏蔽层的纯铜数据线测试
- 确认烧录参数匹配:烧录时选择的Flash模式、Flash频率、开发板型号要和实际硬件一致,参数选错会导致启动阶段输出乱码
二、WiFi连接失败排查步骤
解决乱码问题后可根据串口打印的具体提示定位问题,通用排查步骤如下:
- 核对WiFi配置:确认SSID和密码完全正确,区分大小写,不要包含多余空格;ESP32对中文SSID兼容性极差,建议将WiFi名称修改为英文+数字组合
- 检查路由器配置:ESP32仅支持2.4G频段WiFi,不支持5G频段,这是高频错误点;确认路由器未开启MAC地址过滤、AP隔离;确认WiFi连接设备数未达到路由器上限
- 优化连接逻辑:在
WiFi.begin前添加清空旧WiFi缓存的代码,同时延长超时时间、打印连接状态码方便定位,修改后参考代码如下:
#include <Arduino.h> #include <WiFi.h> const char* ssid = "XYZXYZ"; const char* password = "asdfghjkl"; void setup() { Serial.begin(115200); // 清除旧的WiFi配置缓存,避免残留配置影响连接 WiFi.disconnect(true); delay(100); WiFi.begin(ssid, password); uint32_t notConnectedCounter = 0; while (WiFi.status() != WL_CONNECTED) { delay(100); // 打印连接状态码,可根据状态码快速定位错误原因 Serial.printf("WiFi连接中... 当前状态码: %d\n", WiFi.status()); notConnectedCounter++; // 延长超时时间到15s,避免信号较弱时频繁重启 if(notConnectedCounter > 150) { Serial.println("WiFi连接超时,设备即将重启"); ESP.restart(); } } Serial.print("WiFi连接成功,IP地址: "); Serial.println(WiFi.localIP()); } void loop() { // 业务代码 }
- 排查供电问题:USB口供电不足会导致WiFi模块工作异常,更换5V/2A的独立电源供电测试
- 硬件故障排查:更换同型号ESP32开发板烧录相同代码测试,排除WiFi模块硬件损坏的可能
内容的提问来源于stack exchange,提问作者Joyanta J. Mondal
相关产品推荐
相关产品推荐

