Crystal Clear action run.png
CO2-Ampel

Status: beta

Calliope CO2-Ampel.jpg
Beschreibung Calliope-Projekt zur Luftgütemessung in Kooperation mit JuMi
Ansprechpartner Andreas



Motivation

Eine Erfassung der Kohlendioxyd-Konzentration in der Raumluft taugt sehr gut zur Bestimmung der Luftgüte. In Zeiten der Corona-Pandemie erhält man so einen Indikator, wann ein Austausch der potenziell mit Viren belasteten Atemluft durch Öffnen der Fenster notwendig ist. Hierbei ist eine CO2-Messung deutlich akkurater als ein starres Zeitintervall zum Lüften, da auf diese Weise auch Faktoren wie Volumen und Anzahl der Personen mit berücksichtigt werden.

Volker Schwinghammer von der Initiative für Jugend und Migration JuMi hat uns daher um Hilfe beim Bau einer CO2-Ampel im Unterrichtsrahmen für seine Migrantenklasse an der Berufsschule AB gebeten.

Plattform

  • Als Hardwareplatform sollte ein bereits vorhandenes Calliope-Mini-Board zum Einsatz kommen
  • Hierfür existiert mit dem SCD30 ein sehr genau arbeitender optoelektronischer CO2-Sensor mit I²C-Anschluss.
  • Als Anzeigeeinheit sollte ein RGB-LED-Ring dienen
  • Die Programmierung sollte mit MakeCode erfolgen, einem web-basierten grafischen Programmiertool

Durchführung

CO2-Sensor

Die Anbindung des CO2-Sensors ist wie im Tutorial beschrieben völlig problemlos. Der elektrische Anschluss erfolgt an den I²C-Port der Calliope mini mittels Grove-Connector. Der Treiber-"Block" in Makecode ist über "Erweiterungen" nach Eingabe der Github-Adresse github.com/calliope-mini/pxt-SCD30 automatisch importierbar. Nun kann einfach z.B. über das auf der Calliope enthaltene LED-Matrix-Display der CO2-Wert angezeigt werden.

RGB-LED-Ring

Über einen Ring mit WS2812-LEDs sollte die Anzeige der Luftgüte erfolgen. Leider ist die Anbindung dieser Art LEDs von den Machern der Calliope offensichtlich so nicht vorgesehen und erforderte einige Tüftelei. Der Ring ist zwar genau wie der Sensor mit einem Grove-Port ausgestattet, allerdings erfolgt die Ansteuerung der adressierbaren LEDs hier nicht per I²C sondern per eigenem Protokoll über eine Datenleitung. Um den Ring physisch anzuschließen, habe ich daher zunächst eine Grove-Buchse im unteren GPIO-Anschlussfeld der Calliope an den Pin C4 + Spannungsversorgung angelötet und festgeklebt. Dabei kam es zu undefinierbarem Verhalten und Flackern der LED-Matrix.

Offensichtlich wurde dieser Pin bereits anderweitig verschaltet. Daher habe ich den Datenpin für den LED-Ring an den Ausgangspin der einzelnen bereits auf der Calliope verbauten WS2812-LED gebodged, in der Hoffnung auf diese Weise alle LEDs als eine gemeinsame Kette adressieren zu können. Dies war jedoch auf Grund von Softwareeinschränkungen in MakeCode ebenfalls nicht möglich. Der Elementblock für die eingebaute RGB-LED kann nicht erweitert werden und die Auswahl des entsprechenden GPIO-Pins P18 ist im Menü für Neopixel-Strips nicht auswählbar. Folglich musste ich den Datenpin ein weiteres Mal bodgen und habe diesmal den Pin C1 gewählt, der auch explizit für externe Ansteuerung an einer Spitze der Calliope herausgeführt ist. Hiermit funktionierte die Ansteuerung des LED-Rings endlich.

Software

Die Programmierung der Software erfolgt nach dem Klickprinzip durch Auswahl und Verknüpfung der entsprechenden Code-Blöcke in MakeCode. Dabei soll kontinuierlich gemessen werden und je nach Messwert des Sensors die Farbe des LED-Rings auf Grün, Gelb oder Rot gesetzt werden. Der fertige Code kann als HEX-Datei im Browser gedownloadet und dann per USB-Verbindung auf die Calliope geflasht werden.

Weitere Infos