1. 课程导学与环境搭建

各位同学好,我是老周。做嵌入式十几年了,从最早的 8051 一路折腾到现在的双核 Xtensa。说实话,ESP32 是我见过最「折腾得起」的芯片——性能够用、外设丰富、价格还便宜。但越是这样,坑也越多。

这一章我们不急着写代码。先把家伙事儿备齐,把概念理清。你想想看,工具没选对、环境没配好,后面调试起来那叫一个痛苦。我在项目里吃过这个亏,所以开篇咱们稳扎稳打。

1.1 ESP32 开发板选型:别买错了

市面上的 ESP32 开发板五花八门。我建议你按项目需求来选,别只看价格。

型号 Flash 大小 PSRAM 适用场景 我的建议
ESP32-DevKitC V4 4MB 无 入门、简单传感器 学习首选,资料最多
ESP32-WROVER-B 8MB 8MB Web 服务器、大文件存储 本课程推荐,跑 SPIFFS 很稳
ESP32-S3-DevKitC-1 16MB 8MB 需要更多算力、LCD 显示 新项目可以考虑
ESP32-C3-DevKitM-1 4MB 无 低功耗、简单 WiFi 注意不支持 PSRAM
⚠️ 避坑提醒: 我曾经买过一批廉价 ESP32 模组,Flash 标注 16MB,实际只有 4MB。烧录 SPIFFS 镜像时死活写不进去。后来一查,是山寨芯片。所以,尽量从官方渠道或靠谱代理商拿货。

我个人习惯用 ESP32-WROVER-B 做原型验证。8MB PSRAM 跑异步服务器时,内存压力小很多。如果你手头只有 DevKitC V4,也能学,就是后面做大文件上传时可能会卡。

1.2 开发环境配置:Arduino IDE vs ESP-IDF

很多新手会纠结选哪个。我的看法很简单:

  • Arduino IDE:上手快,库多,适合快速验证想法。本课程前半部分用它。
  • ESP-IDF:功能全,调试能力强,适合做产品。课程后半部分会切过去。

1.2.1 Arduino IDE 环境搭建

步骤其实就三步:

  1. 下载安装 Arduino IDE(建议 2.x 版本,界面清爽很多)
  2. 添加 ESP32 开发板地址:https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. 在「开发板管理器」中搜索 ESP32,安装最新版
💡 小技巧: 安装完成后,先选一块板子(比如 ESP32 Dev Module),然后打开「文件」→「示例」→「ESP32」→「SPIFFS_Test」,编译一次。如果能通过,说明环境没问题。我第一次配环境时,卡在下载包上——国内网络慢。后来换了镜像源,几分钟搞定。

1.2.2 ESP-IDF 环境搭建

ESP-IDF 稍微复杂一点。我建议用 VS Code + ESP-IDF 插件的方式:

  • 安装 VS Code
  • 安装 Espressif IDF 插件
  • 在插件里选择「Configure ESP-IDF Extension」,自动下载工具链

嗯,这里要注意:ESP-IDF 的版本。我踩过坑——v4.4 和 v5.0 的 SPIFFS API 有变化。本课程基于 ESP-IDF v5.0.1,如果你用其他版本,遇到编译报错别慌,先看 API 文档。

1.3 SPIFFS 概念扫盲:文件系统怎么跑在 Flash 上?

SPIFFS 全称是 SPI Flash File System。说白了,就是把 Flash 芯片当成一个小硬盘用。你可以在上面创建文件、读写数据、删除文件。

为什么会需要它?

  • ESP32 的 Flash 除了存程序,还有剩余空间
  • Web 服务器需要 HTML、CSS、JS 文件
  • 配置参数、日志数据需要持久化存储

我刚开始做物联网项目时,习惯把网页代码直接写在程序里。结果改个按钮颜色都要重新编译、烧录。后来换成 SPIFFS,爽多了——网页文件单独上传,程序不用动。

📌 核心要点: SPIFFS 是「只读」友好的文件系统。虽然支持写入,但频繁写入会磨损 Flash。所以,静态网页放 SPIFFS,动态数据放 Preferences 或 SD 卡。

1.4 异步服务器概念扫盲:别再阻塞了

传统的 ESP32 Web 服务器,用的是 WiFiServer + WiFiClient。每个请求都要等上一个处理完。如果某个客户端慢,整个服务器就卡住了。

异步服务器不一样。它用事件驱动的方式:

  • 收到请求后,注册一个回调函数
  • CPU 立刻回去处理其他事情
  • 等数据准备好了,再执行回调

你想想看,这就像你去餐厅吃饭。同步模式是:一个厨师做完你的菜,才做下一个。异步模式是:厨师同时接好几个单,哪个菜好了就出哪个。

在 ESP32 上,最常用的异步服务器库是 ESPAsyncWebServer。它和 SPIFFS 配合起来,简直是绝配——网页文件从 SPIFFS 读取,通过异步服务器发送,不占内存、不卡顿。

1.5 本章知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当成一张地图,后面每章都会回到这里。

第一章知识体系结构图 第一章:课程导学与环境搭建 硬件选型 环境搭建 概念扫盲 DevKitC V4 WROVER-B S3 / C3 系列 Arduino IDE ESP-IDF VS Code 插件 SPIFFS 异步服务器 事件驱动 📌 本章核心目标 选对开发板 → 配好开发环境 → 理解 SPIFFS 和异步服务器原理 为后续章节的实战调试打下坚实基础

1.6 本章小结

这一章我们做了三件事:

  • 选了板子:我推荐 WROVER-B,但其他板子也能用
  • 搭了环境:Arduino IDE 和 ESP-IDF 二选一,或者都装
  • 扫了盲:SPIFFS 是文件系统,异步服务器是事件驱动

别急着往下翻。先把环境配好,编译一个 SPIFFS 示例跑通。我当年就是图快,跳过这一步,结果后面调试时才发现工具链有问题,浪费了两天时间。