1. 课程导论与硬件准备:ESP32 开发板选型、传感器模块清单、开发环境搭建

各位同学,欢迎来到《ESP32 OTA 升级与传感器驱动项目实战》的第一章。

我是你们这门课的主讲。做了十来年嵌入式,从 51 单片机一路折腾到现在的双核 RISC-V,踩过的坑比走过的路还多。今天咱们要聊的 ESP32,说实话,是我个人觉得 IoT 领域里性价比最高的芯片之一。你想想看,一个几块钱的模组,集成了 WiFi、蓝牙、双核处理器,还能跑 FreeRTOS——这在十年前根本不敢想。

1.1 为什么选 ESP32 做 OTA 项目?

很多初学者会问:做 OTA 升级,用 STM32 加个 WiFi 模块不行吗?当然可以。但我个人习惯是,能用单芯片解决的问题,绝不搞多芯片方案。ESP32 自带 WiFi 协议栈,硬件加密引擎,还有 OTA 分区表支持——这些特性让远程升级变得非常顺手。

我在一个智能农业项目中用过 ESP32 做远程固件更新。设备部署在几十公里外的蔬菜大棚里,总不能每次改个 bug 都跑一趟吧?OTA 就是干这个的。说白了,这门课的核心就是让你学会:怎么把新代码安全、可靠地送到千里之外的设备上。

课程核心目标:

  • 掌握 ESP32 的 OTA 升级机制(HTTP / HTTPS / 本地)
  • 学会驱动常见传感器(温湿度、光照、气压等)
  • 搭建完整的端到端 IoT 数据采集与远程更新系统

1.2 ESP32 开发板选型指南

市面上的 ESP32 开发板五花八门,我见过有人买了不兼容的板子,折腾两天连灯都点不亮。这里我直接给出一份我实测过的选型清单。

型号 Flash 大小 PSRAM 适用场景 我的推荐指数
ESP32-DevKitC V4 4MB 无 入门学习、简单传感器 ⭐⭐⭐⭐
ESP32-WROOM-32 4MB / 8MB 可选 8MB OTA 升级 + 多传感器 ⭐⭐⭐⭐⭐
ESP32-S3-DevKitC-1 8MB / 16MB 8MB / 16MB 需要 AI 加速或大内存 ⭐⭐⭐⭐
NodeMCU-32S 4MB 无 低成本原型验证 ⭐⭐⭐

我的建议:如果你预算允许,直接买 ESP32-WROOM-32 模组加官方开发板。Flash 至少 4MB,因为 OTA 需要双分区(每个分区至少 1.5MB),空间太小会非常痛苦。我曾经为了省几块钱买了 2MB 的板子,结果分区表怎么调都放不下固件——最后只能换板子,得不偿失。

1.3 传感器模块清单

这门课我们会用到几个经典传感器。选它们的原因很简单:便宜、资料多、I2C/SPI 接口通用性强。你学会了这些,其他传感器基本就是换寄存器地址的事。

  • DHT22(温湿度传感器)——单总线协议,精度 ±0.5°C,适合入门
  • BMP280(气压/温度传感器)——I2C 接口,常用于气象站
  • BH1750(光照强度传感器)——I2C 接口,数字输出,不用算 ADC
  • HC-SR04(超声波测距)——GPIO 触发,测距范围 2cm~400cm
  • SSD1306(0.96寸 OLED 显示屏)——I2C 接口,128x64 分辨率,调试利器

避坑提醒:DHT22 的时序要求很严格。我曾经在 FreeRTOS 任务里直接读它,结果因为任务切换导致时序错乱,读出来的湿度是 999%。解决办法是:读传感器时关中断,或者用硬件定时器辅助。后面章节我会专门讲这个。

1.4 开发环境搭建

环境搭建是新手最容易卡住的地方。我见过有人在 Arduino IDE 里装 ESP32 支持包,装了一天报错。这里我给出两种方案,你选一个就行。

方案一:Arduino IDE(推荐新手)

  1. 下载 Arduino IDE(版本 2.x 以上,界面更友好)
  2. 打开 文件 → 首选项,在「附加开发板管理器网址」填入:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. 工具 → 开发板 → 开发板管理器,搜索 ESP32,安装 esp32 by Espressif Systems
  4. 选择开发板:ESP32 Dev Module
  5. 写个 Blink 程序验证:
void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}

小技巧:如果下载支持包很慢,可以手动下载离线包放到 %LOCALAPPDATA%/Arduino15/staging/packages 目录下。嗯,这个方法我用了好几年,省了不少时间。

方案二:ESP-IDF(适合进阶/生产环境)

ESP-IDF 是乐鑫官方框架,功能更全,但配置也复杂些。我个人习惯用 ESP-IDF 做正式项目,Arduino 做快速原型。

  1. 安装 Python 3.8+ 和 Git
  2. 打开终端,运行:
    git clone --recursive https://github.com/espressif/esp-idf.git
  3. 进入目录,运行安装脚本:
    ./install.sh(Windows 用 install.bat)
  4. 设置环境变量:. ./export.sh
  5. 创建项目:idf.py create-project my_ota_project
  6. 编译:idf.py build
  7. 烧录:idf.py -p COM3 flash(端口号根据你的系统调整)

注意:ESP-IDF 的路径不要有中文和空格。我之前有个同事把项目放在「桌面/项目/ESP32」下,结果编译报错找不到头文件——折腾半天才发现是路径问题。

1.5 本章知识体系总览

下面这张图概括了第一章的核心内容。你可以把它当作整个课程的「地图」——后面每一章都会在这个框架里展开。

第一章:课程导论与硬件准备 硬件选型 传感器清单 环境搭建 ESP32-DevKitC ESP32-WROOM-32 NodeMCU-32S DHT22 / BMP280 BH1750 / HC-SR04 SSD1306 OLED Arduino IDE ESP-IDF 驱动 / 工具链 💡 学习路径建议 新手:Arduino IDE → 传感器 进阶:ESP-IDF → OTA 实战 两者可并行学习

1.6 写在开始之前

这门课一共 30 章,从硬件选型一直讲到完整的 OTA 升级系统部署。每一章我都会把代码和原理拆开揉碎了讲,也会把我自己踩过的坑、走过的弯路分享给你。

你不需要一开始就懂所有东西。嵌入式开发就是这样——先动手,再理解。把环境搭好,把灯点亮,后面的事自然就顺了。

好,咱们开始吧。