Ich mache seit April bei dem Projekt http://luftdaten.info mit und so kam bei einer Unterhaltung mit einem Kollegen die Idee auf eine mobile Version des Feinstaubsensors zu bauen. Mein Kollege fährt jeden Tag mit dem Rad zur Arbeit und er ist daran interessiert wie belastet die Luft ist die er während der Fahrt einatmet. Ich habe den Nova Feinstaubsensor in eine alte Eisverpackung gebaut die man gut z. B. in einem Rucksack passt oder auf den Fahrradgepäckträger befestigt werden kann. Auch würde mich interessieren wie Feinstaubbelastet eine Autobahnfahrt ist oder wie es mit der Luftqualität im Büro bestellt ist.

In den nachfolgenden Abschnitten gehe ich etwas genauer auf den Aufbau und die Programmierung des mobilen Feinstaubsensors ein.

Das nachfolgende Bild zeigt meinen Feinstaubsensor verpackt in einer Eisverpackung.

Mobiler Feinstaubsensor NOVA SDS011

Mobiler Feinstaubsensor NOVA SDS011

Komponentenübersicht

Ich habe auf Standardkomponenten für den Aufbau des mobilen Feinstaubsensors zurück gegriffen. Ich kam fast gänzlich ohne zu lösten aus. Ich habe nur für den mini USB Hub die Lötstation benötigt denn ich musste den USB Anschluss so anpassen das ich den Hub an den Raspberry Pi ZERO W anschließen konnte.

Raspberry Pi Zero W

Micro SD-Karte

Nova Feinstaubsensor

Leider habe ich aktuell auf Amazon kein passenden Angebot gefunden. Aber bei Ali Express in China habe ich schon mehrere gekauft und hatte keine Probleme. Die Sensoren wurden auch sehr schnell geliefert.

Hier der Link zu Ali Express: Nova Feinstaubsensor

Mini USB Hub

Micro USB Kabel

Power-Bank

GPS Empfänger

NAVILOCK GPS NL-602U USB
Preis: EUR 53,20
20 neu von EUR 52,690 gebraucht

Transparenter Schlauch 6mm Innendurchmesser

Diesen Typ von Schlauch gibt es am besten im Baumarkt

Dazu kam dann noch die leere Eisverpackung und etwas Karton um die Komponenten in der Eisverpackung befestigen zu können.

Das folgende Bild zeigt die einzelnen Komponenten so wie ich diese in die Eisverpackung verbaut habe.

Mobiler Feinstaubsensor NOVA SDS011 Technik

Mobiler Feinstaubsensor NOVA SDS011 Technik

Die folgende Nahaufnahme zeigt, dass der Feinstaubsensor über den mitgelieferten USB Adapter am USB Hub zusammen mit dem GPS Empfänger angeschlossen ist. Der USB Hub selber wurde auf einen mirco-USB Anschluss umgebaut und an den Raspberry Pi ZERO W angeschlossen.

Der Raspberry Pi ZERO wird über die Power Bank mit Strom versorgt. Der RasPi selber versorgt auch wieder den USB Hub und die angeschlossenen Geräte mit Strom. Hier hatte ich etwas Sorgen ob das klappt aber bis jetzt funktioniert alles einwandfrei auch über ein paar Stunden hinweg.

Mobiler Feinstaubsensor NOVA SDS011 Übersicht

Mobiler Feinstaubsensor NOVA SDS011 Übersicht

USB Geräte Suchen

Ich gehe jetzt davon aus, dass der USB GPS Empfänger angeschlossen ist und der SDS011 ebenfalls über den USB Konverter mit dem Raspberry Pi verbunden ist. Jetzt stellt sich die Frage unter welchen Gerätenamen / Devices der USB GPS Empfänger und der Feinstaubsensor zu finden sind.

Dazu könnt Ihr den folgenden Befehl ausführen:

Befehl: ls -l /dev/tty*

Dann kann man sich auch mit dem folgenden Befehl eine Liste der USB Geräte mit dem vom Hersteller vergeben Namen  anzeigen lassen. So ist man sicher schon mal sicher ob das Gerät überhaupt erkannt wurde.

Befehl: lsusb

Ich persönlich finde ja den folgenden Befehl recht gut der einem viele Informationen ausgibt und mit etwas Suchen sollte man sein Gerät dann auch finden.

Befehl: dmesg | grep -i usb

Software Übersicht

Ich verwende für das Auslesen der Sensordaten des Feinstaubsensors und des GPS Empfängers Python und entsprechende Bibliotheken. Die folgenden Bibliotheken kommen zum Einsatz.

Python Bibliotheken

Es mussten noch im Terminal Fenster die nachfolgenden Programme mit Ihren Bibliotheken installiert werden. Dazu bitte die nachfolgenden Befehle ausführen.

Befehl: sudo apt-get install gpsd gpsd-clients python-gps

Befehl: sudo apt-get install python-pip

Befehl: sudo python -m pip install pyserial

Jetzt sollte das im nachfolgenden Abschnitt vorgestellte Programm einwandfrei funktionieren. Wichtig ist noch die USB Geräteadressen im Python Programm richtig zu hinterlegen sowie den Speicherpfad für die CSV Datei wenn notwendig anzupassen.

GPSD Anpassung

Damit das Python Programm den GPS Empfänger ohne Probleme findet und der Daemon auch funktioniert sollte noch die folgende Anpassung in der /etc/default/gpsd Konfiguration vorgenommen werden.

