Feinstaubsensor Teil 1 von 4

Eigener Feinstaubsensor

Seit der ORF-Dokumentation über das heizen mit Holz ist in den österreichischen Wohnzimmern ein wenig Unsicherheit eingewandert.
„Ist den nun unser Ofen wirklich so ungesund – oder nicht?“

Erst mal: Holz aus Österreich hat durch die nachhaltige Waldwirtschaft einen sehr geringen CO2-Fußabdruck, unterstützt die Holzverarbeitende Industrie, macht uns etwas weniger Abhängig von Fossilen Brennstoffen und stärkt damit die Wirtschaft des eigenen Land und am besten noch die nähere Umgebung.

https://www.nachhaltigkeit.at/wald/

Wenn man alles richtig macht ist es weder ungesund noch gefährlich.
Wir helfen Ihnen dabei – alle Rauchfangkehrer mit Ihrer Arbeit und Wissen und speziell hier mit der Anleitung zum eigenen Feinstaubsensor um selbst die Gefährdung einschätzen zu können.

Mit dem hier vorgestellten Projekt können Sie es selbst testen und müssen nicht nur große Worte eines kleinen Rauchfangkehrer glauben.

Oft sind die meisten Dinge schon im Haus – somit kann mit etwa 30 € das Projekt umgesetzt werden. Muss alles neu angeschafft werden sind etwa 100 Euro fällig.
(Leihgerät für unsere Rauchfangkehrerkunden ebenfalls bald erhältlich)

Es ist zwar kein Wissenschaftliches, geeichtes Gerät und kann auch nicht als „Messung“ angesehen werden – aber zur Erkennung einer Gefährdung ist es jedenfalls ausreichend.

Was benötigen wir:

  • Feinstaubsensor SDS011 mit USB-Kabel
  • Raspberry Pi – eventuell im Bundle mit Gehäuse, Netzteil und SD-Karte
    Version ist ziemlich egal da wir keine große CPU-Leistung benötigen.
  • Ein LAN zur Installation – und optional ein WLAN für den Betrieb

Weiters kann hilfreich sein:

  • Tastatur und Maus. Einen Monitor oder internen Touchscreen (zb. 3.2-3.5 Zoll)
  • Zur Installation und Konfiguration einen Computer (PC, Mac, Linux….)

Installieren des Betriebssystem

Einfach nach der offiziellen Anleitung das Betriebssystem auf eine SD-Karte installieren, Raspberry ans LAN anschliessen und starten.

https://www.raspberrypi.org/downloads/raspbian/

Finden Sie die vom DHCP-Server vergebene IP-Adresse raus und lassen Sie uns beginnen mit dem Befehl: (Terminal oder einer SSH-APP zb. putty)

ssh IP-ADRESSE -l pi

Loggen Sie sich mit dem Standard-Passwort „raspberry“ ein und ändern Sie es auf Wunsch mittels

sudo passwd

Updates und Installationen

Als erstes Installieren wir mal alle Updates.
Dies funktioniert mittels obigen SSH-Befehl genauso wie direkt am Pi der mittels Monitor, Maus und Tastatur wie jeder anderer Computer bedient werden kann.

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Dann installieren wir einige neue Pakete

sudo apt-get install unclutter
sudo apt-get install chromium-browser
sudo apt-get install apache2
sudo apt-get install php
sudo apt-get instal bc wget
sudo reboot

Wenn Ihr ein Display am internen Port stecken habt bitte nach Herstellerangaben installieren… ich hab den hier:

https://joy-it.net/de/products/RB-TFT3.2V2

Mit dem Treiber:

git clone https://github.com/goodtft/LCD-show.git

Dann noch etwas Feinschliff:

sudo raspi-config

Dort konfigurieren Sie Ihre Sprache, Zeitzone usw… und auf Wunsch das WLAN (Network-Options)
Auch andere Dinge können Sie hier gerne nach Ihren Wünschen konfigurieren.

Feinstaubsensor

Jetzt ist es soweit – die Hochzeit zwischen eurem Pi und dem Feinstaubsensor steht bevor… Ich hab hier einen Pi4 genommen (der lag grad frei herum)
Hab aber bereits einen Pi-Zero bestellt… damit alles etwas kleiner wird.

Schliesst den Feinstaubsensor mittels dem beigefügten Kabel und USB-Adapter an den Pi an und findet den korrekten Device-Namen heraus

dmesg|grep "uart conver"

Ergebnis ist sowas ähnliches wie:
[    7.338807] usb 1-1.2: ch341-uart converter now attached to ttyUSB0

Es ist also bei mir das Device ttyUSB0
Diese serielle Schnittstelle muss noch eingerichtet und getestet werden…

stty -F /dev/ttyUSB0 9600 raw
od -x --endian=big /dev/ttyUSB0

Wenn Ihr sowas ähnliches seht – ist alles in Ordnung.

