In diesem Guide lernst du ganz einfach eine CO2-Ampel mit Display und einem genauen Sensor umzusetzen.
Im heutigen Beitrag möchte ich das Thema DIY CO2-Ampel vom Autor Maik Rygiel aufgreifen. In diesem Beitrag wurde mit dem MH-Z19C Infrarot CO2 Sensor eine kostengünstige CO2-Ampel gebaut. Ampel trifft es in diesem Kontext sehr gut, da durch eine mehrfarbige LED die aktuelle CO2-Konzentrationgefahr visuell dargestellt wird.
In diesem Beitrag wird der Sensor ausgetauscht, um die echte CO2-Konzentration zu messen. Gleichzeitig soll ein TFT-Display noch mehr Informationen über die Umgebung liefern, Temperatur und Luftfeuchtigkeit.
Bevor es aber zum Aufbau und dem Code kommt, wird kurz erklärt, wie die CO2-Sensoren messen und wieso die CO2-Konzentration etwas über die Ausbreitung von Krankheitserregern aussagt.
Die Hardware für die CO2-Ampel mit Display
Für das Update der CO2-Ampel benötigen Sie die folgenden Bauteile:
- D1 Mini ESP8266
- Adafruit SCD-30
- Adafruit 1,69 Zoll 280×240 TFT-Display
- BME280
- Breadboard mit 400 Kontakten
- JumpWires
Alle für dieses Projekt notwendigen Artikel landen mit einem Klick auf den Button direkt in deinem Warenkorb, sofern sie in unserem Shop verfügbar sind. Kontrolliere daher deinen Warenkorb genau!
Die Software
Damit du den D1 Mini programmieren und die gewünschte Funktion der CO2-Ampel erhälst, benötigst du die folgende Software und Bibliotheken:
- Arduino IDE , hier am besten die aktuelle Version herunterladen
- Boardbibliothek für den D1 Mini http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Die folgenden Bibliotheken mit allen Abhängigkeiten
- Adafruit SCD30
- Adafruit ST7735 and ST7789 Library
- Adafruit Zero DMA
- Adafruit SPIFlash
- SdFat – Adafruit Fork
- Adafruit_BME280_Library
Zusammenhang CO2, VOC, und Aerosole und CO2-Messung
Wie bereits in der Einleitung erwähnt, wird kurz erläutert, was die CO2-Konzentration mit VOC, volatile organic compounds, zu Deutsch flüchtige organische Verbindungen, und Aerosole zu tun hat.
In unserer Umgebungsluft beträgt die CO2-Konzentration üblicherweise 400ppm, also 0,04vol%, mit einer VOC-Konzentration von ~0,5ppm. ppm ist die Einheit Parts per million, also Teilchen pro Millionen.
Bei der Luft die wir ausatmen verändert sich diese CO2-Konzentration auf 40.000ppm und auch die VOC-Konzentration steigt leicht an.
Mit der ausgeatmeten Luft werden gleichzeitig sogenannte Aerosole, kleine Tröpfchen die auch Krankheitserreger beinhalten können, ausgeatmet. Daher kann mit steigender CO2-Konzentration und somit steigender Aerosole Menge in einem Raum auch das Ansteckungsrisiko durch die Krankheitserreger in den Aerosolen hergeleitet werden.
Gerade kleinere Tröpfchen können durch eine FFP2- bzw. OP-Maske nicht 100% aufgefangen werden, weswegen die Gesundheitsämter regelmäßiges Lüften als Maßnahme gegen Corona vorschlägt.
Aber wie kann die DIY CO2-Ampel unterscheiden, wann ein Fenster geöffnet werden sollte? Hier kommt die gemessene CO2-Konzentration des Sensors und die Richtwerte vom Umweltbundesamt ins Spiel. Der CO2-Sensor liefert eine Momentaufnahme der CO2-Konzentration im Raum, die mit der Bedenklichkeitseinstufung vom Umweltbundesamt, siehe Tabelle 1, abgeglichen wird.
CO2-Konzentration [ppm] | Bedenklichkeit |
Kleiner 1000 | Hygienisch unbedenklich |
Zwischen 1000 und 2000 | Hygienisch bedenklich |
Über 2000 | Hygienisch inakzeptabel |
Nun könnte man annehmen, dass die diversen CO2-Sensoren alle gleich arbeiten, was aber nicht erklärt, warum einige teuer und andere günstiger sind. Die Antwort liegt hier in der Art der Messung der Sensorik. Gerade günstigere Sensoren messen nicht direkt die CO2-Konzentration, sondern ermitteln einen Schätzwert. Dazu werden andere Gase als CO2 ausgewertet , weswegen diese Art von Sensoren auch meistens als Gassensor verkauft werden. Erst im preisintensiveren Segment erhält man richtige CO2-Sensoren, wie der Adafruit SCD30. Diese messen den tatsächlichen CO2-Gehalt, weswegen diese Art von Sensoren CO2-Sensor genannt werden.
Der Zusammenbau
Nun soll die DIY CO2-Ampel mit Display v2.0 zusammengebaut werden. Dazu musst du die verschiedenen Bauteile gemäß Abbildung 1 bzw. Tabelle 2 verbinden.
D1 Mini Pin | TFT Pin | BME280 Pin | SCCD30 Pin |
3,3V | 3,3V | 3,3V | VIN |
G | G | GND | GND |
D0 | TC | ||
D1 | SCL | SCL | |
D2 | SDA | SDA | |
D3 | SI | ||
D4 | DC | ||
D5 | CK | ||
D7 | SI |
Achte bei allen Komponenten darauf, dass die 3.3V-Spannungsversorgung vom D1 Mini verwendet wird! Einige Komponenten können bei höherer Spannung beschädigt werden. Das TFT-Display hat einen Spannungsregler, weswegen hier ein geringeres Risiko eines Defekts besteht.
Bei der i2c-Verbindung des SCD30 und BME280 werden die Datenleitungen für SDA und SCL in Reihe geschaltet.
Der Programmcode für CO2-Ampel mit Display
Im letzten Schritt muss der D1 Mini noch mit dem Programmcode geflasht werden. Als Vorraussetzung sind die Bibliotheken unter Die Software erforderlich.
Zusätzlich zur I CO2-Warner.ino-Datei gibt es eine header-Datei mit dem Namen bitmap.h, welche sich im gleichen Verzeichnis befinden muss. Andernfalls wird es beim Kompilieren zu Fehlern kommen. Das komplette Paket musst du von https://github.com/BerryBase-de/CO2-Warner kopieren.
Wenn du die oben angegebene Adresse aufgerufen hast, gehe auf Code -> Download ZIP, siehe Abbildung 2.
Nach dem Download muss du die Zip-Datei entpacken. Anschließend öffnest du die Datei CO2-Warner.ino.
Der Programmcode hat viele Kommentare, damit du schnell und einfach debuggen oder Fehler finden kannst, sofern einer der Sensoren nicht reagiert. Damit die loop-Funktion nicht zu überladen wird, sind einige Programmaufgaben in Unterfunktionen ausgelagert worden. Das hilft dir, den Programmcode auf deine Sensoren oder Erweiterungen anzupassen.
Zuletzt noch die Erklärung, wie der Programmcode genau arbeitet. Nach dem Start des D1 Mini wird über die setup-Funktion zunächst die benötigte Hardware vorbereitet. Damit Sie sehen was passiert, gibt das TFT-Display alle Informationen aus, siehe Abbildung 3.
Da bei der Initialisierung vom Display kein Status zurückgegeben wird, siehst du alle Daten gleichzeitig im seriellen Monitor, siehe Abbildung 4.
In der loop-Funktion wird beim Start vom Code bzw. alle 60 Sekunden die Sensoren ausgelesen. Der ausgelesene Wert vom CO2-Sensor wird direkt in das Array iCO2Array geschrieben. Da die letzten 15 Minuten auf dem Display ausgegeben werden sollen, werden die vorherigen Daten geshiftet. Gleichzeitig werden die aktuellen Daten auf dem TFT-Display visualisiert. Je nach CO2-Konzentration gibt das TFT-Display den Status aus, ob gelüftet werden muss oder nicht.
Je nach CO2-Konzentration wird das Bitmap an der rechten Seite vom TFT-Display entsprechend ausgetauscht und eingefärbt. Die Anzeige sollte ähnlich wie in Abbildung 5 aussehen.
Wundern Sie sich am Anfang nicht über die wenigen Daten im Graphen. Da immer minutenweise gemessen wird, dauert es insgesamt 15 Minuten, bis der Graph voll befüllt ist.
Den Maker wecken
Zum Schluss kann nun der Aufbau noch in ein passendes Gehäuse verbaut werden. Hier ist ihrer Kreativität keine Grenzen gesetzt. Gleichzeitig können Sie sich auch überlegen die Icons oder den Text auf dem Display zu verändern.