打造智能家居空气卫士:ESPHome多合一空气质量监测方案

【免费下载链接】esphome ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems. 【免费下载链接】esphome 项目地址: https://gitcode.com/GitHub_Trending/es/esphome

你是否曾担心家中空气质量却苦于专业设备价格高昂?是否想实时掌握PM2.5、甲醛和TVOC(总挥发性有机物)浓度却不知从何入手?本文将带你用ESPHome构建一套经济实用的空气质量监测系统,仅需百元成本即可实现专业级监测功能。通过简单配置文件,你能在30分钟内完成从硬件接线到数据显示的全流程,让呼吸健康尽在掌握。

核心监测模块选型

ESPHome支持多种空气质量传感器,我们精选三类高性价比模块构建全方位监测网络:

1. PM2.5传感器:PMSX003系列

PMSX003是一款经典的激光粉尘传感器,能同时检测PM1.0、PM2.5和PM10浓度。其UART接口输出标准数据格式,ESPHome已内置完整驱动支持。

# PM2.5传感器配置示例 [tests/components/pmsx003/common.yaml](https://link.gitcode.com/i/03514137549f648e6d5967ba766cc28d)
sensor:
  - platform: pmsx003
    type: PMSX003
    pm_2_5:
      name: "室内PM2.5浓度"
    pm_10_0:
      name: "室内PM10浓度"
    update_interval: 30s

该传感器提供两种检测模式:主动模式(默认)每30秒自动输出数据,被动模式需手动触发。建议在配置中添加uart组件指定波特率为9600。

2. 甲醛与TVOC传感器:SM300D2

SM300D2是一款突破性的多参数传感器,集成了甲醛、TVOC、CO₂和温湿度检测功能,通过UART接口输出所有数据。这意味着只需一个传感器即可完成多种气体监测。

# 多合一气体传感器配置 [tests/components/sm300d2/common.yaml](https://link.gitcode.com/i/c062beb0ad58227df028fa5a9709da40)
sensor:
  - platform: sm300d2
    formaldehyde:
      name: "甲醛浓度"
      unit_of_measurement: "mg/m³"
      accuracy_decimals: 3
    tvoc:
      name: "TVOC浓度"
      unit_of_measurement: "ppb"
    pm_2_5:
      name: "PM2.5浓度"
    update_interval: 60s

SM300D2的独特之处在于内置了温度补偿算法,即使在温差较大的环境中也能保持测量精度。其甲醛检测范围为0-5mg/m³,分辨率达0.001mg/m³,完全满足室内环境监测需求。

3. 高精度TVOC传感器:SGP30

对于追求更高精度TVOC检测的场景,SGP30是理想选择。这款I²C接口传感器能检测低至0-60000ppb的TVOC浓度,并内置基线自动校准功能。

# SGP30传感器配置 [tests/components/sgp30/common.yaml](https://link.gitcode.com/i/3a6d9c712b320f210f36bf4a98749e4c)
sensor:
  - platform: sgp30
    i2c_id: i2c_bus
    tvoc:
      name: "室内TVOC"
      accuracy_decimals: 1
    eco2:
      name: "等效CO₂"
    update_interval: 5s

SGP30需要预热15分钟才能达到最佳检测状态,建议在配置中添加auto_calibration: true启用自动校准。

完整硬件接线方案

根据选择的传感器类型,以下是两种推荐的接线方案:

方案A:单传感器精简版(SM300D2)

如果追求极简配置,SM300D2单传感器即可实现全部功能:

ESP32引脚 SM300D2引脚 功能说明
3.3V VCC 电源输入
GND GND 接地
GPIO16 TX 传感器数据输出
GPIO17 RX 传感器指令输入
GPIO4 SET 模式控制(可选)

这种方案只需4根线即可完成连接,适合空间有限的场景。传感器默认波特率为9600bps,无需额外配置。

方案B:专业监测版(PMSX003+SGP30)

如需更高精度监测,可组合使用PMSX003(PM2.5)和SGP30(TVOC):

ESP32          PMSX003         SGP30
┌───┐          ┌───┐           ┌───┐
│   │          │   │           │   │
│ 5V├──────────┤VCC│           │   │
│GND├──────────┤GND├───────────┤GND│
│16 ├──────────┤TX │           │   │
│17 ├──────────┤RX │           │   │
│21 ├──────────────────────────┤SDA│
│22 ├──────────────────────────┤SCL│
│   │          │   │           │   │
└───┘          └───┘           └───┘

PMSX003需要5V电源供电,而SGP30使用3.3V,注意不要接错电压。I²C总线上还可同时连接其他I²C设备(如OLED显示屏),但总电流不应超过ESP32的3.3V输出能力(通常为500mA)。

配置文件编写详解

ESPHome采用YAML配置文件定义设备行为,以下是完整的空气质量监测配置示例:

esphome:
  name: air-monitor
  platform: ESP32
  board: nodemcu-32s

# 启用I²C总线(用于SGP30等设备)
i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

# 启用UART(用于PMSX003/SM300D2)
uart:
  - id: uart_bus
    tx_pin: GPIO17
    rx_pin: GPIO16
    baud_rate: 9600