Dazu den folgenden Befehl ausführen und die gpsd Datei öffnen.

Befehl: sudo nano /etc/default/gpsd

Jetzt bitte die Datei entsprechend anpassen. Bitte trägt das USB Gerät ein unter dem bei euch der GPS Empfänger gefunden wurde. Bei mir ist es dieses Gerät „/dev/ttyAMA0“.

START_DAEMON=“true“
GPSD_OPTIONS=“/dev/ttyACM0″
DEVICES=““
USBAUTO=“true“
GPSD_SOCKET=“/var/run/gpsd.sock“

Nach dem die gpsd Konfiguration angepasst wurde bitte noch den folgenden Befehl ausführen.

Befehl: sudo dpkg-reconfigure gpsd

Jetzt sollte nach einem Neustart der GPS Empfänger funktionieren. Mit dem nachfolgenden Befehl kann man cgps in dem Terminal Fenster starten und sich die GPS Koordinaten anschauen.

Befehl: cgps

Wenn nicht zu sehen ist und ein Fehler kommt kann man mit diesem Befehl prüfen ob der gpsd Prozess überhaupt läuft.

Befehl: ps -ef | grep gps

Es sollte eine Ausgabe wie folgt im Terminal Fenster erscheinen.

pi@feinstaub:~ $ ps -ef | grep gps
gpsd       689     1  1 15:51 ?        00:00:08 /usr/sbin/gpsd -N /dev/ttyACM0
pi         768   742  0 16:03 pts/0    00:00:00 grep –color=auto gps

Python Programm – Aufzeichnung Feinstaub und GPS Koordinaten

Mein selbst geschriebenes Python Programm liest die Feinstaubwerte PM10 und PM2.5 sowie die GPS Koordinaten aus. Immer wenn die Feinstaubwerte ausgelesen werden wird geprüft ob die GPS Position und die UTC Zeit aus dem GPS Signal verfügbar sind. Wenn ja dann wird alles zusammen in eine CSV Datei geschrieben. Wenn die GPS Informationen nicht verfügbar sind dann werden nur die Feinstaubwerte in die CSV Datei geschrieben noch ohne Uhrzeit. Das Datum und die Uhrzeit werden aus dem GPS Signal ausgelesen.

Das Python-Programm steht hier zum Download bereit: Python Programm sds011

Auf meinen Git Repository gibt es noch ein weiteres Programm das gleich KML Dateien für Google Earth erzeugt.

Git Repository

Hinweis KML Datei

Hier ist aber zu beachten, dass die KML Datei in der aktuellen Programmversion nicht richtig abgeschlossen werden. So müssen vor dem öffnen noch manuell die beiden folgenden Zeilen ganz am Ende der KML Datei angefügt werden.

</Document>
</kml>

Das Bild zeigt wie z. B. das Ergebnis aussehen kann in der KML Datei. Gut zu erkennen ist die Höhe der Linien und die unterschiedlichen Farben, die die Belastung der Luft anzeigen.

Feinstaub Sensor Google Earth KML

Feinstaub Sensor Google Earth KML

Ich habe weiter eine SAMBA Freigabe eingerichtet und einfach auf die CSV Datei zugreifen zu können. Aktuell wird diese noch auf die micro-SD Karte geschrieben. Hier werde ich aber einen kleinen USB-Speicher besorgen und anschließen um die micro-SD Karte zu entlasten. Das ständige schreiben auf die SD Karte ist sicher auf Dauer nicht gut.

Update 21. Mai 2017

Das folgende Bild zeigt mich bei einem Test bzw. Spaziergang.

Ingmar Stapel mobiler Feinstaub Sensor SDS011 klein

Ingmar Stapel mobiler Feinstaub Sensor SDS011 klein

Ich habe den Feinstaub Sensor aus der Eisbox ausgebaut und in eine stabilere Brotzeitbox untergebracht. So kann ich die Elektronik viel besser vor Erschütterungen schützen. Die Eisbox war doch sehr flexibel und nicht so ideal für das Setup.

Feinstaub Sensor SDS011 - Gehäuse IKEA Brotzeitbox

Feinstaub Sensor SDS011 – Gehäuse IKEA Brotzeitbox

Auf der nachfolgenden Nahaufnahme sind die Stege gut zu sehen die ich eingeklebt habe damit die Pappe auf der die Power-Bank liegt einen guten Halt über dem Feinstaubsensor und dem Raspberry Pi 3 Model B hat. Gut zu erkennen ist auch der extra USB WIFI Adapter für eine größere Reichweite.

Feinstaub Sensor SDS011 - Gehäuse IKEA Brotzeitbox Nahaufnahme

Feinstaub Sensor SDS011 – Gehäuse IKEA Brotzeitbox Nahaufnahme

Zusammenfassung

Der Aufbau und die Programmierung waren der erste Schritt bei diesem Projekt. Jetzt gibt es noch das ein oder andere zu optimieren und zu testen. Aktuell wird das Python-Programm immer automatisch gestartet wenn der Raspberry Pi eingeschalten wird. Anschließend werden die Messwerte in die CSV Datei geschrieben und stehen für eine Auswertung zur Verfügung.

ByteYourLife


Ich lebe in Bayern nahe München. In meinem Kopf habe ich immer viele Themen und probiert gerade im Bereich Internet neue Medien viel in meiner Freizeit aus. Ich schreibe an dem Blog da es mir Spaß macht über die Dinge zu berichten die mich begeistern. Ich freue mich über jeden Kommentar, über Anregung und sehr über Fragen.