SKU 01458 · ESP32-C3 SuperMini

ESP32-C3 SuperMini 串口反复跳与 BOOT 恢复排查

客户反馈“之前可以用,这次四块板插上一直叮咚、COM 口反复闪,换其他主控没问题”。本页按实测现象整理:不按 BOOT 时串口反复出现/消失,按住 BOOT 上电后 COM 口稳定,优先从旧程序复位、下载模式和 Arduino 设置排查。

Quick Facts

  • SKU:01458
  • 芯片:ESP32-C3 系列
  • USB:Type-C,内置 USB Serial/JTAG
  • BOOT:GPIO9 下载模式
  • 现象:不按 BOOT 串口跳,按 BOOT 后稳定
  • WiFi:搜不到/连不上先查发射功率

Conclusion

先给客户看的结论

这个现象更像“原程序启动后反复复位/USB 反复枚举”,不是一上来就判断四块板全坏。

不按 BOOT:COM 口反复闪

板子上电后会运行 Flash 里的原程序。如果程序崩溃、看门狗复位、USB CDC 初始化异常,Windows 就会听到反复“叮咚”,设备管理器里 COM 口出现又消失。

按住 BOOT:COM 口稳定

BOOT 会让 ESP32-C3 进入下载模式,暂时不跑原程序。若此时 COM 口稳定,说明 USB 口、芯片下载模式和电脑识别大概率正常。

优先重新烧录最小程序

先烧录空程序或 Blink / RGB 测试程序,确认能稳定上传和运行,再接外设或恢复客户自己的程序。

Product

产品图与规格

图片用于客户识别板型。不同批次的 Flash 容量、板载灯引脚、丝印细节以实物为准。

01458 ESP32-C3 SuperMini 开发板产品图
ESP32-C3 SuperMini 开发板,Type-C,带内存,排针无焊。
项目说明
商品 SKU01458
产品名ESP32-C3 SuperMini 开发板(带内存,黑板,排针无焊)
尺寸约 22.5mm × 18mm(按图片标注,批次可能有轻微差异)
供电USB Type-C 或板上 5V/3V3 引脚,按实物丝印使用
下载模式按住 BOOT 上电,或按住 BOOT 后短按 RST/EN
待确认Flash 容量、板载灯引脚、当前批次丝印和原厂示例程序

同芯片的另一个板型:SKU 02231(带 IPEX 天线座)

外观、丝印布局不一样,但主芯片都是 ESP32-C3,本页排查的 BOOT / 串口跳 / WiFi 发射功率问题是同一颗芯片的通用特性,不是某一块板子独有的——这类小板子只要用的是 同一颗 ESP32-C3,遇到的坑基本是同一套。

02231 ESP32-C3 PRO MINI(带 IPEX 天线座)产品图
ESP32-C3 PRO MINI 开发板,Type-C,排针无焊,带 IPEX 天线座(可接外接天线)。
项目说明
商品 SKU02231
产品名ESP32-C3 PRO MINI 开发板(蓝板,排针无焊,带 IPEX 天线座)
尺寸约 24.1mm × 18mm(按图片标注,批次可能有轻微差异)
跟 01458 的区别板载 PCB 天线换成了 IPEX 座接外接天线,其余排查思路通用
天线相关提示外接天线信号路径跟板载 PCB 天线不同,本页发射功率排查结论仅供参考,未在 IPEX 天线款上单独实测验证

BOOT Mode

按 BOOT 后串口稳定,说明什么?

ESP32-C3 的启动模式由启动脚决定。官方资料说明,GPIO9 在复位时拉低会进入下载模式;正常高电平时运行 Flash 里的程序。

1. 拔掉 USB

先断电,避免按钮时序不对。

2. 按住 BOOT

BOOT 通常接 GPIO9,按住后让芯片复位时进入下载模式。

3. 插上 USB

电脑识别出稳定 COM 口后,再松开 BOOT。

4. 重新烧录

先烧录最小测试程序,再按 RST/EN 运行。

关键判断

如果按住 BOOT 上电后 COM 口稳定,说明板子的 USB 下载通道基本可用;不按 BOOT 时串口反复闪,更常见是旧程序反复复位、USB CDC 设置不匹配、外设拖电、线材/供电不稳。

Arduino IDE

Arduino IDE 建议设置

ESP32-C3 与传统 CH340/CP2102 开发板不完全一样。很多“端口消失、上传失败”其实是开发板型号或 USB CDC 设置没选对。

⚠ USB CDC On Boot 必须选 Enabled

这条最容易漏:Tools → USB CDC On Boot 不勾 Enabled,串口监视器会完全没有任何输出(只看到一行 ESP-ROM: esp32c3-api1-... 启动信息就没了),很容易误判成代码没跑起来或板子坏了,其实只是这一个菜单项没选对。ESP32-C3 用的是内置 USB Serial/JTAG,跟传统 CH340/CP2102 走法不一样,这一项必须手动开。