sensor:
  # PM2.5传感器配置
  - platform: pmsx003
    uart_id: uart_bus
    type: PMSX003
    pm_2_5:
      name: "PM2.5浓度"
      device_class: "pm25"  # 设备类别标识 [esphome/components/sensor/__init__.py](https://link.gitcode.com/i/f8faba1db1d379e8241152d3a6ae4c7b)
      state_class: "measurement"
    pm_10_0:
      name: "PM10浓度"
      device_class: "pm10"  # 设备类别标识 [esphome/components/sensor/__init__.py](https://link.gitcode.com/i/f4e71d5bef0e1da73dd67fb67f40f35d)
  
  # 甲醛传感器配置
  - platform: sm300d2
    uart_id: uart_bus
    formaldehyde:
      name: "甲醛浓度"
      unit_of_measurement: "mg/m³"
      accuracy_decimals: 3
    tvoc:
      name: "TVOC浓度"
      device_class: "volatile_organic_compounds"  # 设备类别标识 [esphome/components/sensor/__init__.py](https://link.gitcode.com/i/91baa5df05222411b16d00c2daedaa35)

# WiFi配置
wifi:
  ssid: "你的WiFi名称"
  password: "你的WiFi密码"
  
  # 启用OTA更新
  ap:
    ssid: "AirMonitor Fallback"
    password: "fallbackpassword"

# 启用Web服务器查看实时数据
web_server:
  port: 80

# 启用Home Assistant API
api:
  password: "api_password"

# 启用日志输出
logger:
  level: INFO

配置文件中的device_class参数非常重要,它定义了传感器类型,使Home Assistant等系统能正确识别和处理数据。ESPHome支持多种空气质量相关的设备类别,完整列表可查看传感器组件源码

数据可视化与告警设置

收集到数据后,我们需要直观展示和及时告警:

Web服务器实时监控

配置中的web_server组件会在设备上创建一个小型网页服务器,访问ESP32的IP地址即可查看实时数据:

http://[设备IP地址]/

网页界面会显示所有已配置的传感器数据,并自动刷新。这对于调试和临时查看非常方便。

Home Assistant集成

通过api组件,设备可与Home Assistant无缝集成。添加后,你可以:

  • 在仪表盘添加空气质量卡片,设置不同污染物的颜色告警阈值
  • 创建自动化规则,如当PM2.5超过75μg/m³时自动开启空气净化器
  • 生成历史趋势图表,分析空气质量变化规律

本地告警(可选)

如需脱离Home Assistant使用,可添加LED和蜂鸣器实现本地告警:

# 本地告警配置示例
binary_sensor:
  - platform: template
    name: "PM2.5超标"
    lambda: return id(pm25).state > 75;
    
switch:
  - platform: gpio
    name: "告警LED"
    pin: GPIO2
    
automation:
  - trigger:
      platform: state
      entity_id: binary_sensor.pm2_5超标
      to: "on"
    then:
      - switch.turn_on: 告警LED
      - delay: 5s
      - switch.turn_off: 告警LED

安装与调试技巧

固件刷写

完成配置文件后,通过以下命令编译并刷写固件:

esphome run air_monitor.yaml

如果使用Docker,可通过项目提供的Dockerfile构建环境:

cd docker && docker build -t esphome .  # [docker/Dockerfile](https://link.gitcode.com/i/d297811a4cb2630760a271f80c75c50d)

常见问题排查

  1. 传感器无数据输出:检查UART波特率是否匹配,PMSX003默认9600,SM300D2默认9600或115200。

  2. 数据波动过大:增加filters: sliding_window_moving_average平滑数据:

sensor:
  - platform: pmsx003
    pm_2_5:
      name: "PM2.5浓度"
      filters:
        - sliding_window_moving_average:
            window_size: 5
            send_every: 5
  1. WiFi连接不稳定:尝试将power_save_mode: none添加到wifi配置中。

总结与进阶方向

本文介绍的ESPHome空气质量监测系统具有以下优势:

  • 低成本:全套硬件成本不到200元,仅为专业设备的1/10
  • 易扩展:可添加更多传感器如CO₂、温湿度等
  • 本地化:数据处理本地完成,保护隐私
  • 跨平台:支持Home Assistant、OpenHAB等主流智能家居系统

进阶探索方向:

  1. 电池供电:使用DeepSleep模式实现低功耗运行,搭配太阳能板实现永久续航
  2. 数据记录:添加SD卡模块实现本地数据存储
  3. 多节点网络:使用ESP-NOW协议组建传感器网络,覆盖更大面积
  4. AI预测:结合历史数据预测空气质量变化趋势

希望本文能帮助你构建属于自己的空气质量监测系统。如有任何问题,欢迎查阅ESPHome官方文档或在社区寻求帮助。呼吸健康,从实时监测开始!

如果你觉得这个项目有用,请点赞收藏,关注作者获取更多智能家居DIY教程。下期我们将介绍如何用这些数据控制空气净化器自动运行。

【免费下载链接】esphome ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems. 【免费下载链接】esphome 项目地址: https://gitcode.com/GitHub_Trending/es/esphome

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