Aus Linux-Magazin 06/2018

Feinstaubmessung mit dem Raspberry Pi

Ob man sorglos durchatmen kann, hängt nicht zuletzt davon ab, was in der Luft liegt. Sind es vielleicht zu viele kleine Partikel, die gesundheitsschädlich sein können? Für Klarheit sorgt eine Feinstaubmessung – und der Raspberry Pi kann dabei helfen.

Wie frisch ist die Luft wirklich, die ich atme? Um das herauszubekommen, habe ich meine eigene Feinstaub-Messstation in Betrieb genommen. Feinstaub ist ein Mix aus allen möglichen organischen und anorganischen Stäuben, Bakterien, die durch die Luft reisen, und vielen anderen Partikeln, die eine Größe von 10 Mikrometer nicht überschreiten.

Daher spricht man auch von PM10 (PM: Particulate Matter, Feststoffpartikel). Zum Vergleich: Ein Haar hat einen Durchmesser von 50 bis 75 Mikrometer. Inzwischen werden noch winzigere Partikel mit nur 2,5 Mikrometer Größe (PM2,5) oder kleiner separat betrachtet, denn sie dringen tief in die Atemwege ein und gelangen bis in die Lungenbläschen.

Es gibt mehrere Sensoren am Markt, die beide Feinstaubklassen messen können. Ich habe mich für den Nova PM Sensor SDS011 des chinesischen Herstellers Inovafitness entschieden. Der Sensor saugt Luft in eine Kammer und beschießt sie dort mit einem Laser. Anhand der Streuung des zurückgeworfenen Lichts ermittelt er die Partikelgröße und -menge. Die Daten stellt er über eine serielle Schnittstelle bereit.

Dem Sensor liegt ein USB-Adapter bei, was den Anschluss an den Raspberry Pi ganz einfach macht. Im Syslog sehe ich nach dem Anschließen, dass die Schnittstelle »/dev/ttyUSB0« bereitsteht:

[ 2.611448] usb 1-1.5: ch341-uart converter now attached to ttyUSB0

Das Datenblatt [1] des Herstellers verrät, dass die Schnittstelle auf 9600 Bit/s, 8 Datenbits, keine Parität und 1 Stoppbit einzustellen ist. Das übernimmt das Kommando »stty«:

stty -F /dev/ttyUSB0 9600 raw

Ferner sagt das Datenblatt, dass der Betreiber des Sensors die Werte in hexadezimaler Schreibweise in einer festgelegten, immer wiederkehrenden Reihenfolge einmal pro Sekunde erwarten darf. Die Ausgabe sieht etwa so aus:

0000000 aac0 8c00 9400 bcf9 d5ab

Damit liegen die Werte vor: »8c« für die Klasse PM2,5 und »94« für PM10, 140 und 148 dezimal.

Im Datenblatt steht folgende Berechnungsformel: Der dezimale Wert des High-Byte wird mit 256 multipliziert, darauf der dezimale Wert des Low-Byte addiert. Das Ergebnis ist durch 10 zu teilen – das ist dann endlich der Feinstaubwert in Mikrogramm pro Kubikmeter Luft. Im Beispiel wären das 14 Mikrogramm/m3 für die Feinstaubklasse PM2,5, ein niedriger, also guter Wert. Mit Rrdtool [2] lassen sich daraus Verlaufsgraphen (siehe Titelbild) erstellen. (jcb)

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein. Zu seinen Aufgaben gehören Sicherheit und Verfügbarkeit der Firewalls und der DMZ.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben