You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:15:03