Luftqualität messen mit OpenSensors: Arduino & Python Anleitung
Einführung
In diesem Tutorial lernen Sie, wie Sie die Innenraumluftqualität mit einem Arduino, einem Shinyei PPD‑42 Partikelsensor und dem OpenSensors MQTT-Broker überwachen können. Schritt für Schritt zeigen wir, wie Sie Echtzeit-Partikeldaten erfassen und sicher an einen öffentlichen Datenstrom veröffentlichen.
Benötigte Hardware
- Shinyei PPD‑42 Sensor
- Arduino UNO
- Linux-Computer oder Raspberry Pi
Projektbasis: DustDuino
Diese Anleitung basiert auf dem DustDuino-Projekt, das den PPD‑42 bereits mit Arduino und WLAN integriert. Wir haben den Schaltplan und den Code für unsere OpenSensors-Installation angepasst.
Verbinden Sie zunächst den Sensor wie in Schritt 2 der DustDuino-Anleitung beschrieben mit dem Arduino. Laden Sie dann den Sketch DustDuinoSerial.ino aus dem GitHub-Repository herunter, öffnen Sie ihn in der Arduino IDE und laden Sie ihn auf den UNO hoch.
Überprüfen Sie im Seriellen Monitor der Arduino IDE, ob der Sensor Daten sendet.
Python-Skript für die MQTT-Übertragung
Als Nächstes verbinden wir die serielle Ausgabe des Arduino mit dem OpenSensors-Broker mithilfe eines schlanken Python-Skripts, das die Mosquitto-Client-Bibliothek nutzt.
Python-Installation testen
Erstellen Sie eine Datei hi.py mit folgendem Inhalt:
print("Hello World")
Führen Sie sie im Terminal aus:
python hi.py
Die Ausgabe Hello World bestätigt, dass Python funktioniert.
Verbindung zu OpenSensors testen
Installieren Sie den Mosquitto Python-Client:
sudo apt-get install python-pip
sudo pip install paho-mqtt
Testen Sie das Publizieren mit diesem minimalen Skript (ersetzen Sie Benutzername und Passwort durch Ihre Zugangsdaten):
import paho.mqtt.client as mqtt
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")
mqttc.publish("/users/Louis/test2", payload="Hello Opensensors!", qos=0, retain=False)
mqttc.disconnect()
Bei erfolgreicher Ausführung erscheint die Nachricht in der OpenSensors-Konsole.
Seriellen Port identifizieren
Ermitteln Sie den Arduino-Port mit:
dmesg | grep tty
Typische Ausgabe:
[ 0.000000] console [tty0] enabled
[ 3522.192687] cdc_acm 7-1:1.0: ttyACM0: USB ACM device
Hier ist /dev/ttyACM0 der zu verwendende serielle Port.
Serielle Daten mit Python lesen
import serial
ser = serial.Serial('/dev/ttyACM0')
while True:
print(ser.readline())
Sensor-Daten mit MQTT verbinden
Kombinieren Sie den seriellen Leser und den MQTT-Publisher in einem Skript. Das folgende Beispiel veröffentlicht jede Sensordatenzeile im Topic /users/Louis/ODI/airquality jede Sekunde:
import serial
import paho.mqtt.client as mqtt
import time
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("mqtt.opensensors.io")
ser = serial.Serial('/dev/ttyACM0') # Port ggf. anpassen
while True:
message = ser.readline()
print(message)
mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
time.sleep(1)
Für die weitere Verarbeitung empfiehlt es sich, die Arduino-Ausgabe vor dem Publizieren als JSON zu formatieren.
Die resultierenden Datenströme können Sie auf OpenSensors unter dem erstellten Topic hier einsehen.
Vollständiges Code-Beispiel
import serial
import paho.mqtt.client as mqtt
import time
mqttc = mqtt.Client(client_id="939")
mqttc.username_pw_set("Louis", password="AbcDEFgH")
mqttc.connect("opensensors.io")
ser = serial.Serial('/dev/ttyACM0')
while True:
message = ser.readline()
print(message)
mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False)
time.sleep(1)
Quelle: How to Measure Air Quality on OpenSensors
Herstellungsprozess
- Helium-basierter solarbetriebener Luftqualitätssensor: Design- und Deployments-Guide
- Versteckte Gesundheitsrisiken durch schlechte Raumluftqualität
- Thermistor (NTC) einfach nutzen: Schritt-für-Schritt Arduino-Anleitung
- Luftkompressor-Effizienz auf Schiffen steigern: Bewährte Maßnahmen
- Lötstopplack-Dicke messen: Ein praktischer Leitfaden
- Fortgeschrittene Innenraumluftqualitäts-Monitoring-Systeme mit IoT aufbauen
- Wie Lufttrockner funktionieren: Druckluft sauber & effizient halten
- Umfassender Leitfaden: Verunreinigungen aus Druckluft entfernen
- Silikon-Armbänder: Günstige passive Sammler für präzise Luftqualitätsüberwachung
- Fortschrittlicher kohlenstoffbasierter NO₂-Sensor verbessert Innenraumluftüberwachung