ESP32 Dev Board
Ein vielseitiges Mikrocontroller-Board mit integriertem Wi-Fi und Bluetooth, ideal für IoT-Projekte.
Ein Partikelzähler, der Feinstaubkonzentrationen misst.
Ein Infrarot-CO₂-Sensor zur Messung der Kohlendioxidkonzentration.
Ein Sensor zur Messung von Temperatur und Luftdruck.
Ein Sensor zur Messung von VOCs (flüchtige organische Verbindungen) und NOx.
Widerstände zur Stabilisierung der I²C-Kommunikation.
Kondensator zur Glättung der Spannungsversorgung.
Kondensator zur Stabilisierung der Stromversorgung des ESP32.
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