Air Quality Sensor mit ESPHome

ESP32 Dev Board
Ein vielseitiges Mikrocontroller-Board mit integriertem Wi-Fi und Bluetooth, ideal für IoT-Projekte.

PMS7003 Sensor

Ein Partikelzähler, der Feinstaubkonzentrationen misst.

MH-Z19 CO2 Sensor

Ein Infrarot-CO₂-Sensor zur Messung der Kohlendioxidkonzentration.

BMP280 Sensor

Ein Sensor zur Messung von Temperatur und Luftdruck.

SGP41 Sensor

Ein Sensor zur Messung von VOCs (flüchtige organische Verbindungen) und NOx.

4.7kΩ Pull-up Widerstände

Widerstände zur Stabilisierung der I²C-Kommunikation.

10µF Keramikkondensator

Kondensator zur Glättung der Spannungsversorgung.

100µF Elektrolytkondensator

Kondensator zur Stabilisierung der Stromversorgung des ESP32.

0.1µF Keramikkondensator

Kondensator zur Filterung von Hochfrequenzstörungen.

 

Verkabelung und Montage:

  • ESP32 Dev Board: Verbinden Sie die I²C-Pins (SDA und SCL) des ESP32 mit den entsprechenden Pins der I²C-Sensoren.

  • PMS7003 Sensor: Verbinden Sie die UART-Pins des ESP32 (TX und RX) mit den entsprechenden Pins des PMS7003 Sensors.

  • MH-Z19 CO2 Sensor: Verbinden Sie die UART-Pins des ESP32 (TX und RX) mit den entsprechenden Pins des MH-Z19 Sensors.

  • BMP280 und SGP41 Sensoren: Verbinden Sie die I²C-Pins des ESP32 mit den entsprechenden Pins der Sensoren.

  • Pull-up Widerstände: Platzieren Sie einen 4.7kΩ Widerstand zwischen SDA und VCC sowie einen zwischen SCL und VCC für die I²C-Kommunikation.

  • Kondensatoren:

    • Platzieren Sie einen 10µF Keramikkondensator nahe dem ESP32 zwischen VCC und GND zur Glättung der Spannungsversorgung.
    • Platzieren Sie einen 100µF Elektrolytkondensator nahe dem ESP32 zwischen VCC und GND zur Stabilisierung der Stromversorgung.
    • Platzieren Sie einen 0.1µF Keramikkondensator nahe dem ESP32 zwischen VCC und GND zur Filterung von Hochfrequenzstörungen.

Hinweis: Achten Sie darauf, die Kondensatoren mit der richtigen Polarität zu verbinden, insbesondere bei Elektrolytkondensatoren.

esphome:
  name: air-quality-sensor
  min_version: "2024.12.4"

esp32:
  board: esp32dev
  framework:
    type: arduino
    version: recommended

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: LIGHT
  output_power: 13dBm

logger:
  level: DEBUG

api:

ota:
  platform: esphome
  password: "OTAOTA4711!"

uart:
  - id: uart_pms7003
    tx_pin: GPIO17
    rx_pin: GPIO16
    baud_rate: 9600
    data_bits: 8
    stop_bits: 1

  - id: uart_mhz19
    tx_pin: GPIO18
    rx_pin: GPIO19
    baud_rate: 9600
    parity: NONE

i2c:
  - id: i2c_bus
    sda: GPIO21
    scl: GPIO22
    frequency: 400kHz

sensor:
  - platform: pmsx003
    type: PMSX003
    uart_id: uart_pms7003
    pm_1_0:
      name: "PM1.0"
    pm_2_5:
      name: "PM2.5"
    pm_10_0:
      name: "PM10.0"
    update_interval: 120s

  - platform: mhz19
    uart_id: uart_mhz19
    automatic_baseline_calibration: true
    warmup_time: 180s
    update_interval: 300s  # KORREKTE POSITION
    co2:
      name: "CO₂"
    temperature:
      name: "MH-Z19 Temperatur"

  # BMP280 mit expliziter Temperatur-ID
  - platform: bmp280_i2c
    i2c_id: i2c_bus
    address: 0x76
    temperature:
      name: "Temperatur"
      id: bmp_temp  # Korrekte ID-Referenz
    pressure:
      name: "Luftdruck"
    update_interval: 60s

  # Korrekter Template-Sensor für Luftfeuchte
  - platform: template
    id: dummy_humidity
    name: "Humidity Compensation"
    unit_of_measurement: "%"
    accuracy_decimals: 1
    update_interval: 60s
    lambda: |-
      static float counter = 50.0;
      counter = (counter > 70) ? 30 : counter + 0.5;
      return counter;

  # SGP41 mit validen Referenzen
  - platform: sgp4x
    i2c_id: i2c_bus
    compensation:
      temperature_source: bmp_temp  # Verwendet explizite Temperatur-ID
      humidity_source: dummy_humidity
    voc:
      name: "VOC Index"
      algorithm_tuning:  # Korrekte Einrückungsebene
        index_offset: 100
        learning_time_offset_hours: 12
        learning_time_gain_hours: 12
        gating_max_duration_minutes: 180
        std_initial: 50
        gain_factor: 230
    update_interval: 60s
Veröffentlicht am
Kategorisiert in Allgemein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert