一、课程导论与硬件准备:ESP32 开发板介绍、传感器选型与开发环境搭建

各位同学,欢迎来到《ESP32 多传感器数据采集与 MQTT 协议驱动开发实战》的第一章。

做 IoT 开发这些年,我见过太多人一上来就写代码,结果硬件选型不对、引脚冲突、供电不足,折腾半天连个温度都读不出来。说白了,硬件准备这一步没走稳,后面全是坑。

这一章,咱们先把地基打牢。我会带着你认识 ESP32 这颗芯片,聊聊怎么选传感器,再把开发环境搭好。嗯,跟着我的节奏来,别急。

本章核心目标: 完成硬件选型与开发环境搭建,确保第一行代码能顺利烧录进 ESP32。

1.1 ESP32 开发板:为什么选它?

ESP32 是乐鑫科技推出的双核 Wi-Fi + 蓝牙芯片。我最早用 ESP8266 做项目,后来换成 ESP32,感觉就像从自行车换成了摩托车。你想想看,同样是几十块钱的板子,ESP32 多了蓝牙、双核、更多 GPIO、还有硬件加密加速器,性价比确实高。

我个人习惯把 ESP32 开发板分成三类,方便你快速定位:

类型 代表型号 适用场景 我的建议
基础型 ESP32-DevKitC V4 学习、原型验证 入门首选,引脚全引出
迷你型 ESP32-S2-Saola-1 低功耗、小体积 注意 S2 是单核,无蓝牙
工业型 ESP32-WROOM-32E 量产、恶劣环境 稳定性好,建议批量用
避坑提示: 买开发板时注意看 USB 转串口芯片。CP2102 和 CH340 都行,但有些廉价板用 CH340G 驱动容易掉线。我曾经被这个问题坑过,调试一整天,最后发现是驱动版本不对。

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 分钟
重要提醒: MQ 传感器内部有加热丝,工作电流可达 150mA 以上。如果同时接多个 MQ 传感器,建议用外部电源供电,别直接从 ESP32 的 3.3V 引脚取电,否则可能烧坏板载稳压器。

1.3 开发环境搭建:Arduino IDE 与 ESP-IDF

开发 ESP32 主要有两条路:Arduino IDE 和 ESP-IDF。我个人的经验是:快速原型用 Arduino IDE,正式产品用 ESP-IDF。咱们这门课以 Arduino IDE 为主,但我会带你看看 ESP-IDF 的工程结构,方便你后续进阶。

1.3.1 Arduino IDE 搭建步骤

  1. 下载并安装 Arduino IDE(建议 2.x 版本)
  2. 打开「文件」→「首选项」,在「附加开发板管理器网址」中添加:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. 打开「工具」→「开发板」→「开发板管理器」,搜索 ESP32 并安装
  4. 选择开发板:ESP32 Dev Module
  5. 选择端口:在设备管理器中查看 COM 口
小技巧: 安装 ESP32 包时如果下载慢,可以手动下载离线包放到 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章 知识体系结构图 ESP32 多传感器采集 ESP32 开发板 基础型 · 迷你型 · 工业型 传感器选型 DHT22 · BMP280 · MQ系列 开发环境搭建 Arduino IDE · ESP-IDF 目标:硬件就绪,环境可编译,传感器可通信

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
特别注意: ESP32 的 ADC 引脚输入范围是 0~3.3V。MQ 传感器输出最高 5V,必须用电阻分压或电平转换,否则会烧坏 GPIO。我见过有人直接接上去,芯片瞬间冒烟。