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(推荐新手)
- 下载 Arduino IDE(版本 2.x 以上,界面更友好)
- 打开 文件 → 首选项,在「附加开发板管理器网址」填入:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 工具 → 开发板 → 开发板管理器,搜索 ESP32,安装 esp32 by Espressif Systems
- 选择开发板:ESP32 Dev Module
- 写个 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 做快速原型。
- 安装 Python 3.8+ 和 Git
- 打开终端,运行:
git clone --recursive https://github.com/espressif/esp-idf.git - 进入目录,运行安装脚本:
./install.sh(Windows 用install.bat) - 设置环境变量:
. ./export.sh - 创建项目:
idf.py create-project my_ota_project - 编译:
idf.py build - 烧录:
idf.py -p COM3 flash(端口号根据你的系统调整)
注意:ESP-IDF 的路径不要有中文和空格。我之前有个同事把项目放在「桌面/项目/ESP32」下,结果编译报错找不到头文件——折腾半天才发现是路径问题。
1.5 本章知识体系总览
下面这张图概括了第一章的核心内容。你可以把它当作整个课程的「地图」——后面每一章都会在这个框架里展开。
1.6 写在开始之前
这门课一共 30 章,从硬件选型一直讲到完整的 OTA 升级系统部署。每一章我都会把代码和原理拆开揉碎了讲,也会把我自己踩过的坑、走过的弯路分享给你。
你不需要一开始就懂所有东西。嵌入式开发就是这样——先动手,再理解。把环境搭好,把灯点亮,后面的事自然就顺了。
好,咱们开始吧。