硬件组件与接线
硬件组件与接线
本节介绍工厂环境监测系统的硬件组件和接线方法。学习完成后,您将能够:
- 识别所需的所有硬件组件
- 掌握 ESP32 与各传感器的接线方法
- 理解 I2C 和 GPIO 通信接口的区别
- 验证硬件连接的正确性
在开始本节之前,请确保:
- 已了解 ESP32 的 GPIO 引脚功能
- 已准备以下硬件组件
- 具备基础的电子电路知识
- 已安装 Arduino IDE 或 PlatformIO
Hardware Components
Section titled “Hardware Components”Required Components
Section titled “Required Components”| 组件 | 推荐型号 | 功能 | 数量 |
|---|---|---|---|
| 微控制器 | ESP32 DevKit | 核心控制单元 | 1 |
| 温湿度传感器 | DHT22 (AM2302) | 测量温湿度 | 1 |
| 光照传感器 | BH1750 | 测量光照强度 | 1 |
| 面包板 | 830 孔 | 电路连接基板 | 1 |
| 杜邦线 | 公对母 | 模块到面包板连接 | 20 根 |
| 杜邦线 | 公对公 | 面包板内部连接 | 10 根 |
| USB 线 | Micro USB | 供电和编程 | 1 |
Optional Components
Section titled “Optional Components”| 组件 | 推荐型号 | 用途 |
|---|---|---|
| 继电器模块 | 5V 单路继电器 | 控制外部设备(风扇、空调) |
| 散热风扇 | 5V 电脑风扇 | 演示降温控制 |
| OLED 显示屏 | 128x64 I2C | 本地数据显示 |
Component Selection Guide
Section titled “Component Selection Guide”DHT11 vs DHT22 vs BME280:
| 特性 | DHT11 | DHT22 (AM2302) | BME280 |
|---|---|---|---|
| 温度精度 | ±2°C | ±0.5°C | ±0.3°C |
| 湿度精度 | ±5% RH | ±2% RH | ±1% RH |
| 温度范围 | 0-50°C | -40-80°C | -40-85°C |
| 采样频率 | 最大 1Hz | 最大 2Hz | 最大 10Hz |
| 气压测量 | 不支持 | 不支持 | 支持 |
| 通信接口 | 单总线 | 单总线 | I2C/SPI |
| 单价 | $1-2 | $3-5 | $4-6 |
| 适用场景 | 精度要求低的场景 | 一般监测场景 | 高精度多参数场景 |
售前提示:推荐时,DHT22 是性价比最佳的选择。只有在需要气压补偿(如精密制造车间)或更高精度时才推荐 BME280。
BH1750 光照传感器特点:
- I2C 接口,接线简单
- 测量范围:1-65535 lux
- 分辨率:高分辨率模式 1 lux
- 内置 ADC,直接输出数字值
- 可选地址:0x23(ADDR 接低)或 0x5C(ADDR 接高)
Wiring Diagram
Section titled “Wiring Diagram”Pin Connections
Section titled “Pin Connections”ESP32 DevKit DHT22 BH1750 Breadboard┌──────────┐ ┌────────┐ ┌────────┐│ 3.3V ├────────┤ VCC │ │ VCC │ ┌─────────┐│ │ │ │ │ │ │ 红线 3.3V ││ GND ├────────┤ GND │ │ GND │ ├─────────┤│ │ │ │ │ │ │ 黑线 GND ││ GPIO 4 ├────────┤ DATA │ │ │ ├─────────┤│ │ │ │ │ │ │ DHT22 数据││ GPIO 21├────────┼────────┼──────┤ SDA │ ├─────────┤│ │ │ │ │ │ │ I2C 数据 ││ GPIO 22├────────┼────────┼──────┤ SCL │ ├─────────┤│ │ │ │ │ │ │ I2C 时钟 ││ GPIO 18├────────┤ (可选连接继电器控制风扇) │ ├─────────┤└──────────┘ └────────┘ └────────┘ └─────────┘Connection Summary Table
Section titled “Connection Summary Table”| ESP32 Pin | 连接目标 | 说明 |
|---|---|---|
| 3.3V | DHT22 VCC, BH1750 VCC | 供电(注意总电流不超过 500mA) |
| GND | DHT22 GND, BH1750 GND | 共用接地 |
| GPIO 4 | DHT22 DATA | DHT 单总线数据引脚 |
| GPIO 21 | BH1750 SDA | I2C 数据线 |
| GPIO 22 | BH1750 SCL | I2C 时钟线 |
| GPIO 18 | 继电器控制端 (可选) | 风扇/空调控制 |
I2C Pull-Up Resistors
Section titled “I2C Pull-Up Resistors”BH1750 模块通常已内置 4.7kΩ 上拉电阻。如果使用裸芯片而不是模块,需要在 SDA 和 SCL 线上各添加一个 4.7kΩ 上拉电阻连接到 3.3V。
DHT22 Pull-Up Resistor
Section titled “DHT22 Pull-Up Resistor”DHT22 数据引脚需要一个 4.7kΩ-10kΩ 上拉电阻连接到 3.3V。大多数 DHT22 模块已内置此电阻,如果购买的是裸传感器,需要额外添加。
Wiring Steps
Section titled “Wiring Steps”Step 1: 面包板供电线路
Section titled “Step 1: 面包板供电线路”1. 将 ESP32 插入面包板一侧2. 用红线将 ESP32 的 3.3V 引脚连接到面包板的红色电源轨3. 用黑线将 ESP32 的 GND 引脚连接到面包板的蓝色接地轨4. 确认电源轨和接地轨在整个面包板上连通Step 2: 连接 DHT22
Section titled “Step 2: 连接 DHT22”1. 将 DHT22 模块插入面包板2. 从电源轨 (3.3V) 连接红线到 DHT22 VCC 引脚3. 从接地轨 (GND) 连接黑线到 DHT22 GND 引脚4. 从 GPIO 4 (ESP32) 连接杜邦线到 DHT22 DATA 引脚Step 3: 连接 BH1750
Section titled “Step 3: 连接 BH1750”1. 将 BH1750 模块插入面包板2. 从电源轨 (3.3V) 连接红线到 BH1750 VCC 引脚3. 从接地轨 (GND) 连接黑线到 BH1750 GND 引脚4. 从 GPIO 21 (ESP32) 连接杜邦线到 BH1750 SDA 引脚5. 从 GPIO 22 (ESP32) 连接杜邦线到 BH1750 SCL 引脚验证硬件连接
Section titled “验证硬件连接”// 在 Arduino IDE 中上传此测试代码验证连接#include <Wire.h>#include <DHT.h>
#define DHTPIN 4#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(115200); Wire.begin(); dht.begin(); Serial.println("Sensor Test Started");}
void loop() { // 测试 DHT22 float h = dht.readHumidity(); float t = dht.readTemperature();
// 测试 BH1750 (通过 I2C 扫描) Wire.beginTransmission(0x23); byte error = Wire.endTransmission();
Serial.print("Temperature: "); Serial.print(t); Serial.print("°C, Humidity: "); Serial.print(h); Serial.print("%, BH1750 Address: ");
if (error == 0) { Serial.println("0x23 - OK"); } else { Serial.println("0x23 - NOT FOUND"); }
delay(3000);}预期输出(打开串口监视器,波特率 115200):
Sensor Test StartedTemperature: 26.5°C, Humidity: 62.3%, BH1750 Address: 0x23 - OKTemperature: 26.6°C, Humidity: 62.1%, BH1750 Address: 0x23 - OKIssue 1: 传感器读取为 NaN
Section titled “Issue 1: 传感器读取为 NaN”症状:DHT 传感器返回 nan 或 -999
可能原因:
- 接线错误或接触不良
- DHT22 上拉电阻缺失
- 采样间隔太短(DHT22 至少间隔 2 秒)
解决方案:
- 检查所有连线是否牢固插入面包板
- 确认 DHT22 的 DATA 引脚有 4.7kΩ 上拉电阻
- 确保读取间隔 ≥ 2 秒
Issue 2: I2C 设备未找到
Section titled “Issue 2: I2C 设备未找到”症状:BH1750 在 I2C 扫描中未显示
可能原因:
- I2C 地址错误(默认 0x23,ADDR 接高时 0x5C)
- SDA/SCL 引脚接反
- 模块供电不足
解决方案:
- 使用 I2C 扫描代码检测设备地址
- 检查 SDA 接 GPIO 21、SCL 接 GPIO 22
- 确保模块供电电压为 3.3V
Issue 3: ESP32 持续重启
Section titled “Issue 3: ESP32 持续重启”症状:ESP32 反复重启,串口输出乱码
可能原因:
- 供电不足(USB 线质量差)
- 传感器短路
- GPIO 电平冲突
解决方案:
- 更换 USB 数据线(确保支持数据传输)
- 断开所有传感器连线,逐个排查
- 使用外部 5V 电源供电
- ✅ 推荐: 使用带屏蔽的杜邦线减少信号干扰
- ✅ 推荐: DHT22 和 ESP32 之间的连线控制在 20cm 以内
- ✅ 推荐: 传感器模块先在桌面测试,再安装到最终位置
- ❌ 避免: 传感器与电机、继电器等高干扰设备共用电源
- ❌ 避免: 在通电状态下插拔传感器模块
- ❌ 避免: GPIO 输入电压超过 3.3V(否则可能损坏 ESP32)
Summary
Section titled “Summary”本节要点总结:
- 核心硬件:ESP32 + DHT22(温湿度)+ BH1750(光照)
- 接线要点:DHT22 使用 GPIO 单总线,BH1750 使用 I2C 接口
- 供电要求:所有传感器使用 3.3V,总电流不超过 500mA
- 验证方法:通过串口测试代码验证每个传感器的连接