Innenraumluftqualitäts Messstation

In diesem Projekt wird mit der senseBox eine Messstation für die Luftqualität in Innenräumen gebaut. Mithilfe des Umweltsensors kann neben der Temperatur, Luftfeuchtigkeit, Luftdruck auch die Innenraumluftqualität gemessen werden. Hierbei wird ein Index berechnet (IAQ - Indoor Air Quality) und ein CO2-Äquivalenter Messwert ausgegeben. Die Messwerte werden nacheinander auf dem Display angezeigt und können optional auch über die openSenseMap online abgerufen werden.

Aufbau

Stecke das WiFi-Bee auf den Steckplatz XBEE1. Das OLED Display und der Umweltsensor werden mit jeweils einem JST-JST Kabel an einen der 5 I2C/Wire Ports angeschlossen.

Programmierung

Die Programmierung der Messstation wird in Blockly durchgeführt. Im ersten Schritt werden die Messwerte ausgelesen und auf dem Display angezeigt. Da insgesamt 7 verschiedene Parameter auf dem Display angezeigt werden, wird eine Abfolge auf dem Display programmiert. Optional können die Messwerte auch noch über das Internet an die openSenseMap übertragen werden Übertragen auf die openSenseMap.

Schritt 1: Die erste Anzeige auf dem Display

Initialisiere das Display im Setup() und füge den Block Zeige auf dem Display in die Endlosschleife ein. Mit dem Block Schreibe Text/Zahl kannst du die jeweilen Messwerte auf dem Display anzeigen lassen. Um zwei Messwerte auf dem Display gleichzeitg anzuzeigen musst du jeweils die Platzierung (Verschiebung auf der Y-Achse) auf dem Display anpassen. Als ersten wird ein Block Text hinzufügt, um zu beschreiben, um welchen Sensorwert es sich handelt. Der Sensorwert selber wird in Schriftgröße 2 dargstellt und über die Koordinaten in Y- und X-Richtung verschoben.

/images/projects/iaq-station/0.png - Logo

Zusätzlich zum Temperaturmesswert kann auf dem Display noch der Messwert für die Luftfeuchtigkeit hinzugefügt werden. Kopiere dazu die Blöcke, ändere die X- und Y-Koordinaten und wähle im Dropdown Menü des Sensorblocks Luftfeuchtigkeit aus.

/images/projects/iaq-station/1.png - Logo

Schritt 2: Messwerte als Abfolge auf dem Display

Damit die anderen Messwerte auch auf dem Display angezeigt werden können, muss ein Abfolge erstellt werden. Am einfachsten lässt sich die Abfolge, mit verschiedenen Displayinhalten über die Fallunterscheidung umsetzten. Hierbei wird je nach Wert ein bestimmten Variablen ein anderer Programmcode ausgeführt. Die Variable kann einfach nach einem bestimmten Zeitintervall hochgezählt werden, sodass alle Fälle nacheinander ausgeführt werden.

Lege dazu im Setup() eine neue Variable mit den Namen status an und weise ihr den Wert 0 zu. Anschließend füge die Fallunterscheidung hinzu. Die Fallunterscheidung findest du unter Logik. Als Variable fügst du dort status ein und gibst an was beim Fall 0 ausgeführt werden soll. Über das Zahnrad kannst du weitere Fälle hinzufügen.

/images/projects/iaq-station/2.png - Logo

Fall 00

Im ersten Fall (status = 0) wird die Temperatur und Luftfeuchtigkeit angezeigt.

Tipp: Blöcke können mit einem Rechtsklick –> Blöcke zusammenfalten kompakter dargstellt werden.

Fall 01

Im zweiten Fall (status = 1) wird nun der Messwerte für den Luftdruck und den Indoor Airquality Index angezeigt.

//images/projects/iaq-station/3.png - Logo

Nun wird über den Block Messintervall alle 10 Sekunden die Variable Status um 1 hochgezählt. Wenn die Variable den Wert 2 erreicht hat, wird diese wieder auf 0 gesetzt, sodass wieder der erste Bildschirm angezeigt wird. Je nach Anzahl der Fälle wird der Zähler hochgesetzt und bei insgesamt 4 Fällen erst bei 5 wieder auf 0 gesetzt.