0000000 aac0 4000 4600 dead 11ab aac0 4000 4600
0000020 dead 11ab aac0 4000 4600 dead 11ab aac0
0000040 3f00 4400 dead 0eab aac0 3f00 4400 dead
0000060 0eab aac0 3f00 4400 dead 0eab aac0 3f00

Programme

Nun erstellen wir unsere erste Datei … im Homeverzechnis von pi (also gleich nach dem Einloggen)

sudo pico feinstaub.sh

Der Inhalt ist folgender und es kann bzw. muss angepasst werden:
WDIR = Verzeichnis wo die Daten gespeichert werden.
Zeile 5 und 7: jeweils das richtige „Device“

#!/bin/bash
  
 WDIR=/home/pi/messwerte
  
 stty -F /dev/ttyUSB0 9600 raw
  
 INPUT=$(od --endian=big -x -N10 < /dev/ttyUSB0|head -n 1|cut -f2-10 -d" ");
  
 #Ausgabe
 echo $INPUT
 echo " "
  
 FIRST4BYTES=$(echo $INPUT|cut -b1-4);
 echo $FIRST4BYTES
  
 if [ "$FIRST4BYTES" = "aac0" ]; then
   echo "check for correct intro characters: ok"
   logger "check for correct intro characters: ok"
 else
   echo "incorrect sequence, exiting"
   logger "incorrect sequence, exiting"
   exit;
 fi
  
 PPM25LOW=$(echo $INPUT|cut -f2 -d " "|cut -b1-2);
 PPM25HIGH=$(echo $INPUT|cut -f2 -d " "|cut -b3-4);
  
 PPM10LOW=$(echo $INPUT|cut -f3 -d " "|cut -b1-2);
 PPM10HIGH=$(echo $INPUT|cut -f3 -d " "|cut -b3-4);
  
 #zu Dezimal konvertieren
 PPM25LOWDEC=$( echo $((0x$PPM25LOW)) );
 PPM25HIGHDEC=$( echo $((0x$PPM25HIGH)) );
  
 PPM10LOWDEC=$( echo $((0x$PPM10LOW)) );
 PPM10HIGHDEC=$( echo $((0x$PPM10HIGH)) );
  
 PPM25=$(echo "scale=1;((( $PPM25HIGHDEC * 256 ) + $PPM25LOWDEC ) / 10 ) "|bc -l );
 PPM10=$(echo "scale=1;((( $PPM10HIGHDEC * 256 ) + $PPM10LOWDEC ) / 10 ) "|bc -l );
  
 logger "Feinstaub PPM25: $PPM25"
 logger "Feinstaub PPM10: $PPM10"
  
 echo "Feinstaub PPM25: $PPM25"
 echo "Feinstaub PPM10: $PPM10"
  
 echo "$(date); "$PPM25 >> $WDIR/etc/ppm25.txt
 echo "$(date); "$PPM10 >> $WDIR/etc/ppm10.txt
 

Speichert mit STRG-X … bestätigt das speichern mit „y“ und der Enter Taste.

chmod +x feinstaub.sh
mkdir messwerte
mkdir etc

Erstellt das Datenverzeichnis und ermöglicht es dieses Skript zu starten das ihr gleich mal ausprobieren könnt:

./feinstaub.sh

Es sollte sowas ähnliches rauskommen:

aac0 0f00 2f00 2038 96ab
  
 aac0
 check for correct intro characters: ok
 Feinstaub PPM25: 1.5
 Feinstaub PPM10: 4.7
 

Gratulation… die erste Feinstaubmessung hat geklappt…

Der größte technische Brocken ist vollbracht – der Rest ist Verschönerung, bessere Bedienung, Automation etc.

Was noch dazugesagt werden muss: der Sensor misst dauernd die aktuellen Werte.
Um die (vom Hersteller) geschätzte Lebensdauer von 8000 Betriebsstunden (etwa 1 Jahr) solange wie möglich geniessen zu können, schalten Sie das Gerät ausserhalb der Nutzungszeiten aus… Spart ausserdem Strom (braucht zwar nicht viel aber dennoch).

In weiteren Folgen werden wir die Messungen so gestalten das mittels einer zwischenzeitlichen Abschaltung die Lebensdauer stark erhöht wird.

<– To be continued –>

Mein Plan für die nächsten Schritte

Im Teil 2 (folgt in Kürze) werden wir das kleine Programm automatisch und in gewissen Intervallen starten.
Auch werden wir ein PHP-Skript erstellen welches die Daten über das Netzwerk anzeigt… Die aktuellen sowie die zurückliegenden Werte.


Im Teil 3 werden wir dann das eventuell angeschlossene Display starten und dort, automatisch nach den Einschalten, die aktuellen Werte anzeigen lassen.
Vorbereitungen dazu haben wir schon erledigt.


Zum Schluss im Teil 4 drucken wir uns ein Gehäuse …