# Feinstaubmessgerät

- Rubrik: Automation und KI
- Datum: 2016 (aus dem Inhalt erschlossen)
- Adresse: https://electric-rocken.de/projekt/feinstaubmessgeraet/
- Autor: Axel Roll

> Ziel war der Aufbau eines kleinen Messgerätes zum Ermitteln der Feinstaubbelastung, die durch an unserem Haus vorbeifahrende Fahrzeuge hervorgerufen wird.

![](https://electric-rocken.de/assets/bilder/projekte/feinstaub/02.webp)

Ziel war der Aufbau eines kleinen Messgerätes zum Ermitteln der Feinstaubbelastung, die durch an unserem Haus vorbeifahrende Fahrzeuge hervorgerufen wird.

## Hardware

![Verwendete Komponenten](https://electric-rocken.de/assets/bilder/projekte/feinstaub/01.webp)

Da es nur ein kleines Projekt werden und der Aufbau möglichst schnell gehen sollte, habe ich mich dieses Mal für ein **Arduino UNO WiFi** entschieden. Als Zusatzhardware wurde das [RGB LCD Shield](https://learn.adafruit.com/rgb-lcd-shield) und das [**Data Logger Shield**](https://learn.adafruit.com/adafruit-data-logger-shield) von Adafruit verwendet. Das LCD dient zur Anzeige der aktuellen Messwerte und das Data Logger Shield liefert über sein integriertes RTC-Modul Zeitdaten. Die gemessene Feinstaubbelastung wird gemeinsam mit der aktuellen Zeit über das SD-Karten-Modul des Data Logger Shields in eine CSV-Datei gespeichert. 

Die eigentlichen Messwerte werden mit dem **[PPD42NS-Modul](https://duckduckgo.com/?q=filetype%3Apdf+PPD42NS)** von Shiney ermittelt. Dieses Modul misst nicht wie sonst üblich die Belastung in Gewicht pro Volumen, sondern in Anzahl der Partikel pro Volumen. Dies ist eine Vereinfachung, die aus Kostengründen in Kauf genommen wird.

Die einzelnen Komponenten wurden innerhalb weniger Minuten verbunden. Für das Data Logger Shield wurden keine Stiftleisten, sondern stapelbare Buchsenleisten verwendet, um anschließend das LCD Shield aufstecken zu können. Der Anschluss des Messmoduls erfolgt über eine kleine Stiftleiste, die auf den freien Bereich des Data Logger Shields gelötet wurde.

## Software

![Graph aus Datenblatt](https://electric-rocken.de/assets/bilder/projekte/feinstaub/datenblatt.webp)

Auch die Software sollte in möglichst kurzer Zeit entstehen. Als Entwicklungsumgebung wurde die Arduino GUI verwendet. 

Es wurden die Bibliotheken von Adafruit für die [SD-Karte](https://github.com/adafruit/SD), [RTC-Modul](https://github.com/adafruit/RTClib) und das [LCD-Shield](https://github.com/adafruit/Adafruit-RGB-LCD-Shield-Library) verwendet, sowie die bereits integrierten Bibliotheken für die I²C-Schnittstelle. Für die Anzeige der Messwerte auf dem Display habe ich eine kleine Bibliothek geschrieben, die aus den Messdaten der letzten n Sekunden einen gleitenden Mittelwert berechnet, um so einen Tiefpass / Glättung der Werte zu bekommen (Ringspeicher).

![Messpunkte](https://electric-rocken.de/assets/bilder/projekte/feinstaub/excel.webp)

Die Auswertung des Sensors geschieht "von Hand", da von diesem keine direkten Messwerte ausgegeben werden. Das Ausgabe-Pin des Sensors wechselt seinen Pegel in Abhängigkeit von der Feinstaubkonzentration. Die Software misst über eine Zeitspanne, wie lange dieses Pin auf Low gezogen wurde. Daraus lässt sich berechnen, wie viel Prozent der Zeit das Pin auf Low stand. Im Datenblatt ist eine Kurve angegeben, die diese Prozentzahl mit der Feinstaubkonzentration ins Verhältnis setzt. Da leider nur der Graph, jedoch nicht die entsprechende Funktion angegeben wurde, musste ich mir diese selber herleiten. Bedenken muss man, dass die Angaben im Datenblatt in Partikel pro Kubikfuß sind und ich diese erst in Partikel pro Liter umgerechnet habe. 

![Exel-Diagramm](https://electric-rocken.de/assets/bilder/projekte/feinstaub/graph.webp)

Mit dem [WebPlotDigitizer](https://automeris.io/) kann man sich aus dem Graphen Messpunkte ermitteln. Diese habe ich in Excel wiederum als Diagramm anzeigen lassen und mit der Trendlinienfunktion eine kubische Gleichung herleiten lassen, die ziemlich gut den Kurvenverlauf widerspiegelt. Die gewonnene Funktion wurde dann in der Software verwendet, um die Messwerte von Prozent in Partikel / Liter umzurechnen.

## Zweite Fassung mit besserem Sensor

Der erste Sensor zählt nur Partikel und muss über eine Kurve aus dem Datenblatt
umgerechnet werden. Später habe ich deshalb einen SDS011 genommen: Der hat ein kleines
Gebläse, saugt die Luft aktiv an und gibt die Belastung direkt als Zahl aus, getrennt
nach feinem und grobem Staub. Dazu braucht es nur noch ein ESP8266-Board, das die Werte
abholt und per WLAN weitergibt.

![Der SDS011 mit seinem Gebläse, daneben das ESP-Board](https://electric-rocken.de/assets/bilder/fotos/automation/feinstaub-sds011.webp)