Schritt 3: Weitere Messwerte hinzufügen

Im nächsten Schritt werden weitere Fälle hinzugefügt und die Messwerte für VOC, C02 und dem Kalibrierungswert angezeigt.

Fall 02

/images/projects/iaq-station/4.png - Logo

Fall 03

/images/projects/iaq-station/5.png - Logo

Kalibrierungswert

Um zuverlässige Messwerte zu liefern, kalibriert sich der Sensor anhand der Umgebungsluft selbst. Der Status wird jeweils über den Kalibrierungswert angezeigt. Daher ist es sinnvoll diesen auch auf dem Display anzeigen zulassen, sodass man sehen kann, ob die Kalibrierung abgeschlossen ist und die Messwerte verwendet werden können. Wenn der Sensor nicht kalibriert ist oder sich gerade kalibriert, werden Messwerte ausgegeben, die allerdings nicht verwendet werden sollten. Folgende Werte für den Kalibrierungswert gibt es:

  • 0: Der Sensor ist gerade gestartet und befindet sich in der Warm Up Phase
  • 1: Die bisheringen Messwerte zeigen zu wenig Unterschiede und können nicht zum Kalibrieren verwendet werden.
  • 2: Der Sensor wird kalibriert
  • 3: Die Kalibrierung des Sensor ist abgeschlossen

Der Kalibrierungsvorgang kann unter Umständen lange dauern (>12h) und zeigt dann den Wert 1 an. Sollte nach dieser Zeit die Kalibrierung nicht starten oder abgeschlossen sein, kann es hilfreich sein, die Umgebungsparameter zu verändert z.B. durch stoßartiges Lüften im Raum oder den Sensor für eine gewissen Zeit in der Hand halten.

Mehr Informationen zur Funktionsweise des Sensor findest du auch hier

Optional: Übertragen der Messwerte an die openSenseMap

Zuerst musst du deine Messstation auf https://workshop.opensensemap.org registrieren. In diesem Beispiel wird die Instanz für Workshops verwendet, du kannst dein Messgerät natürlich auch auf der openSenseMap registrieren.

/images/projects/iaq-station/osem_bme680.png - Logo

Klicke auf die entsprechenden Messwerte unter dem BME680, um diese deinem Messgerät hinzuzufügen. Nach dem Abschluss der Registrierung erhälst du eine Übersicht über die registrierten Phänomene und die zugehörigen ID’s. Lasse die Seite geöffnet, da du die ID’s in Blockly kopieren musst. Zusätzlich benötigst du den API-Schlüssel, der unter dem Punkt “Sicherheit” zu finden ist, wenn du deine senseBox auf der openSenseMap editierst.

Um Messwerte an die openSenseMap zu übertragen, muss eine Internetverbindung hergestellt werden. Dazu wird die senseBox einfach mit deinem Wlan oder mobilen Hotspot verbunden, so erhälst du Zugriff auf deine Messwerte überall auf der Welt. Ziehe dazu den Block Verbinde mit WLAN in das Setup() und füge dort deinen Netzwerknamen und das Passwort ein. Für das Übertragen der Messwerte wird ein zusätzlicher Fall in der Fallunterscheidung angelegt, der ausgeführt wird, wenn die Variable status den Wert 4 hat. Ziehe zum Übertragen der Messwerte den Block Verbinde mit der openSenseMap in den Blockabschnitt für den offenen Fall. Wähle bei diesem Block den Typ Stationär und kopiere deine senseBox ID aus der Übersicht.

Für jeden Messwert, den du nun senden möchtest, ziehe einen Block Sende Messwert an die openSenseMap in den offenen Blockabschnitt, trage die entsprechenden Sensor ID’s ein und verbinde den Block mit dem entsprechenden Messwert.

/images/projects/iaq-station/6.png - Logo

Gesamter Code

/images/projects/iaq-station/7.png - Logo

Hier findest du den gesamten Code in Blockly.