开头:接线的人多,烧录卡住的人更多

小智 AI 玩家里有一批人走的是最硬核的路线:不买现成整机,用两块 400 孔面包板、一块 ESP32-S3-DevKitC-1、一个 INMP441 麦克风、一个 MAX98357A 功放加个小喇叭,自己接线攒一台。成本低,成就感足,还能顺便学会 I2S 和 I2C。

面包板接线(WIFI)版固件详情页:DIY 硬件清单

但论坛和群里聊下来,发现一个规律:接线卡住的人少,烧录卡住的人多。面包板接线照着教程插就行,而烧录固件要过驱动、数据线、串口、下载模式、烧录地址五道关卡,每道关卡都能让新手卡一晚上。

这五道关卡我全卡过。今天把坑一个个列出来,每个都给排查方法;文章最后介绍一个把五道关卡整个绕过去的办法。

坑一:串口驱动不对——电脑根本"看不见"板子

症状:插上板子,打开烧录工具,串口下拉框里空空如也;或者 Windows 设备管理器里「其他设备」挂着一个黄色感叹号的未知设备。

原因:绝大多数 ESP32 开发板用的是 CH340 或 CP2102 这两颗 USB 转串口芯片,Windows 不会自动装好它们的驱动。尤其是 CH340,老版本驱动跟 Windows 10/11 还存在签名冲突,装完可能出现"代码 52"无法启动。

排查方法:

  • 打开设备管理器,插拔一次板子,看哪个条目在闪。有 COMx 出现说明驱动没问题,问题在别处;插拔前后什么都没变,就是驱动问题。
  • 芯片型号看板子上 USB 口旁边那颗芯片的丝印:CH340 就装沁恒官方驱动,CP2102 就装芯科官方驱动。
  • 装完驱动拔掉板子重插一次,很多"装了还是不识别"其实只是没重新枚举。
  • Mac 用户注意:macOS 一般免驱,但要用 ls /dev/cu.* 看设备名,选 cu.usbmodem 或 cu.usbserial 开头那个,别选 bluetooth 开头的。

坑二:数据线是充电线——最冤枉的坑

这是我觉得最坑的一个,因为线看起来完全是好的:插上灯亮,充电正常,就是死活连不上串口。

原因:市面上大量 Type-C 线是纯充电线,里面只有电源两根芯,根本没有 D+/D- 数据线。灯亮只能证明供电通了,证明不了数据通。

排查方法就一条:换一根确认能传数据的线再试。怎么确认?拿它连手机,看电脑上弹不弹"允许 USB 调试"/识别出手机存储。一秒判断,别在线上耗。

顺带一提,还有一类更隐蔽的:线能传数据,但太细太长,供电不足。烧录时 ESP32-S3 的瞬时电流不小,供电不够会报 brownout 或直接复位。用短一点、粗一点的线,能消掉一大半玄学问题。

坑三:串口被占用——上一秒还好好的

症状:刚才还能连上,现在报「串口打开失败」或者 could not open port: PermissionError / Access denied。

原因:串口是个独占资源,同一时刻只能有一个程序打开它。常见占用者:

  • Arduino IDE 或 VSCode 的串口监视器还开着——这是最常见的一个,烧录前先点掉监视器;
  • 另一个烧录窗口(esptool、flash_download_tool)没关干净;
  • 后台跑着的串口助手、录波软件。

Linux 还有一层权限坑:普通用户默认没有串口读写权限,报 Permission denied。用 sudo usermod -aG dialout $USER 把自己加进 dialout 组,注销重新登录才生效(这一步九成的人会忘)。

Mac 上如果串口被上一个异常退出的进程占着,killall 掉 esptool 或者干脆重启终端即可。

坑四:进不了下载模式——Failed to connect

症状:驱动正常、线也没问题,但烧录时报 Failed to connect to ESP32-S3: No serial data received 或超时。

原因:芯片没进下载模式。ESP32 正常启动时会跑 flash 里的程序,烧录器要它停下听指令,就得让它进 ROM 下载模式。手动进法:

  • 按住 BOOT 键不放;
  • 短按一下 EN/RST 复位键,松开;
  • 再松开 BOOT 键——芯片此刻已在下载模式;
  • 点烧录。

DevKitC-1 这类主流开发板带了自动下载电路,理论上不用手动按,但面包板上杜邦线拉得乱、有外设抢占了关键 GPIO 时,自动电路一样会失效。所以"按住 BOOT 再复位"这个手动姿势要记牢,它是串口烧录的保命技能。

坑五:烧录地址不会填——新手最懵的一关

前三关过了,烧录器终于打开了,然后很多人对着下载界面懵了:地址栏填什么?

传统方式烧小智,拿到的是官方 Release 里板型 zip 解压出来的 merged-binary.bin 合并固件,用 flash_download_tool 这类工具时地址填 0x0(ESP32-S3 的合并固件从 0x0 开始;而经典 ESP32 是 0x1000,网上教程两种说法都有,越看越晕)。

如果烧的不是合并固件,而是 bootloader / partition-table / app 三件套分开的 bin,那要分别填三个地址,少勾一行、填错一个偏移,板子就黑屏:上电没反应、没有串口日志、复位键无效。新手一般到这一步就默认板子坏了,其实固件只是烧歪了。

这一关没有取巧办法,只能记住两个数:合并固件 ESP32-S3 填 0x0、经典 ESP32 填 0x1000;三件套按官方文档一行行对。另外记得 zip 要先解压,烧录工具选文件时别直接选压缩包;Flash 大小选项要和模组一致(N16R8 就是 16MB),选小了烧不进去,选大了可能起不来。

一劳永逸:把五道关卡整个跳过去

回头看看就会发现:五道关卡里,除了驱动和线是硬件问题,其余全是"烧录软件怎么用"的问题——而这些问题的根源,是我们把烧录当成了一件要在本地搭环境的事。

其实烧录这件事完全可以不在本地做。鹿戴马物联(16302.com)做了个在线烧录工具,基于浏览器的 Web Serial 直连芯片,我给身边几个新手都用过,反馈是"就这?":

流程短到没什么可写的:

  • 第一步:打开页面,板型列表里选「面包板接线(WIFI)」(0.91/0.96 OLED 屏选对应变体,4G 模块方案选 ML307 版);
  • 第二步:Type-C 数据线连上板子,点连接,浏览器弹串口授权框选中设备;
  • 第三步:点开始烧录,自动擦除、自动烧写,进度条走完,配网,小智开口说话。

前面那五道关,在这个流程里的状态是:

  • 串口驱动——Chrome/Edge 用系统串口,烧录工具这层不用装任何 CH340/CP2102 驱动软件;
  • 数据线——这个躲不掉,充电线物理上就是不通数据,任何时候都得先换线;
  • 串口占用、下载模式、烧录地址——全自动。地址、分区、擦除全部由工具处理,你不需要知道 0x0 还是 0x1000。

全程不装 Python、不装 esptool、不装 flash_download_tool,Windows、Mac、Linux 浏览器都行,烧完顺手就能配网。对只想让面包板上的小智开口说话的人来说,这就是"一根线插上电脑"的事。

固件详情页顶部,点「开始烧录」直接进在线烧录

在线一键烧录入口(面包板接线全系固件,需 Chrome/Edge 支持 Web Serial)

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