设置项建议说明
开发板ESP32C3 Dev Module / 对应 ESP32-C3 选项不要选普通 ESP32 Dev Module 或 ESP32-S3。
USB CDC On Boot可先设 Enabled需要用 USB 串口打印时常用;不同核心版本菜单名称可能略有差异。
Upload ModeUART0 / USB Serial/JTAG 按实际端口如果自动下载失败,用手动 BOOT 模式。
Upload Speed先用 115200 或 460800排查阶段不要一开始用太高速率。
Port选择按 BOOT 后稳定出现的 COMWindows 设备管理器里稳定显示后再上传。
最小空程序:用于覆盖旧程序,排除旧程序反复复位
void setup() {
  // 空程序:先确认板子能稳定烧录和运行
}

void loop() {
  delay(1000);
}
串口测试程序:看复位日志和 COM 是否稳定
void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("ESP32-C3 serial test start");
}

void loop() {
  static unsigned long n = 0;
  Serial.print("running: ");
  Serial.println(n++);
  delay(1000);
}

WiFi

WiFi 热点搜不到 / Station 连不上怎么办

跟 BOOT、串口跳是两个不同的问题:这里说的是板子本身能正常烧录运行,但用 WiFi 功能时手机搜不到热点,或者连自己家路由器时反复连接失败。

▶ 视频版排查演示

这篇资料对应的完整排查过程(手机搜不到热点 → 定位发射功率 → 改一行代码修复 → 完整配网体验演示)做成了视频,跟着看一遍比读文字更直观: 在 B 站观看视频版

症状

AP 模式:手机 WiFi 列表里搜不到板子发出的热点,或者搜到了连不上、连上秒断。Station 模式:WiFi.begin() 之后一直卡在 WL_DISCONNECTED(状态码 6),哪怕目标路由器信号很强、加密方式是标准 WPA2。

先排除的嫌疑

SSID/密码打错、IP 配置冲突、路由器加密方式不兼容、5GHz 频段不支持——这几项都可以用扫描程序(见下方代码)逐一核实,实测中这些往往都是正常的,不是真正原因。

真正原因

ESP32-C3 SuperMini 用的是板载 PCB 天线,发射功率开到默认最大档(19.5dBm)时,天线阻抗不匹配会被放大,信号反射失真,导致 WiFi 四次握手失败。功率越大不代表信号越好,这块板子恰恰相反。

修复:初始化 WiFi 时把发射功率降到 8.5dBm
#include "esp_wifi.h"

// 放在 WiFi.mode() 之后、WiFi.begin() / WiFi.softAP() 之前调用
// AP 模式和 Station 模式都要加这一行,同一个硬件问题两种模式都受影响
esp_wifi_set_max_tx_power(WIFI_POWER_8_5dBm);

实测数据(Station 模式,连接 WPA2 路由器,信号强度 -44~-48dBm)

降功率前:WiFi Connection Failed! Status: 6,多次重试均失败。
降功率后:Connected | IP: 192.168.31.224 | Signal: -52~-56 dBm,连接后长时间不断线。

排查用:先确认能不能扫到目标 WiFi、信号强不强、加密方式对不对
#include "WiFi.h"

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
}

void loop() {
  int n = WiFi.scanNetworks();
  for (int i = 0; i < n; ++i) {
    Serial.printf("%-32s | %4ld dBm | CH%2ld\n",
      WiFi.SSID(i).c_str(), WiFi.RSSI(i), WiFi.channel(i));
  }
  delay(5000);
}

WiFi Provisioning

完整配网体验:手机点一下,板子自己连上家里 WiFi

在「WiFi 连不上」排查基础上,做了一版可以直接给客户用的成品配网流程——不用改代码、不用重新烧录,手机操作几步就能让板子连上任意 WiFi。

1. 手机连开放热点

板子上电后广播 ESP32C3-Scan,不设密码,手机直接连,省掉输密码/密码打错的麻烦——反正这个热点只是临时配网用,开着的时间很短。

2. 网页扫描 + 点选连接

打开 http://192.168.4.1,点"开始扫描"看到周围所有 WiFi,点一个(比如客户家路由器),弹出真正的密码输入框(打码显示),输入密码点"连接"。

3. 自动关热点 + 记住密码

连接成功后 8 秒自动关闭 ESP32C3-Scan,板子转入客户家网络;账号密码同时存进 NVS,下次开机(包括重新烧录固件)自动用这份记录重连,不用再配一次。

⚠ 踩过的坑:关热点那一步的代码,把 STA 连接也冲断了

第一版关闭 AP 的代码:

WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);   // 多写的这一行

实测发现关闭热点后,板子在家庭网络里的 IP 完全联系不上(ping 返回 "无法访问目标主机",curl 无响应)。第一反应容易怀疑路由器或 DHCP 出了 问题,实际是 WiFi.mode(WIFI_STA) 这一行导致的——单天线板子对显式切换 工作模式很敏感,这个切换动作把刚建立好的 STA 连接也一起冲断了。去掉这一行、 只保留 WiFi.softAPdisconnect(true),问题就解决了。

