ESP32-C3 的 WiFi 信号问题一度让我怀疑买到了假芯片。路由器就在两米外信号强度却只有 -70dBm 左右连接上之后还会隔几分钟自动掉线。后来折腾到后半夜真正解决问题的居然是一小段焊在模块地线上的铜丝。这个案例让我明白一件事很多 ESP32-C3 WiFi 信号问题根子不在芯片本身而在 PCB 天线周围的地平面、供电和模块的焊接状态上。如果你正在用 ESP32-C3 做开发被信号弱和断连折磨这份排查记录应该有用。我会按实际排查顺序拆解先怎么测再改什么哪些常规做法容易翻车最后是那几种看起来不太“正经”的修复方案以及它们背后的原理。最值得先记住的结论是遇到信号问题先别急着换天线或换模块先确认供电、地平面和射频校准数据这几个容易被忽略的环节。1. 先给信号问题分个类别把断流和距离短混在一起ESP32-C3 的 WiFi 问题最常见的有三类信号强度差、连接不稳定、速率上不去。这三类问题看着都像“WiFi 不行”但原因经常完全不同。信号强度差通常表现为同样位置下 RSSI 数值很低比如离路由器两米其他手机显示 -50dBm 左右ESP32-C3 却只有 -70dBm。这种情况优先怀疑天线、地平面、供电和射频校准。连接不稳定表现为能连上但每隔一段时间掉线、重连或者 ping 延迟忽高忽低。这种情况优先排查省电模式、信道干扰、模块虚焊和路由器兼容性。速率上不去比如 2.4G 的 11n 模式下跑不满或者 MCS 速率一直很低。这种情况不能只盯信号强度还要看路由器是否开了 40MHz 带宽、是否限制在 11b 兼容模式、周围有没有同频干扰。如果一开始就把所有问题都当成“距离不够”来处理很容易走弯路有人直接换外置天线结果问题根本没变有人把发射功率调到最大反而更不稳定。先分清楚症状才谈得上对症下药。1.1 三类典型症状排查方向完全不同1.2 写一个最小测量程序先把 RSSI 和连接状态拿到手我建议不要凭“感觉信号不好”就开始改硬件。先写一个最小测量程序固定位置、固定时间记录 RSSI 和连接状态所有改动前后都有数据对比。#include WiFi.h const char* ssid your_ssid; const char* password your_password; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.println(connected); } void loop() { Serial.printf(RSSI: %d dBm, status: %d\n, WiFi.RSSI(), WiFi.status()); delay(1000); }这个程序的作用只有两个看能不能连上看信号强度是多少。跑起来之后把开发板放在一个固定位置记录 5 分钟数据。后面每做一个改动都在同一个位置重新记录一份。注意一点RSSI 会上下波动不能只看某一秒的数值。要记录一段时间内的平均值和最小值再和改动后的数据对比。我一般会在电脑上把串口输出保存成文本最后简单算一下平均 RSSI。这样得到的结论才靠谱。2. 常规排查先从供电、天线净空和软件配置入手2.1 供电波动最容易造成“信号好但会重启”很多人排查 WiFi 信号时容易忽略供电。ESP32-C3 平时电流不大但 WiFi 发射瞬间电流会明显升高。如果供电链路用的是普通三端稳压管或者从主板杜邦线引出来的 3.3V发射瞬间电压可能会被拉低进而导致射频输出功率下降、模块复位甚至出现“一连接 WiFi 就重启”的现象。判断方式很简单在 3.3V 和 GND 之间接一个 100uF 电解电容再并联一个 0.1uF 陶瓷电容然后重新测 RSSI 和稳定性。如果改善明显说明问题在供电而不是天线。另一个常见问题是面包板和杜邦线。模块插在面包板上引脚接触电阻大地线回路也不稳定WiFi 性能会明显变差。遇到信号问题时先把模块用尽量短的导线焊接到主板上或者直接做成 PCB再测试。不要用长杜邦线悬空测试 WiFi那测出来的数据基本没有参考价值。2.2 天线净空区域比想象中更容易被破坏ESP32-C3 的常见模组是 PCB 天线天线就在模组边缘它需要周围有空旷区域。如果模块旁边有金属外壳、铜柱、走线、屏蔽罩、USB 座甚至是一把金属尺都会把天线谐振带偏RSSI 下降几个 dB 是很常见的事。测试时先把模块放到桌子边缘让天线一侧悬空远离金属和人体看 RSSI 是否上升。如果这样有明显改善说明不是芯片问题是天线周围的金属干扰。还要注意模块方向。PCB 天线有方向性同一个位置模组转动 90 度RSSI 可能相差 5 到 10 dB。所以做完整对比测试时模块方向也要固定。2.3 省电模式、发射功率和信道都会影响稳定性软件层面先看三个配置省电模式、发射功率、信道。ESP-IDF 和 Arduino 环境下WiFi 默认可能开启 modem sleep 省电模式。省电模式下模块会周期性休眠连接不断但 ping 延迟会突然变得很高甚至首个数据包需要等待唤醒。如果应用对响应速度敏感可以关闭省电模式。代码很简单连接成功之后调用WiFi.setSleep(false);发射功率不要一上来就调最高。后面会专门讲为什么“调低功率”有时候反而更稳。信道方面如果周围路由器很多大家挤在同几个信道上无线重传会明显增加。一般建议使用 1、6、11 这三个互不重叠的信道里比较空闲的那个具体可以在路由器后台设置。3. 邪门修复方案一给模块 GND 补一小段铜丝3.1 操作步骤断电