拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ESP32在线烧录全攻略:从Web Serial原理到浏览器刷固件实操

1. 在线烧录到底是怎么回事从“装工具刷固件”到“打开网页刷固件”很多玩ESP32的朋友第一次刷固件都是被工具链劝退的。要装Arduino IDE、要装CP2102或CH340驱动、要配esptool环境折腾半天还没开始往板子里写东西电脑里先多了一堆软件。我自己最早给ESP32刷MicroPython的时候光是在命令行里敲esptool的参数就搜了半个小时的教程。所以当我发现浏览器可以直接完成固件烧录、连一根数据线都不需要额外准备工具时第一反应是早点知道这个方案能省多少事。所谓ESP32在线烧录简单说就是不安装任何专业的烧录软件直接在Chrome或Edge浏览器里打开一个网页把ESP32用USB线接上电脑在网页里选择串口、选择固件文件点击烧录然后等待进度条走完固件就写进芯片了。这个过程依赖的核心技术叫Web Serial API是浏览器提供的一种能力让网页应用可以直接和串口设备通信。配合一个叫做esptool-js的JavaScript移植版ESP32烧录工具网页就可以像本地的esptool.py一样工作。这件事对于刚入门的玩家价值最大。你想测试一个支持ESPHome的智能家居固件、想给板子换成MicroPython、或者想刷一个Tasmota固件体验物联网控制原来可能要经历下载IDE、配置开发板管理器、安装依赖、跑命令行的一全套流程。现在只要确认浏览器支持Web Serial剩下的事情全部在网页里完成整个使用门槛降了一大截。在线烧录并不只是给小白用的。我自己在帮朋友远程调试设备时也会直接把在线烧录页面发给他让他自己点几下鼠标把固件刷好省去手把手教他安装esptool的沟通成本。对于需要在不同电脑上临时烧录的环境比如实验室公用电脑、产线临时工位在线烧录不需要在每台机器上重复配置环境打开网页就能干活效率提升非常明显。当然也要说清楚边界在线烧录省掉的是专业烧录工具的安装不等于完全不需要驱动。ESP32开发板上常见的USB转串口芯片比如CP2102、CH340在电脑上还是需要安装对应驱动的否则浏览器根本识别不到串口设备。这部分后面我会专门讲算是很多人踩的第一个坑。另外在线烧录依赖浏览器和网络的配合如果完全断网或者用的是不支持Web Serial的浏览器那就还是得回到传统工具路线。整体来看在线烧录是一个覆盖了绝大多数日常刷固件场景的好方案值得每个ESP32玩家掌握。2. 在线烧录的底层原理浏览器凭什么能直接写芯片2.1 Web Serial API浏览器与串口之间的桥梁要理解在线烧录为什么能成立首先要认识Web Serial API。这个API是Google和Microsoft推动的一项Web标准目的是让网页应用可以安全地访问用户的串行端口设备。在它出现之前浏览器出于安全考虑是完全不碰本地硬件资源的。网页既不能读取你的串口数据也没办法向串口设备发送字节流。你只能在网页上下载固件然后用本地工具去烧写。Web Serial API改变了这个局面。用户打开一个网页点击连接按钮浏览器会弹出一个授权窗口列出当前电脑上所有可用的串口设备。用户选择对应的ESP32开发板端口后网页就获得了与该串口通信的能力。这个过程本质上是浏览器把串口操作能力封装成了JavaScript可以调用的接口底层还是要通过操作系统识别到的串口设备来收发数据。和本地的Python串口库、C语言串口API做的事情是一样的只是换了个调用者的角色。有个细节很关键Web Serial API强制要求网页必须运行在安全的上下文中也就是HTTPS协议或者本地的localhost环境。所以绝大多数在线烧录工具都部署在HTTPS网站上。如果你自己想在本地写一个烧录页面记得起一个本地HTTP服务再通过localhost访问直接双击HTML文件用file协议打开是会被浏览器拒绝访问串口的。这是我曾经踩过的坑本地页面怎么调试都弹不出串口授权后来查了文档才意识到是协议环境不满足要求。2.2 esptool-js把Python工具链搬进浏览器有了串口通信能力还需要有烧录协议本身的支持。乐鑫官方提供了一套完整的烧录工具链名叫esptool最早是Python语言实现的。它实现了ESP32的串口烧录协议、Flash加密、MAC地址读取、Flash读写等一大堆功能。esptool-js则是把esptool的核心逻辑用JavaScript重写了一遍让这些功能可以在浏览器环境中运行。具体到烧录固件这件事esptool-js做的事情和Python版esptool完全一样把网页端选择的固件文件读成二进制数据初始化ESP32的烧录模式通过串口按照乐鑫定义的协议把数据分包发送给芯片芯片收到数据后写入内部Flash最后完成校验和复位。整个过程中用户能看到的交互就是网页上的进度条从0走到100。在线烧录工具的网页界面本质上是esptool-js的一个图形化外壳。最典型的就是乐鑫官方维护的ESP Web Flasher工具以及ESPHome、Tasmota这些开源固件项目自带的网页烧录器。它们把串口选择、固件文件选择、烧录参数配置、日志输出这些操作都包装成了可视化的按钮和文本框。用户不需要理解协议细节只要会点鼠标就行了。2.3 不同烧录方式的对比在线烧录的定位在哪里在线烧录优势明显但它并不是唯一的选择。经常被拿来对比的是Arduino IDE、esptool.py命令行工具以及Windows下的ESP Flash Download Tool。我根据自己的使用经验整理了几种方式的适用场景烧录方式需要安装适合场景不足在线Web烧录仅USB驱动快速刷入现成固件、远程协助、临时环境受浏览器和网络限制刷写大型文件时稳定性稍弱Arduino IDEIDE和开发板支持包编译并烧录自己写的Arduino代码环境配置重只适合Arduino框架esptool.py命令行Python、esptool批量烧录、脚本化操作、需要精细参数控制上手门槛高要记命令ESP Flash Download Tool单文件绿色工具Windows下烧录量产固件、调试Flash参数仅支持Windows界面较古旧实际选择上我的建议是如果是刷别人编译好的固件比如Tasmota、MicroPython、ESPHome预编译包优先用在线烧录如果是自己写了代码要编译再烧录那就用Arduino IDE或PlatformIO如果是要在产线上批量烧录几百台设备那还是esptool.py脚本最靠谱。工具之间不是替代关系而是互补关系。3. 完整实操用在线网页烧录ESP32固件的每一步3.1 烧录前的准备清单在线烧录听起来简单但准备工作做不好一样会失败。我整理了每次烧录前我都会快速过一遍的检查清单按顺序来基本不会出错。首先是最基础的硬件准备。一块ESP32开发板一根USB数据线一台安装了Chrome或Edge浏览器的电脑。开发板型号不重要无论是经典的ESP32 DevKitC、NodeMCU-32S还是ESP32-S3、ESP32-C3在线烧录都支持。USB数据线这里要特别提醒一定要用带数据传输功能的数据线不要用那种只能充电的线。判断方法很简单如果手机插上这根线能传文件那它就能给ESP32传数据。很多烧录失败的案例排查到最后发现就是线的问题。其次是驱动检查。ESP32开发板上的USB转串口芯片类型决定了电脑需要安装什么驱动。CP2102芯片对应Silicon Labs的CP210x驱动CH340芯片对应WCH的CH340驱动ESP32-S3和部分ESP32-C3开发板可能直接用了板载USB就不需要额外装驱动。在Windows上可以打开设备管理器看端口列表里有没有出现新的COM口来判断驱动是否正常。macOS和Linux对这两个芯片的驱动支持通常更友好很多时候插上就能识别。最后是浏览器环境。确认浏览器版本支持Web Serial APIChrome 89以上、Edge 89以上都支持。不要用Safari和Firefox它们到目前为止对Web Serial的支持都不完整。打开在线烧录页面时确保页面的地址是HTTPS开头的。3.2 从连接开发板到烧录完成的全流程准备就绪之后就可以开始烧录了。我用目前比较有代表性的ESPHome网页烧录器为例完整走一遍流程。第一步用USB线把ESP32连接到电脑。如果驱动没问题系统会识别出一个新的串口设备。Windows设备管理器中能看到COMx端口macOS上能看到/dev/cu.usbserial-xxx。这一步不要急插上线后稍微等几秒让系统完成设备识别。第二步打开在线烧录页面。ESPHome项目的官方烧录页面、Tasmota的web installer、乐鑫的ESP Web Flasher都是可以用的。以ESPHome页面来说打开后它会列出一些可以烧录的固件类型包括各类开发板的预编译固件。如果你的需求是刷入自定义固件页面上也提供了直接选择本地文件的功能。第三步点击Connect按钮或者类似的连接入口。此时浏览器会弹出一个串口选择窗口列表里会显示电脑上所有的串口设备。选择对应ESP32的那个串口。这里有个辨识技巧CP2102芯片的串口名通常包含CP210x字样CH340通常显示为USB-SERIAL CH340如果你的电脑上插了多个串口设备可以通过拔插USB线来判断哪个是新增的串口。选错端口烧录会直接报错。第四步选择固件文件。如果是网页自带固件库的直接选中想要的目标固件如果是刷自己下载的.bin文件就通过文件选择按钮上传。需要注意不同的固件项目有不同的烧录地址要求比如MicroPython的固件通常是烧到0x1000地址一些引导程序需要先烧到0x0地址。大多数网页烧录工具已经内置了正确的地址映射不需要手动填。但如果你的页面允许修改FLASH地址一定要核对清楚填错了会导致烧完以后芯片无法正常引导。第五步点击烧录按钮。这时ESP32会自动进入下载模式吗不一定。部分开发板支持通过DTR和RTS引脚自动控制复位进入下载模式比如常见的DevKitC就能做到。但有些精简设计的板子需要手动按住BOOT按键在点击烧录的同时按住BOOT再按一下EN复位才能进入下载模式。如果网页卡在等待连接或者一直检测不到芯片响应大概率就是下载模式的问题。烧录过程中日志区域会持续刷新输出显示各个阶段的状态。等到出现类似Hard resetting via RTS pin...或者All done!的提示就说明烧录完成了。此时网页通常会提示重新插拔USB线或者按一下开发板上的EN按键让ESP32复位运行新固件。3.3 烧录完成后的第一轮验证固件烧写成功不等于一切结束还要确认新固件真正跑起来了。最简单的验证方式是看串口日志。在在线烧录页面里通常有一个串口监视器功能可以打开串口查看ESP32的实时输出。打开后按一下开发板上的EN复位键如果能看到完整的启动日志输出没有卡死、没有反复重启说明固件基本正常。对于不同固件验证方式也不一样。如果是刷了MicroPython在串口监视器里应该能看到MicroPython版本信息和的交互提示符此时可以输入print(hello)测试Python解释器是否能正常执行。如果是刷了Tasmota启动日志里会出现Tasmota版本号之后设备会进入AP模式生成一个名为tasmota-xxxx的无线热点用手机连上这个热点就能进入配置页面设置WiFi后设备就正式入网了。如果是刷了ESPHome固件启动日志中会显示Your device is configured for Home Assistant之类的信息设备会尝试连接你预设的WiFi。验证阶段如果发现设备不停自动重启日志里出现Boot loop或者panic信息大概率是固件与芯片型号不匹配选错了固件变体。比如把ESP32-C3的固件刷到了ESP32上就会出现这种问题。这个时候不要慌回到在线烧录页面重新选择对应型号的固件再来一次烧录覆盖就行了。固件烧写本身是一个覆盖操作只要芯片没有被硬件锁定大部分软件问题都可以通过重新烧录解决。4. 在线烧录的关键细节下载模式、Flash地址与固件加密4.1 深入下载模式为什么有时候按住BOOT才能烧录接触过ESP32烧录的人多多少少都会遇到需要手动按BOOT键的情况。要理解这个问题需要知道ESP32芯片本身有两种运行模式正常运行模式和下载模式也叫烧录模式、UART下载模式。芯片上电时会通过检测一组特定的GPIO引脚电平来决定进入哪个模式。ESP32是GPIO0ESP32-C3、ESP32-S3等新芯片各有对应的下载引脚。如果GPIO0在上电时为低电平芯片就会进入下载模式等待外部通过串口发送烧录指令和固件数据如果GPIO0为高电平芯片就正常启动Flash里的程序。开发板上的BOOT按键本质就是一个把GPIO0拉低的开关。所以在手动模式下刷固件的标准动作是按住BOOT键不放、点击烧录、按一下EN键复位、松开BOOT键。这样芯片上电时GPIO0正好是低电平就会进入下载模式。很多现代开发板比如乐鑫官方的DevKitC系列设计了自动下载电路通过DTR和RTS两条控制线和晶体管电路在上电时自动控制EN和GPIO0的电平时序让芯片自动进入下载模式。这样就不需要手动按键了在线烧录页面点击烧录后芯片会自动复位并进入烧录状态。但这是开发板的硬件设计决定的不是所有板子都有这个能力。如果你的板子没有自动下载电路老老实实按BOOT是唯一的办法。遇到过一种情况某些板子上的GPIO0还连接了其他外部电路比如LED、按键等这些电路的电平状态可能会干扰下载模式判定。表现为烧录时断时续、时好时坏。排查思路可以试试拔掉引脚上额外的连接线只保留USB供电再进行烧录。4.2 Flash地址与烧录参数为什么有的固件烧完白屏固件烧录不只是把文件写进Flash那么简单写到什么位置非常关键。ESP32的Flash从地址0x000000开始不同的内容放在不同的偏移地址。以ESP32经典芯片为例引导程序bootloader默认烧在0x1000分区表放在0x8000而应用程序一般是烧在0x10000。MicroPython这样的组合固件则会把bootloader、分区表和固件本体链接成一个整体一次性烧到0x1000地址。如果你把原本应该烧在0x10000的应用程序文件烧到了0x0地址芯片的引导逻辑就会完全错乱表现出来就是反复重启或者屏幕白屏无反应。在线烧录工具已经为常见固件预设了正确的地址。但如果你的场景比较特殊比如手动指定地址烧录自定义分区就一定要先搞清Flash布局。还有一个容易被忽略的参数是Flash大小和SPI模式。ESP32的Flash容量常见的有4MB、8MB、16MB如果固件是针对4MB Flash编译的而你板子上是2MB写完以后即使引导成功运行时也会出各种奇怪问题。有些在线烧录工具会通过芯片读取Flash信息并自动设置参数但有些工具需要手动选择Flash Size和SPI Mode拿不准的时候选默认值通常问题不大。4.3 固件加密和烧录安全线上烧录的进阶话题固件加密和固件安全是ESP32领域经常被提及的高级话题热度这么高说明大家越来越在意设备不被轻易破解或篡改。ESP32支持硬件级的Flash加密和Secure Boot安全启动。启用Flash加密后固件以密文形式存储在外部Flash中即使有人拆下Flash芯片读取拿到的也是加密数据。Secure Boot则通过芯片内置的签名验证机制确保只有经过正确签名的固件才能被启动执行防止恶意固件替换。关注固件安全的玩家要注意这两个功能不是默认开启的需要在烧录时进行专门配置。并且加密和签名涉及的密钥一旦丢失设备就报废了——因为之后所有固件都需要用对应密钥重新加密或签名密钥丢失意味着无法生成合法固件。网上热搜词里提到“esp32锁住最简单解决方法”很多所谓锁死其实就发生在这个环节用户无意中启用了Flash加密或Secure Boot之后用普通工具烧录不了固件误以为芯片坏了。真正的解决方法不是去物理破坏芯片而是知道对应的eFuse状态通过工具做一次全Flash擦除或者用正确的密钥重新生成固件包重新烧录。我在下文的常见问题部分会专门展开这里先提醒大家如果没有明确需求建议先不要开启这些安全特性。它们虽然提升了安全性但也显著增加了烧录复杂度对初学者来说得不偿失。在线烧录工具本身在传输过程中同样存在安全考虑。网页和浏览器之间的串口通信是本地数据交换固件文件在上传到网页的过程中走的是网络传输。所以更安全的做法是使用官方或可信开源项目部署的在线烧录页面避免使用来路不明的第三方烧录网站防止固件数据被篡改或窃取。5. 常见问题与排查技巧实录在线烧录踩坑合集5.1 浏览器识别不到ESP32串口这是在线烧录最常见的第一个问题。打开串口选择窗口发现列表是空的或者只有一个不相关的COM口。排查思路按优先级排列第一确认USB数据线能传输数据换一根手机原装线或者带数据传输标识的线试试第二确认电脑安装了对应的USB转串口驱动Windows可以在设备管理器里看是否有带感叹号的未知设备通过芯片型号下载对应驱动安装第三换一个USB口有些主板的前置USB口供电不稳或者供电不足会导致ESP32上电异常切换到机箱后置USB口或者用带供电的USB HUB往往能解决问题。还有一个隐藏问题macOS系统对新接入的USB串口设备有时会卡在权限确认上。如果浏览器弹出过“允许访问USB设备”的提示而你没有点击允许后续会一直无法识别。到系统设置里重新授权浏览器即可。5.2 烧录总是在等待连接或者反复失败如果浏览器能识别到串口但点击烧录后一直卡在Connecting状态或者日志里反复出现A fatal error occurred: Failed to connect to ESP32大概率是芯片没有进入下载模式。先检查开发板上的EN和BOOT按钮是否可用重新执行一次标准的进下载模式流程。如果你用的是自动下载电路的板子尝试手动按BOOT键反而可能更可靠。另一个常见原因是串口监视器窗口占用了串口在线烧录页面自带的日志窗口如果保持打开状态同一时间只能有一个程序占用该串口。关闭日志窗口或者重新打开页面后再试一次。如果手动和自动模式都进不去把USB线拔掉重新插上同时按住BOOT再插入然后松开BOOT这种方式能让芯片在接入时就进入下载模式。这个方法在我调试一块没有自动下载电路的最小系统板时非常管用。此外还要检查串口波特率设置。虽然大多数在线烧录工具会自动协商波特率但如果你能手动调整试试选择115200或者460800某些兼容性欠佳的USB转串口芯片在高速率下不稳定降速往往能解决问题。5.3 esp32锁住最简单的解决方法到底是什么“esp32锁住最简单解决方法”这个话题在搜索热词里反复出现可见很多人遇到过这个焦虑时刻。我先给结论绝大多数所谓esp32锁死并不是芯片损坏而是芯片所在状态导致无法正常烧录或运行。最常见的伪锁死是GPIO0一直处于低电平状态。比如你的程序里把GPIO0配置为输出低电平或者硬件连接上GPIO0被外部电路拉到低电平此时芯片每次上电都默认进入下载模式不运行用户程序表现就像板子死了一样。解决方法很简单断开GPIO0外部连接或者排查是否有外接器件干扰。第二种常见伪锁死是看门狗反复复位。程序运行一小段就崩溃、重启日志里不断打印Restarting像极了死循环。这种通常不是硬件问题是固件本身有bug或者配置不正确。重新烧录一个官方示例固件比如Blink例程能正常运行就说明硬件没问题是固件的事情。真正需要小心的是由Flash加密和Secure Boot引发的锁死。如果启用了eFuse级的烧录保护比如写入了EFUSE_DIS_DOWNLOAD_MANUAL等熔丝芯片会彻底禁止通过串口进行固件烧录这时常规在线烧录工具会报错。这种情况的处理方式取决于具体熔丝如果只是工作模式限制可以通过擦除eFuse或者使用JTAG方式恢复如果是Secure Boot密钥已锁定且密钥未知那这块芯片基本只能弃用。为避免这种最坏情况再次强调不要在没有明确需求和备份密钥的前提下随意操作固件加密和Secure Boot相关选项。5.4 刷机刷错固件的恢复方法刷错固件的情况在折腾过程中太常见了。比如把ESP32刷成了ESP32-S3的固件或者刷了一个针对错误Flash大小的固件结果就是设备变砖。好消息是绝大多数情况下这种软变砖可以通过重新烧录正确固件来恢复和手机刷机失败后进recovery模式双清是一个道理。恢复的要点是让芯片进入下载模式。用前面提到的手动按BOOT进下载模式的方法只要能进入下载模式就可以重新烧录正确的固件。整个Flash会被新固件覆盖。如果在下载模式下也无法连接可以试试使用esptool.py的erase_flash命令把整片Flash擦干净然后再烧录正确固件。在线烧录工具如果有全擦除功能优先使用这个功能。有些在线工具还支持只擦除指定分区比如只擦除NVS分区来重置WiFi配置比全擦效率更高。5.5 在线烧录的常见问题速查表问题现象可能原因快速处理办法串口列表为空数据线只供电不传数据换支持数据传输的数据线串口列表为空缺少USB转串口驱动根据芯片型号安装CP210x或CH340驱动点击烧录后一直等待芯片未进入下载模式按住BOOT点击烧录再按EN复位烧录中途断开USB供电不稳用带供电的USB HUB或换后置USB口烧录完成后无输出烧录地址错误核对固件对应的Flash烧录地址设备反复重启固件型号与芯片不匹配重新选择正确芯片型号的固件再烧无法烧录且日志提示flash加密启用了安全熔丝用官方工具检查eFuse状态并调整配置浏览器弹不出串口授权窗口页面非HTTPS环境确认页面地址是HTTPS或localhost6. 在线烧录的进阶玩法一套方法覆盖大部分折腾场景6.1 用在线烧录快速切换不同固件系统在线烧录最爽的使用场景就是可以像换手机系统一样自由切换ESP32的固件。今天刷个MicroPython写温湿度采集脚本明天换成ESPHome接入智能家居后天刷个Tasmota给设备做蓝牙网关放在以前每个转换过程都要折腾一遍工具链现在只要打开不同的网页烧录器就能完成。我自己实测下来从MicroPython切到Tasmota再到切回Arduino框架的程序整个过程不到十分钟其中有八分钟是在等固件下载和烧录进度条走完。这种快速切换能力让ESP32的调试效率有了质的提升。特别是对于刚接触ESP32的朋友不用在入门前就花一整个晚上装环境直接从一个项目跑起来后续再慢慢研究工具链学习曲线友好太多。6.2 在线烧录加手机App控制物联网项目可以这样做在线烧录不光能刷基础固件结合热搜词里高频出现的蓝牙App控制ESP32等场景它还可以作为物联网项目的最前线部署工具。比如你拿到一块ESP32想做一个手机蓝牙控制的遥控车先用在线烧录刷入一个支持BLE服务的固件然后用手机App扫描蓝牙广播、连接设备、发送控制指令。整个过程中烧录这一步完全不需要本地IDE对于只想体验控制效果、暂时不关心底层程序编译的朋友是最理想的切入点。再比如ESP32温湿度传感器项目刷入MicroPython固件之后在REPL界面敲几行代码就能读取DHT11传感器的数据并通过Web服务在局域网内展示。在线烧录解决的是“如何快速得到一个能运行的MicroPython环境”这一步后续的代码编写可以放在任何编辑器里完成也可以在网页的串口监视器里直接验证效果。6.3 固件来源与安全意识的培养聊到在线烧录必须提一嘴固件来源的安全问题。固件烧录工具本身是开源可信的但固件文件不一定。自己去网上随便下载的固件可能在编译时植入了后门比如偷偷采集设备信息上传。ESP32如果接入的是家庭网络恶意固件可能成为你家庭网络的一个缺口风险不容小觑。所以我的习惯是优先从官方GitHub仓库或项目官网下载固件比如MicroPython官网、Tasmota官方release页面、ESPHome官方页面。在下载文件名中注意核对校验值如果项目方提供了SHA256哈希下载后用工具校验一下再烧录。这些步骤只需要多花一分钟能避免很多莫名其妙的安全问题。另外尽量少用破解版或第三方修改版固件这类固件通常宣称解锁了高级功能但内部逻辑不透明安全性没有保障。7. 聊聊在线烧录的边界与个人建议在线烧录解决了大部分日常需求但有些场景它确实不合适。比如批量烧录几十块板子需要的是脚本化的自动烧录应该使用esptool.py批量执行命令比如需要调试底层硬件直接在代码中改一个参数就烧录一次用Arduino IDE或PlatformIO的集成烧录反而更快再比如需要烧录超过16MB的大型自定义固件浏览器处理大文件传输时稳定性可能不如本地工具。如果你打算长期深入玩ESP32我的建议是顺手把esptool.py的命令行工具也装上。在线烧录很好用但掌握命令行工具能让你在复杂场景下游刃有余。有一次我要给一块ESP32刷入一个经过自定义配置的分区表固件在线工具不支持手动指定多个分区地址最后就是靠esptool.py一条命令搞定的。工具之间不存在互斥关系关键时刻多个选择总是好的。在线烧录真正改变的是什么我理解它把ESP32刷固件这项操作的门槛从“会配置开发环境”降到了“会打开网页、会点鼠标”。这对于硬件爱好者的入门体验是一个巨大的改善。以前新人问我的第一个问题通常是“我的电脑该怎么装环境”现在变成了“我应该刷哪个固件”。这个变化说明大家已经把更多精力放在了真正有趣的事情上而不是被工具折磨。等你也熟练掌握在线烧录之后会发现折腾ESP32的乐趣才刚刚开始。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门