Wie verwenden Sie Luftqualitätssensoren mit Arduino oder Pi?
blog_detail_desc
Mit Luftqualitätssensoren und Arduino oder Raspberry Pi (RPi) können Sie Schadstoffe wie CO₂, PM2.5, VOCs und mehr überwachen. Hier finden Sie eine Schritt-für-Schritt-Anleitung für Verkabelung, Programmierung und Dateninterpretation.
1. Wahl des richtigen Sensors
Gängige Sensoren für Arduino/RPi:
Sensor | Misst | Kommunikation | Geeignet für |
---|---|---|---|
MQ-135 | CO₂, NH₃, NO₃ | Analog | Grundlegende Luftqualität (günstig) |
SDS011 | PM2.5, PM10 | UART | Feinstaubmessung |
BME680 (Bosch) | VOCs, Temp, Luftfeuchte, Druck | I²C/SPI | Raumluftqualität |
CCS811 | CO₂, TVOCs | I²C | Smarthome-Projekte |
SGP30 | TVOCs, eCO₂ | I²C | Energieeffiziente Anwendungen |
PMS5003 | PM1.0, PM2.5, PM10 | UART | Hochpräzise Partikelmessung |
2. Verkabelung des Sensors
Arduino (Uno/Nano) Setup
Beispiel: MQ-135 (Analoges Gassensor)
MQ-135 Pin | Arduino Pin |
---|---|
VCC | 5V |
GND | GND |
DO (Digital) | Optional (für Schwellenwerte) |
AO (Analog) | A0 |
Beispiel: BME680 (I²C)
BME680 Pin | Arduino Pin |
---|---|
VCC | 3.3V |
GND | GND |
SDA | A4 |
SCL | A5 |
Raspberry Pi (I²C/UART Setup)
Beispiel: BME680 (I²C)
-
I²C aktivieren:
sudo raspi-config → Interface Options → I2C → Enable
-
smbus
installieren:sudo apt install python3-smbus
-
Verkabelung:
BME680 Pin Raspberry Pi Pin VCC 3.3V (Pin 1) GND GND (Pin 6) SDA GPIO2 (Pin 3) SCL GPIO3 (Pin 5)
Beispiel: SDS011 (UART für PM2.5)
-
UART aktivieren:
sudo raspi-config → Interface Options → Serial → Disable shell, Enable hardware
-
Verkabelung:
SDS011 Pin Raspberry Pi Pin 5V 5V (Pin 2) GND GND (Pin 6) TX (Sensor) RX (GPIO15, Pin 10) RX (Sensor) TX (GPIO14, Pin 8)
3. Code-Beispiele
Arduino (MQ-135 Beispiel)
int sensorPin = A0; int sensorValue = 0; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(sensorPin); Serial.print("Luftqualität: "); Serial.println(sensorValue); delay(1000); }
Raspberry Pi (BME680 Python Beispiel)
-
bme680
-Bibliothek installieren:pip3 install bme680
-
Python-Skript:
import bme680 import time sensor = bme680.BME680() sensor.set_humidity_oversample(bme680.OS_2X) sensor.set_temp_oversample(bme680.OS_2X) sensor.set_pressure_oversample(bme680.OS_4X) sensor.set_gas_status(bme680.ENABLE_GAS_MEAS) while True: if sensor.get_sensor_data(): print(f"Temperatur: {sensor.data.temperature} °C") print(f"Luftfeuchtigkeit: {sensor.data.humidity} %") print(f"Druck: {sensor.data.pressure} hPa") if sensor.data.heat_stable: print(f"Gas-Widerstand: {sensor.data.gas_resistance} Ohm") time.sleep(1)
RPi SDS011 (PM2.5 UART Beispiel)
-
pyserial
installieren:pip3 install pyserial
-
Python-Skript:
import serial ser = serial.Serial('/dev/ttyS0', 9600) # Ältere Pi-Modelle: '/dev/ttyAMA0' while True: data = ser.read(10) if data[0] == 0xAA and data[1] == 0xC0: pm25 = (data[3] << 8) | data[2] pm10 = (data[5] << 8) | data[4] print(f"PM2.5: {pm25} μg/m³, PM10: {pm10} μg/m³")
4. Kalibrierung & Dateninterpretation
-
MQ-135: Muss in sauberer Luft kalibriert werden (~200-300 in frischer Luft, >500 = Belastung).
-
BME680/CCS811: Benötigt eine Einbrennphase (~48h) für genaue VOC-Messungen.
-
SDS011/PMS5003: Selbstkalibrierend, aber regelmäßige Reinigung empfohlen.
5. Erweiterte Anwendungen
-
Daten protokollieren (CSV, Cloud wie ThingSpeak, Blynk, MQTT).
-
Warnungen auslösen (z. B. Piezo/LED bei PM2.5 > 50 μg/m³).
-
Kombination mit OLED/LCD für Echtzeit-Anzeige.
Empfehlungen
-
Schnelles Prototyping: MQ-135 (Arduino) oder BME680 (RPi).
-
Präzise PM2.5-Messung: SDS011/PMS5003.
-
Energiesparende IoT-Projekte: SGP30 (I²C).
Related_Articles
- ·Wie lese ich Temperatur- und Luftfeuchtigkeitsdaten auf einem Mikrocontroller?
- ·Was soll ich tun, wenn Arduino den seriellen Port nicht erkennt?
- ·Wie kann man einen Raspberry Pi für IoT-Projekte nutzen?
- ·Wie steuern Sie eine LED oder ein Relais mit Arduino?
- ·Wie nutzt man den Raspberry Pi für maschinelles Lernen oder KI-Anwendungen?
- ·Was sind die gängigen Embedded Development Plattformen? Was ist seine spezifische Anwendung?
- ·Was sind einige gemeinsame Arduino-Projekte für Anfänger?
- ·Wie konfiguriert man einen Raspberry Pi als VPN-Server?
- ·Warum unterscheidet sich STM32 von vielen 32-Bit-Mikrocontrollern?