ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ESP-01S烧录教程:基于Arduino IDE的完整环境搭建

ESP-01S烧录教程:基于Arduino IDE的完整环境搭建 最近很多做物联网、DIY 智能家居和毕业设计的同学都开始接触 ESP8266 系列模块其中 ESP-01S 因为体积小、成本低、自带 WiFi 能力成为很多入门项目的首选。不过很多初学者第一次拿到 ESP-01S 时往往不是卡在代码上而是卡在“怎么把代码烧进去”这一步。这篇文章就围绕 ESP-01S 的 Arduino IDE 开发环境搭建展开重点解决软件安装、开发板配置、编译烧录三个环节同时也把常见的接线方式和坑点整理出来方便后续做智能开关、MQTT 数据上报、红外遥控等真实项目时直接复用。1. 了解 ESP-01S 与 Arduino IDE1.1 ESP-01S 是什么ESP-01S 是以乐鑫 ESP8266 芯片为核心的一款迷你 WiFi 模块它把 ESP8266EX 芯片、Flash 存储、PCB 天线和必要的外围电路集成在一块很小的板子上。模块自带两个 GPIO 口GPIO0 和 GPIO2支持 UART 串口通信默认出厂时多数模块会烧录 AT 固件用户可以通过串口发送 AT 指令操作 WiFi 连接、TCP/IP 通信等。从本质上看ESP8266 芯片是一颗可以独立运行程序的微控制器它内部集成了 Tensilica L106 32 位处理器主频最高可达 160MHz同时内置 WiFi MAC/BB/RF 电路。也就是说它不只是“WiFi 透传模块”而是一颗具备完整运算能力的 MCU。相比 ESP-01ESP-01S 的主要区别在于对比项ESP-01ESP-01S供电设计部分版本需要外部稳压多为 3.3V 供电注意压差天线PCB 天线PCB 天线板载 LED蓝色 LED蓝色 LED位置略有差异Flash常见 8Mbit1MB常见 8Mbit1MB引脚GPIO0 / GPIO2GPIO0 / GPIO2很多同学会把 ESP-01 和 ESP-01S 混用实际上两者的硬件接口基本兼容代码和烧录方式也很接近只是 PCB 版本略有差异。日常开发中可以直接按 ESP-01S 处理。1.2 为什么选择 Arduino IDEESP8266 的官方 SDK 支持多种开发方式比如乐鑫官方 ESP-IDF、NodeMCU Lua 固件、MicroPython、Arduino IDE 等。对于大多数电子爱好者、嵌入式初学者和快速原型验证场景来说Arduino IDE 是最容易上手的方案。Arduino IDE 的优势主要体现在几个方面语法简单。基于 C 封装了很多常用函数例如digitalWrite()、delay()、Serial.println()不需要深入了解寄存器操作。生态丰富。Arduino 社区有大量第三方库ESP8266 WiFi、HTTP Client、MQTT、JSON 解析等需求都有成熟库可以直接调用。跨平台。Windows、macOS、Linux 都有安装包。编译与烧录一体化。点击“上传”按钮即可完成编译、连接、烧录整个过程。这篇文章的最终目标就是让读者在 Arduino IDE 中安装好 ESP8266 开发板支持包然后成功把第一个程序烧录进 ESP-01S。2. 环境准备软件与硬件清单在开始安装软件之前先把需要的环境列出来避免做一半发现缺少工具没法继续。2.1 软件清单软件说明Arduino IDE集成开发环境建议在官网下载安装包CH340/CP2102 驱动USB 转串口芯片驱动具体看你的下载器芯片型号ESP8266 开发板支持包Arduino IDE 的板卡管理器中添加2.2 硬件清单硬件数量说明ESP-01S 模块1 块核心开发对象USB 转串口模块1 个推荐 CP2102 或 CH340必须支持 3.3V 输出杜邦线若干公对母或母对母均可面包板可选方便接线测试3.3V 稳压模块可选如果 USB 转串口供电能力不足时需要这里有一个很关键的注意事项ESP-01S 必须使用 3.3V 供电绝对不能用 5V 直接供电。很多 USB 转串口模块上有 5V 和 3.3V 两个引脚接线时务必确认接的是 3.3V。2.3 版本说明Arduino IDE 目前常见的有 1.8.x 系列和 2.x 系列。1.8.x 是一个稳定版本教程资料非常多2.x 版本界面更新编译速度更快但部分老电脑可能会有性能问题。本文以 Arduino IDE 1.8.19 为例进行讲解如果你使用的是 2.x 版本操作菜单名称基本一致不影响学习。ESP8266 开发板支持包的版本会持续更新不需要刻意追求最新。只要能够在 Arduino IDE 的“开发板管理器”中搜索并安装默认最新版本基本都可以正常使用。如果你之前安装过旧版本并且遇到编译报错可以考虑卸载后重新安装最新版。3. 安装 Arduino IDE 与串口驱动3.1 下载安装 Arduino IDEArduino 官网的下载地址是https://www.arduino.cc/en/software打开后可以看到 Windows、macOS、Linux 三个平台的安装包。Windows 用户建议选择 Windows Installer 版本因为安装程序会自动配置好文件关联和快捷方式。下载完成后双击安装按照默认选项一路点击“下一步”即可。安装过程中不需要额外手动配置环境变量Arduino IDE 会跟随安装自动处理。3.2 安装 USB 转串口驱动ESP-01S 本身没有 USB 接口它通过 UART 串口与电脑通信。我们通常使用 USB 转串口模块连接 ESP-01S 和电脑。这个模块上的核心芯片决定了需要安装什么驱动。市面常见的 USB 转串口芯片有CH340最常见国产很多便宜的模块都在用CP2102Silicon LabsCP2104PL2303判断方法是查看你手上的 USB 转串口模块上的芯片丝印也可以直接插上电脑打开设备管理器查看端口那里有没有出现新的 COM 口。如果没有出现 COM 口或者显示为黄色感叹号说明驱动没有安装正确。以 CH340 为例可以去搜索“CH340 驱动”下载安装安装后重新插拔 USB正常情况下设备管理器中会出现类似USB-SERIAL CH340 (COM3)的条目。3.3 验证驱动是否正常在 Windows 系统中按Win X选择“设备管理器”展开“端口COM 和 LPT”节点。如果能看到类似COM3的端口号说明 USB 转串口模块已经被电脑识别。这里要特别提醒一下不同电脑、不同 USB 口COM 号不一定相同。后面烧录时必须在 Arduino IDE 中选择正确的那个 COM 口否则会报错Board at COMxx is not available。4. 在 Arduino IDE 中添加 ESP8266 开发板支持Arduino IDE 默认并不支持 ESP8266 芯片我们需要通过“开发板管理器”安装第三方开发板支持包。这一步是整个环境搭建中最容易出问题的环节下面详细说明。4.1 打开开发板管理器打开 Arduino IDE依次点击菜单栏文件-首选项在“附加开发板管理器网址”一栏中填入 ESP8266 官方维护的 JSON 地址https://arduino.esp8266.com/stable/package_esp8266com_index.json这里需要注意两点如果你之前填写过其他开发板的地址例如 ESP32 的 JSON 地址不要把原来内容删掉应该用英文逗号分隔后追加新地址。填写后点击“确定”保存然后重新打开“开发板管理器”。4.2 安装 ESP8266 支持包操作步骤为点击菜单栏工具-开发板-开发板管理器。在弹出的搜索框中输入esp8266。找到ESP8266 by ESP8266 Community。点击“安装”按钮等待下载完成。安装过程需要联网下载文件时间长短取决于网络环境。由于下载源在国外部分用户可能遇到速度很慢甚至失败的情况。如果卡在下载阶段可以尝试更换网络环境或者使用国内镜像源部分社区会提供镜像地址这里不展开细说。安装完成后在工具-开发板菜单中就能看到Generic ESP8266 Module选项。4.3 选择正确的开发板类型ESP-01S 在 Arduino IDE 中有对应的板型选项。打开工具-开发板-Generic ESP8266 Module或者直接选择ESP8266 Dev Module。对于 ESP-01S 来说两种选择通常都可以编译成功但推荐使用Generic ESP8266 Module这也是很多 ESP-01S 教程中采用的板型。选择好开发板后还需要设置几个关键参数配置项推荐值说明Flash Size1M (64K SPIFFS)ESP-01S 常见 Flash 大小Flash ModeDIO兼容性更好Reset Methodck自动复位方式Upload Speed115200烧录波特率Port实际 COM 口与设备管理器一致这里要特别说明 Flash Size。如果选择错误可能会出现烧录后无法启动、程序反复重启的问题。ESP-01S 的 Flash 大小通常是 8Mbit也就是 1MB。如果你的模块是其他容量需要根据实际芯片丝印判断。保险的做法是先选择1M (64K SPIFFS)试烧一个程序如果异常再调整。5. 硬件接线ESP-01S 的烧录连接方式ESP-01S 只有两排排针引脚定义非常少引脚名称功能说明VCC3.3V 正极供电GND电源负极TX串口发送RX串口接收RST复位低电平有效GPIO0模式选择引脚 / 普通输入输出GPIO2普通输入输出CH_PD (EN)芯片使能引脚接高电平5.1 烧录模式与运行模式ESP8266 在上电时通过 GPIO0 的电平状态决定启动模式烧录模式GPIO0 接地低电平运行模式GPIO0 悬空或接高电平因此仅仅把 USB 转串口的 TX/RX 接到 ESP-01S 上是不够的还要在需要烧录时将 GPIO0 接到 GND。等烧录完成后断开 GPIO0 与 GND 的连接然后重新上电或复位模块才会运行用户程序。5.2 标准烧录接线USB 转串口模块与 ESP-01S 的接线如下USB 转串口ESP-01S3.3VVCCGNDGNDTXDRXRXDTX3.3VCH_PD (EN)GNDGPIO0烧录时接 GND特别提醒USB 转串口的 TX 接 ESP-01S 的 RXRXD 接 ESP-01S 的 TX这是串口通信交叉接线的标准方式。CH_PD 必须接高电平否则模块内部不工作。有些 USB 转串口模块没有额外的 3.3V 引脚此时可以共用电源但要注意电流是否足够。VCC 和 CH_PD 都需要 3.3V。5.3 关于供电电流的说明ESP8266 在 WiFi 发射瞬间电流可以达到 200mA 以上而很多 USB 转串口模块上的 3.3V 引脚是由板载 LDO 从 USB 5V 降压得到的输出电流可能只有 100mA 左右。如果烧录过程中出现模块反复复位、连不上串口、上传失败一个常见原因就是供电不足。此时有两个解决办法使用外部 3.3V 稳压模块单独给 ESP-01S 供电但必须共地。使用专门的 ESP-01S 烧录底座底座自带稳压电路接线更简单。从实际经验看市面上大多数 CP2102 模块的 3.3V 输出可以支撑 ESP-01S 烧录但如果发现不稳定优先检查供电。6. 第一个程序点亮 ESP-01S 板载 LED环境配置完成后我们通过一个最简单的 LED 闪烁程序验证整个工具链是否正常。6.1 编写代码打开 Arduino IDE在编辑窗口中输入以下代码// 文件用途ESP-01S 板载 LED 闪烁测试 // 注意ESP-01S 板载蓝色 LED 接在 GPIO1TX上 // 不过更方便的做法是用 GPIO2本示例用 GPIO2 验证 #define LED_PIN 2 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, LOW); // LED 点亮 delay(500); // 延时 500ms digitalWrite(LED_PIN, HIGH); // LED 熄灭 delay(500); // 延时 500ms }这里有一个容易让新手疑惑的点ESP8266 的 GPIO 输出 LOW 时点亮 LED输出 HIGH 时熄灭 LED。原因是板载 LED 通常接在 GPIO 与 3.3V 之间当 GPIO 输出低电平时LED 两端形成压差LED 点亮。6.2 编译并上传代码写好之后先点击工具栏中的“对勾”按钮编译确认代码没有语法错误。编译成功后选择好开发板类型和 COM 口点击“右箭头”按钮上传。上传过程中 Arduino IDE 会自动编译并调用烧录工具。如果一切正常IDE 底部的日志窗口会输出Writing at 0x00000000... (100%) Leaving... Hard resetting via RTS pin...这表示烧录成功模块已经复位并开始运行程序。6.3 验证结果烧录成功后将 GPIO0 从 GND 断开重新给模块上电。正常情况下可以观察到 ESP-01S 上的蓝色 LED 会以 0.5 秒为间隔闪烁。如果只是使用 AT 固件这个亮灯程序会覆盖掉 AT 固件。也就是说烧录完之后模块不再响应AT指令。这一点需要提前了解清楚如果后续想恢复 AT 固件需要重新烧录官方 AT 固件包。7. 第二次烧录通过串口输出验证通信对于很多初学者来说仅仅点亮 LED 还不够因为他们无法确定模块内部的串口通信是否正常。我们可以写一个串口输出的程序用来验证 USB 转串口模块和 ESP-01S 之间的收发链路。7.1 编写串口测试代码// 串口测试ESP-01S 上电后发送一段字符串 void setup() { // ESP8266 串口默认波特率使用 115200 Serial.begin(115200); Serial.println(); Serial.println(ESP-01S Serial Test OK!); Serial.println(Hello CSDN!); } void loop() { // 持续发送方便观察 Serial.println(Running...); delay(1000); }编译并上传。上传时仍需将 GPIO0 接到 GND。上传完成后重新上电打开 Arduino IDE 的串口监视器工具-串口监视器把串口监视器右下角的波特率设置为115200这时应该能看到模块不断输出内容。7.2 串口监视器的作用串口监视器是 Arduino 开发最常用的调试工具之一。它能显示模块通过串口发送的数据也能在输入框中输入内容并发送给模块。对于后续调试 WiFi 连接、MQTT 服务器通信、传感器数据采集等场景串口监视器是排查问题的最直接手段。注意串口监视器打开时会占用 COM 口。此时如果再次点击“上传”Arduino IDE 会提示端口被占用需要先关闭串口监视器再上传。8. 如果你拿到的是 AT 固件模块先测试再覆盖前面提到很多 ESP-01S 出厂时带有 AT 固件。在烧录自己的程序之前建议先使用串口工具测试一下模块是否能正常响应 AT 指令。这样做的好处是确认模块硬件正常。确认 USB 转串口模块工作正常。确认接线方式正确。测试方法将 GPIO0 悬空让模块进入运行模式上电后打开串口监视器波特率设置为115200在输入框中输入AT点击发送。如果模块正常响应串口监视器会显示OK除了AT还可以尝试以下指令指令预期响应功能ATOK测试通信ATGMR版本信息查询固件版本ATCWMODE?返回当前 WiFi 模式查询模式ATRST模块重启复位这里要特别提醒AT 指令对格式非常敏感在串口监视器中发送时如果输入框自带换行需要确认发送选项是“换行”或者“换行和回车”。如果发送后没有响应可以尝试切换不同的发送选项。如果模块已经烧录过用户程序那么它不会再响应 AT 指令。不要误以为模块坏了可以通过重新烧录 AT 固件的方式恢复。9. 常见问题与排查思路9.1 上传时报错A fatal error occurred: Failed to connect to ESP8266这是 ESP-01S 烧录中最常见的问题。出现这个错误时优先级最高的是先检查 GPIO0 是否已经接地。如果 GPIO0 没有进入烧录模式芯片会直接运行 Flash 里的现有程序不会响应烧录握手信号。具体排查顺序如下确认 USB 转串口模块的 TX 接 ESP-01S 的 RXRX 接 TX。确认 VCC 和 CH_PD 都接 3.3V。确认 GND 已经共地。确认 GPIO0 已经接到 GND。在 Arduino IDE 中点击上传看到Connecting........_____.....时按住 ESP-01S 的 RST 引脚接地再松开或重新上电一次。第 5 点是一个比较实用的技巧。因为 ESP-01S 上电后如果 GPIO0 状态不对或者模块已经运行了程序在握手阶段可能无法响应。点击上传后在等待连接阶段给模块手动复位一次可以提高成功率。9.2 上传成功后没有任何效果如果上传日志显示成功但模块没有按预期工作可以先区分是供电问题还是程序问题。观察板载 LED 是否点亮。使用万用表测量 VCC 是否为 3.3V。重新上电测试。检查 GPIO0 在运行模式下是否已经断开 GND。另外要注意不同 ESP-01S 模块的板载 LED 接法可能有差异。有些接在 GPIO1 上有些接在 GPIO2 上。如果程序写的是 GPIO2但你的模块 LED 恰好接在 GPIO1那么看起来就是没有反应。实际项目中不依赖板载 LED而是用万用表或外部 LED 确认程序是否运行。9.3 开发板管理器中没有 ESP8266 选项出现这种情况通常是在“附加开发板管理器网址”中没有填入 JSON 地址或者填写后没有生效。解决步骤打开文件-首选项检查附加开发板管理器网址是否包含https://arduino.esp8266.com/stable/package_esp8266com_index.json。点击确定后重新打开开发板管理器。如果仍然搜索不到关闭 Arduino IDE 后重新打开。确认网络可以正常访问外网。9.4 CH340 驱动安装后设备管理器仍显示感叹号这个问题在 Windows 上比较常见一般是驱动数字签名或驱动版本不匹配导致。可以尝试下载最新版 CH340 驱动以管理员身份运行安装。安装完成后重启电脑再次插入 USB 转串口模块。9.5 上传时报错error: espcomm_open failed出现espcomm_open failed通常意味着 Arduino IDE 无法打开指定的 COM 口。原因可能有串口监视器窗口没有关闭。COM 口号选择错误。其他程序占用了串口例如某些串口调试助手。解决办法就是关闭占用程序重新检查端口选择然后再次上传。9.6 烧录后程序反复重启如果程序在运行过程中不断重启多半是看门狗或供电不稳定导致。ESP8266 在 WiFi 连接时电流波动较大如果 3.3V 供电能力不足芯片会频繁掉电复位。解决方案是使用外部 3.3V 电源或者在 VCC 和 GND 之间并联一个 10uF 到 100uF 的电解电容和 0.1uF 陶瓷电容减小电压波动。9.7 常见问题速查表问题现象常见原因解决思路无法连接模块GPIO0 未接地烧录模式下将 GPIO0 接 GND上传失败串口被占用关闭串口监视器或其他串口工具上传失败端口选择错误在设备管理器中确认 COM 号上传失败TX/RX 接反交叉接线TXD - RXRXD - TX模块反复复位供电电流不足使用外部 3.3V 电源或烧录底座程序无反应板载 LED 引脚不同使用外部 LED 验证程序AT 指令无响应模块已烧录用户程序重新烧录 AT 固件10. 最佳实践与工程建议10.1 给模块做标记ESP-01S 模块体积很小引脚也少容易搞混。建议在模块上用记号笔标注 TX、RX、VCC、GND或者直接买一个标注清晰的防水标签贴上去。在实际项目中接线错误往往会造成模块烧毁。10.2 不要直接接触引脚ESP8266 是 3.3V 逻辑器件虽然内部部分引脚有保护但依然属于比较脆弱的芯片。在湿度较高或静电较多环境中尽量避免直接用手触摸芯片引脚。操作前可先触摸金属物体释放人体静电。10.3 使用独立供电尽量共地如果使用外部电源给 ESP-01S 供电务必把外部电源的 GND 与 USB 转串口模块的 GND 连接在一起。否则串口通信的参考地不一致会导致波特率正常但数据乱码甚至无法通信。10.4 建立自己的模板工程当 Arduino IDE 环境配置好之后建议把以下代码保存为模板以后每次新项目都从模板开始减少重复劳动// ESP-01S 标准模板 #include ESP8266WiFi.h const char* ssid your_wifi_ssid; const char* password your_wifi_password; void setup() { Serial.begin(115200); Serial.println(); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.print(Connected, IP address: ); Serial.println(WiFi.localIP()); } void loop() { // 主循环 }这个模板已经包含了 WiFi 连接的基本逻辑。后续在这个基础上做 HTTP 请求、MQTT 通信、传感器采集都会非常方便。10.5 定期备份固件如果你买到的模块自带 AT 固件而你的项目暂时不需要 AT 功能可以先把 AT 固件备份出来。市面上很多串口工具支持备份 Flash 内容备份后即使误烧录也可以恢复出厂状态。10.6 注意 GPIO 引脚的复用限制ESP-01S 对外可用的 GPIO 只有 GPIO0 和 GPIO2。这两个引脚在启动时承担特殊作用GPIO0 决定启动模式GPIO2 在启动时不能为低电平。因此在实际电路设计中不要在这两个引脚上接会影响上电时序的负载否则模块可能无法启动。10.7 关于烧录底座如果经常做 ESP-01S 开发强烈推荐购买一个 ESP-01S 烧录底座或继电器模块。烧录底座把 3.3V 稳压、CH_PD 上拉、GPIO0 开关都集成好了把模块插上去就可以烧录省去每次接线插拔的麻烦也能减少接线错误带来的损坏风险。11. 总结与后续学习方向到这里我们已经完成了以下内容了解了 ESP-01S 模块的基本特性和启动模式。安装并配置了 Arduino IDE 开发环境。安装了 CH340 或 CP2102 串口驱动。在 Arduino IDE 中添加了 ESP8266 开发板支持包。掌握了 ESP-01S 的烧录接线方式。成功烧录了 LED 闪烁程序和串口输出程序。整理了常见的烧录问题与排查方法。这套环境搭建完成后后续学习就可以围绕 ESP-01S 的实际应用展开。比较推荐的学习路径是先写一个简单的 WiFi 连接程序确认模块能连接路由器并获取 IP。然后尝试通过 HTTP 请求访问一个测试接口例如天气 API。接着可以使用 MQTT 协议连接公共测试服务器或本地搭建的服务器。最后结合继电器、传感器做一个完整的物联网设备。在整个学习过程中最需要重视的是“先确认硬件链路正常再写业务逻辑”。很多 ESP-01S 项目看起来是代码问题其实卡在供电不稳、接线错误、端口占用这些基础环节。希望这篇文章能帮你顺利迈过环境搭建这道门槛。
返回列表