实测数据:从另一台设备(网线连接、跟板子同一路由器、不经过 WiFi)直接验证

没有只信网页显示,而是从一台通过网线连接同一路由器的电脑上直接跑命令验证, 排除"网页显示是否准确"这层不确定性:

修复前:

curl http://192.168.31.224/status
(无响应,HTTP_STATUS:000)

ping 192.168.31.224
来自 192.168.31.251 的回复: 无法访问目标主机  (100% 丢包)

修复后:

curl http://192.168.31.224/status
{"status":"connected","ip":"192.168.31.224","rssi":-41}
HTTP_STATUS:200

ping 192.168.31.224
来自 192.168.31.224 的回复: 字节=32 时间=112ms TTL=64
来自 192.168.31.224 的回复: 字节=32 时间=127ms TTL=64
来自 192.168.31.224 的回复: 字节=32 时间=57ms TTL=64
数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失)
关闭热点的正确写法(放在 STA 连接成功、延迟几秒之后调用)
// 只调用这一行,不要再额外调用 WiFi.mode() 做显式模式切换
WiFi.softAPdisconnect(true);

额外的小细节,都是实测中发现的真实问题

"开始扫描"按钮文字会跟着状态变:板子已经连过网络后,这个按钮的 用途从"第一次配网"变成"想换个网络才用",页面加载时会先查一次状态,已连接的话 按钮文字自动变成"重新扫描(更换 WiFi)",避免让人误以为还没配置好。
"忘记已保存的 WiFi"按钮:客户路由器换了密码、或者想换个网络时, 点这个按钮清空 NVS 里存的账号密码,重启后回到"等手机配网"的初始状态。
板载灯效测试:网页上有慢闪/快闪/连闪/常亮/熄灭几个按钮,点一下 看板子上的灯是不是立刻跟着变,用来直观验证"手机确实通过 WiFi 在远程控制板子", 不是本地模拟。

Troubleshooting

常见难点和容易出错的点

按客户实际反馈,把最容易误判为“板子坏”的点单独列出来。

1. 不按 BOOT,电脑一直叮咚,COM 口反复跳

优先判断旧程序反复复位或 USB CDC 初始化异常。先按住 BOOT 上电,如果 COM 稳定,马上重新烧录空程序或串口测试程序。

2. 按 BOOT 后稳定,但松开复位又开始跳

说明下载模式正常,运行用户程序时异常。可能是程序看门狗复位、深睡眠、USB 设置错误、外设拉低电源或启动脚被外设影响。

3. 四块板都这样,是不是同批次坏?

如果四块都能按 BOOT 进下载模式且 COM 稳定,更像是同一个旧程序、同一套外设接法或同一台电脑/线材环境导致,不要直接判定四块硬件都坏。

4. 选错开发板型号

普通 ESP32、ESP32-S3、ESP32-C3 不能混选。选错可能导致上传失败、串口不正常、USB CDC 菜单不匹配。

5. GPIO8 / GPIO9 启动脚被外设影响

ESP32-C3 有启动配置脚,GPIO9 常用于 BOOT。不要在上电复位时用外设强拉这些脚,避免进错启动模式。

6. 只用充电线,不能传数据

Type-C 线要确认是数据线。只供电不传数据的线会导致电脑没有稳定 COM 口。

7. 外设拖电导致复位

排查时先只接开发板,不接传感器、屏幕、舵机、继电器等外设。裸板稳定后再逐个加外设。

8. 烧录后没有串口打印

确认 Serial Monitor 波特率、USB CDC On Boot、开发板型号和端口。部分程序需要按 RST/EN 后才开始打印。

9. 手机搜不到板子发出的 WiFi 热点

先确认代码逻辑本身没问题(SSID、密码、IP 配置),如果都正常,大概率是发射功率问题,参考上方「WiFi 热点搜不到 / Station 连不上怎么办」章节,把 esp_wifi_set_max_tx_power 降到 WIFI_POWER_8_5dBm。

10. 连接自己家路由器一直失败,但信号明明很强

用扫描程序确认目标 WiFi 的 RSSI 和加密方式都正常后,问题基本可以定位到发射功率——这跟 AP 模式搜不到热点是同一个硬件原因,解法也一样。

Support

需要技术支持时,把这几项一起发来

复制下面这段填一下发给客服,我们一次就能定位,不用来回问。

【ESP32-C3 SuperMini 串口反复跳与 BOOT 恢复排查 技术支持】
主控型号:            (如 Arduino UNO / ESP32 / STM32)
供电接的是:          □ 3.3V   □ 5V
串口显示的内容:
用的是哪份代码:      □ 本页示例   □ 其他(请说明)
接线照片:            (请附一张能看清接线的照片)