3、硬件选型与搭建:主控芯片选型(ESP32/Arduino),传感器选型(SHT30、PMS5003、MH-Z19B),面包板与接线实践
好,咱们进入实战环节。这一章,说白了就是「选什么零件」和「怎么把它们连起来」。很多新手容易卡在这一步——东西买回来一堆,不知道怎么下手。别急,我带你一步步捋清楚。
3.1 主控芯片:ESP32 还是 Arduino?
先聊主控。这是整个系统的大脑。我个人习惯,只要项目涉及联网,首选 ESP32。为什么?
- 自带 Wi-Fi 和蓝牙——省去外接模块的麻烦
- 双核处理器——跑传感器采集和网络通信不打架
- 价格亲民——十几块钱,比 Arduino Uno 还便宜
- Arduino IDE 兼容——你如果玩过 Arduino,上手零门槛
当然,Arduino 也不是不能用。如果你只是做原型验证,或者项目不需要联网,Arduino Uno/Nano 完全够用。但咱们这个课程要做「家庭环境监测与空气质量管理」,数据要上传、要远程查看,所以——我建议你直接上 ESP32。
3.2 传感器选型:三个关键指标
咱们要监测三个核心参数:温度湿度、PM2.5、二氧化碳。对应的传感器分别是:
| 参数 | 传感器型号 | 通信方式 | 精度/量程 |
|---|---|---|---|
| 温度 + 湿度 | SHT30 | I2C | ±0.3°C / ±2%RH |
| PM2.5 | PMS5003 | UART | 0~500μg/m³ |
| CO₂ | MH-Z19B | UART / PWM | 400~5000ppm |
SHT30:温湿度传感器
为什么选 SHT30 而不是 DHT11?嗯,这里要注意——DHT11 精度太差,误差能到 ±2°C,做环境监测基本是「图个乐」。SHT30 是 Sensirion 家的,I2C 接口,精度高、稳定性好。我在项目中用过几十个,没出过问题。
PMS5003:激光粉尘传感器
这是攀藤科技的经典款。激光散射原理,能测 PM1.0、PM2.5、PM10。注意它用的是 UART 串口通信,默认波特率 9600。接线时别接反了——TX 接 ESP32 的 RX,RX 接 ESP32 的 TX。
MH-Z19B:二氧化碳传感器
这个传感器是 NDIR(非色散红外)原理,测 CO₂ 很准。它支持 UART 和 PWM 两种输出方式。我建议用 UART,因为数据更直接。另外,它有个自动校准功能,但初次上电需要在 400ppm 环境下运行 20 分钟以上才能校准好。
3.3 面包板与接线实践
好,零件选好了,怎么连?我建议先用面包板搭原型,别急着焊板子。万一接错了,拔线重来就行,不心疼。
你需要准备的工具
- 面包板(830 孔或 400 孔都行)
- 杜邦线(公对公、公对母各若干)
- ESP32 开发板(推荐 NodeMCU-32S)
- 三个传感器(SHT30、PMS5003、MH-Z19B)
- USB 数据线(供电 + 下载程序)
接线步骤
- 供电:ESP32 的 3.3V 和 GND 分别接到面包板的电源轨和地轨。三个传感器都从电源轨取电。
- SHT30:VCC→3.3V,GND→GND,SCL→GPIO22,SDA→GPIO21
- PMS5003:VCC→5V(注意!它需要 5V),GND→GND,TX→GPIO16,RX→GPIO17
- MH-Z19B:VCC→5V,GND→GND,TX→GPIO18,RX→GPIO19
代码示例:读取 SHT30 数据
先来个最简单的,验证传感器能不能正常工作:
#include <Wire.h>
#include <Adafruit_SHT31.h>
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(115200);
if (!sht31.begin(0x44)) {
Serial.println("找不到 SHT30!");
while (1) delay(1);
}
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
Serial.print("温度: "); Serial.print(t);
Serial.print(" °C, 湿度: "); Serial.print(h);
Serial.println(" %");
delay(2000);
}
上传代码后,打开串口监视器。如果看到温度和湿度数据,说明接线没问题。如果显示「找不到 SHT30」,检查一下 I2C 地址——SHT30 默认是 0x44,有些版本是 0x45。
3.4 整体接线图(文字描述)
我习惯把接线画在纸上,但这里用文字描述一下:
- 面包板左侧:电源轨(红)接 3.3V,地轨(蓝)接 GND
- 面包板右侧:电源轨(红)接 5V,地轨(蓝)接 GND
- ESP32 插在面包板中间,GPIO 引脚用杜邦线引出
- 三个传感器分别插在面包板空余位置,用杜邦线连接到 ESP32
好了,硬件选型和搭建就到这里。下一章咱们开始写代码,把这三个传感器的数据都读出来,然后上传到云端。你先把接线搞定,有问题随时翻回来看看。