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 Feinstaub Sensors 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. So ist es möglich unterwegs den Feinstaub in der Luft zu messen.
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.
Die Liste mit den Komponenten findt sich hier: Feinstaubsensor Komponentenliste
Das folgende Bild zeigt die einzelnen Komponenten so wie ich diese in die Eisverpackung verbaut habe.
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.
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
Zusammenfassung
Der Aufbau des mobilen Feinstaubensors war der erste Schritt bei diesem Projekt. Jetzt gibt es noch das ein oder andere zu optimieren und zu testen. Im nächsten Beitrag geht es dann um die Software Installation und das Python Programm das die Messwerte aufzeichnet und abspeichert.
Beitragsübersicht Feinstaubsensor SDS011
Ich finde die Diskussion rund um das Thema Feinstaub sehr spannend und habe mich daher mit einer Lösung beschäftigt mit der ich unterwegs die Feinstaubbelastung messen kann. Die nachfolgende Artikelübersicht fasst alle Beiträge von mir zusammen die ich geschrieben habe.
Feinstaub Sensor SDS011 - mobile Variante mit Datenaufzeichnung und GPS logging
Artikel auf heise.de: Der eigene Schmutzfänger - Feinstaub unterwegs messen und mit GPS-Daten aufzeichnen
Feinstaub Sensor SDS011 - Komponentenliste
Feinstaub Sensor SDS011 – Software Installation
Feinstaub Sensor SDS011 – BME280 Luftdruck, Luftfeuchte und Temperatur Sensor
Hallo,
das will ich doch gleich mal nachbauen.
– Steuerst du das über einen Cronjob an?
– Wie häufig misst der Sensor?
– als Basis rasbian jessie lite?
Hallo Sebastian,
also der Sensor läuft im „Standard“ Betriebsmodus und misst jede Sekunde.
Mein Python Programm startet über die crontab automatisch mit einem mini Start-Skript.
Ich habe Raspbian Jessie lite installiert und ein paar weitere Module die notwendig waren installiert.
Aktuell erstellt mein Python Programm für PM2.5 und PM10 Messwerte jeweils eine eigene Datei als CSV Datei, eine KML Datei mit Messpunkten und eine KML Datei mit der Wegstrecke als Linie. Die Linie wird in den drei Farben Rot, Gelb und Grün gefärbt. Die relative Höhe spiegelt den gemessenen Wert wieder. Also in Summe sechs Dateien.
Noch speichert das Programm die Dateien auf der micro-SD Karte. Ich habe zwar einen USB Stick eingebunden aber dieser lief nicht stabil im mobilen Betrieb. Hier muss ich weiter an einer Lösung arbeiten um die SD-Karte zu entlasten.
Viele Grüße,
Ingmar
Moin, wie kommt denn die angesaugte Luft wieder aus dem Gehäuse raus?
Hi, die kommt über ein Loch wieder aus dem Gehäuse raus.
Hallo,
1. Danke für die tolle Idee und die Anleitung.
2. Hab mir die mobile Messstation (alte Variante mit RPI Zero) zusammengestellt. Funktioniert super, nur stehe ich irgendwie auf der Leitung, wie ich unterwegs auf die Station mit meinem Android Phone per Tethering zugreifen kann. Welche IP soll ich beim Webinterface verwenden?
Danke
Andreas
Hallo Andreas,
wenn sich er Raspberry Pi mit Deinem Telefon verbindet erhält er von diesem eine IP Adresse. Diese IP Adresse solltest Du in der Oberfläche für das Tethering sehen. Genau mit dieser IP Adresse verbndet Du Dich dann und die Oberfläche des mobilen Feinstaubsensor erscheint anschließend.
Viele Grüße,
ByteYourLife
Hallo Ingmar,
erst mal vielen Dank für das tolle Projekt. Ich habe die RasPi-Version mal getestet, das funktioniert ganz gut. Da ich noch so ein Bluetooth-modul rumliegen hatte wollte ich die Android-version auch mal versuchen. Ist ja viel einfacher und „mobiler“. Also Sensor und HC06 angeklemmt, Bluetooth verbunden, Daten vom Sensor werden empfangen (mittels Bluetooth Terminal). Das Pythonscript ist auch angepasst und entsprechend aufs Handy verschoben, wenn ich nun das Script starte erhalte ich folgende Fehlermeldung:
Error: WebApp runs fail, pleas check the log. und darin steht dann folgendes:
dir_path=/sdcard/Feinstaubsensor/
java.lang.NullPointerException: throw with null exception
java.lang.NullPointerException: throw with null exception
Traceback (most recent call last):
File „/storage/emulated/0/qpython/projects/Feinstaubsensor/main.py“, line 537, in
t_gps = GpsdStreamReader()
File „/storage/emulated/0/qpython/projects/Feinstaubsensor/main.py“, line 230, in _init_
g_lat, g_lng = self.getGpsData()
File „/storage/emulated/0/qpython/projects/Feinstaubsensor/main.py“, line 264, in getGpsData
n = loc[‚gps‘]
TypeError: ‚NoneType‘ object has no attribute ‚_getitem_‘
Das kommt unabhängig davon, ob ich ein GPS-Fix habe oder nicht.
Nun ist Python (noch) nicht ganz meine Spielwiese, aber vielleicht kannst Du mir da weiterhelfen, warum das nicht läuft.
Android ist 8.0 auf Oneplus 5.
Vielen Dank schon mal.
Stephan
So, läuft jetzt: musste in den App-berechtigungen für QPython den Standort zulassen. Die übliche Abfrage kam in diesem Fall nicht.
Viele Grüße
Stephan
Danke für den Tip, Stephan.
Vielleicht sollte der mit auf die erste Seite übernommen werden …
Hallo und danke für die Anleitung.
Wie kann ich die Aufzeichnung nach reboot vom raspi automatisch starten lassen ohne den button am webfrontend drücken zu müssen?
btw, ich hab einen normalen raspberrypi 2 genommen und messe inklusive gps Maus und sds011 und wlan adapter am Netz hängend (230V über Netzteil) zwischen 2,5 und 3,3 Watt.
Ein 4400 mAh Akku hält damit (getestet) 6:40 durch, somit sollte ein 10000 mAh Akku mindestens doppelt so lange laufen denk ich…
was ist user/password fuer die Image