一、课程导论与硬件准备:ESP32 开发板介绍、传感器选型与开发环境搭建
各位同学,欢迎来到《ESP32 多传感器数据采集与 MQTT 协议驱动开发实战》的第一章。
做 IoT 开发这些年,我见过太多人一上来就写代码,结果硬件选型不对、引脚冲突、供电不足,折腾半天连个温度都读不出来。说白了,硬件准备这一步没走稳,后面全是坑。
这一章,咱们先把地基打牢。我会带着你认识 ESP32 这颗芯片,聊聊怎么选传感器,再把开发环境搭好。嗯,跟着我的节奏来,别急。
1.1 ESP32 开发板:为什么选它?
ESP32 是乐鑫科技推出的双核 Wi-Fi + 蓝牙芯片。我最早用 ESP8266 做项目,后来换成 ESP32,感觉就像从自行车换成了摩托车。你想想看,同样是几十块钱的板子,ESP32 多了蓝牙、双核、更多 GPIO、还有硬件加密加速器,性价比确实高。
我个人习惯把 ESP32 开发板分成三类,方便你快速定位:
| 类型 | 代表型号 | 适用场景 | 我的建议 |
|---|---|---|---|
| 基础型 | ESP32-DevKitC V4 | 学习、原型验证 | 入门首选,引脚全引出 |
| 迷你型 | ESP32-S2-Saola-1 | 低功耗、小体积 | 注意 S2 是单核,无蓝牙 |
| 工业型 | ESP32-WROOM-32E | 量产、恶劣环境 | 稳定性好,建议批量用 |
1.2 传感器选型:DHT22、BMP280、MQ 系列
传感器选型这件事,说白了就是「场景决定参数」。咱们这门课要采集温湿度、气压和空气质量,我挑了三款经典传感器,都是经过大量项目验证的。
1.2.1 DHT22:温湿度传感器
DHT22 比 DHT11 贵一点,但精度和稳定性好太多。DHT11 的湿度误差 ±5%,DHT22 能做到 ±2%。我在一个农业大棚项目里用过 DHT11,数据跳得厉害,后来全换成 DHT22 才稳定下来。
- 接口: 单总线,只需一个 GPIO
- 量程: 温度 -40~80°C,湿度 0~100%RH
- 采样周期: 至少 2 秒一次,别读太快
1.2.2 BMP280:气压与温度传感器
BMP280 是博世出品,I2C/SPI 接口,精度高、体积小。我常用它做海拔估算,配合 GPS 做室内定位补偿。注意 BMP280 的 I2C 地址是 0x76 或 0x77,取决于 SDO 引脚电平。
- 接口: I2C(默认 0x76)或 SPI
- 气压精度: ±1 hPa
- 温度精度: ±0.5°C
1.2.3 MQ 系列:气体传感器
MQ 系列是模拟输出型气体传感器,通过加热金属氧化物半导体来检测气体浓度。MQ-2 检测可燃气体和烟雾,MQ-135 检测空气质量(NH3、CO2 等)。
这里有个关键点:MQ 传感器需要预热。刚上电时输出不稳定,我一般等 3-5 分钟再开始读数。另外,它功耗较高,用电池供电的项目要慎重。
| 传感器 | 检测对象 | 输出类型 | 预热时间 |
|---|---|---|---|
| MQ-2 | 可燃气体、烟雾 | 模拟电压 | ≥3 分钟 |
| MQ-135 | NH3、CO2、苯 | 模拟电压 | ≥5 分钟 |
| MQ-7 | 一氧化碳 | 模拟电压 | ≥3 分钟 |
1.3 开发环境搭建:Arduino IDE 与 ESP-IDF
开发 ESP32 主要有两条路:Arduino IDE 和 ESP-IDF。我个人的经验是:快速原型用 Arduino IDE,正式产品用 ESP-IDF。咱们这门课以 Arduino IDE 为主,但我会带你看看 ESP-IDF 的工程结构,方便你后续进阶。
1.3.1 Arduino IDE 搭建步骤
- 下载并安装 Arduino IDE(建议 2.x 版本)
- 打开「文件」→「首选项」,在「附加开发板管理器网址」中添加:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - 打开「工具」→「开发板」→「开发板管理器」,搜索 ESP32 并安装
- 选择开发板:ESP32 Dev Module
- 选择端口:在设备管理器中查看 COM 口
C:\Users\用户名\AppData\Local\Arduino15\staging\packages 目录下。我经常这么干,省时间。
1.3.2 ESP-IDF 环境简介
ESP-IDF 是乐鑫官方的开发框架,功能更全,但配置也复杂些。如果你以后要做量产产品,建议学一下。这里先展示一个最简单的工程结构:
my_project/
├── CMakeLists.txt # 顶层构建文件
├── main/
│ ├── CMakeLists.txt # 组件构建文件
│ └── main.c # 主程序
├── components/ # 自定义组件
└── sdkconfig # 配置项
安装 ESP-IDF 推荐用乐鑫的 vscode 插件,一键配置环境。我记得第一次手动配环境时折腾了整整一下午,后来发现插件版十分钟搞定。
1.4 本章知识体系总览
下面这张图把本章的核心内容串起来了。你可以把它当作一张地图,后面每学一个知识点,都能在这张图上找到位置。
1.5 硬件连接快速参考
最后,给你一张硬件接线表。咱们后面每一章都会用到这个连接方案,建议你保存下来。
| 传感器 | ESP32 引脚 | 传感器引脚 | 备注 |
|---|---|---|---|
| DHT22 | GPIO 4 | DATA | 需 4.7kΩ 上拉电阻 |
| BMP280 | GPIO 21 (SDA) GPIO 22 (SCL) |
SDA, SCL | I2C 模式,VCC 接 3.3V |
| MQ-2 / MQ-135 | GPIO 34 (ADC) | AO | 模拟输出,VCC 接 5V |