Mit dem Blick auf den anstehenden Herbst und Winter könnte ein kommendes Bastelprojekt daraus bestehen, die Luftqualität in einem Raum zu ermitteln. Sollte man nicht eigenständig regelmäßig selbst auf die Idee kommen zu lüften, könnte man sich hier eine elektronische Unterstützen bauen.
Mit dem CCS811 ist bereits seit einigen Jahren ein Sensor auf dem Markt, mit dem sich dies per se realisieren lassen sollte. Mein Exemplar lag bisher (einmalige Verwendung ausgenommen) ungenutzt in der Ecke. Zeit also, mal genauer zu schauen was der Sensor so kann – und eben vielleicht auch nicht!
Im „Bastelbedarf“ kommt der Sensor oft fertig aufgebaut auf einem kleinen Board, welches die Handhabe mit ihm erleichtert. Wie genau, das mag von Board zu Board etwas unterschiedlich sein. Ich beziehe mich hier auf ein fertiges Platinchen von Adafruit, welches die Verwendung in 2 Punkten erleichtert:
- Pull-Up-Widerstände: Für die Kommunikation mittels I²C sind diese nötig und bereits auf dem Board verlötet. Dies vereinfacht die Verkabelung in unserem Setup, zumindest wenn sonst nichts auf der I²C-Leitung kommuniziert
- Level-Shifting: Egal ob wir ein Development Board mit 3.3V oder 5V Spannung an den I/O-Ports verwenden, dieses Sensor-Modul kommt mit beidem klar
Bleiben am Ende also noch 4 Kabel nötig, um das Board zu betreiben: 3.3V oder eben 5V, Ground, sowie SDA und SCL für die Kommunikation.
Viel Code ist ebenfalls nicht nötig, da es unterschiedliche Bibliotheken gibt die einem die Arbeit erleichtern. Ich nutze in meinem Beispiel die passende Bibliothek zum Board: „Adafruit_CCS811„. Die ist vorab über die Arduino IDE zu installieren. Hier der Code aus meinem Video:
#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;
void setup() {
Serial.begin(115200);
if (!ccs.begin()) {
Serial.println("Keine Kommunikation mit Sensor, Verkabelung prüfen");
while(1);
}
while(!ccs.available());
}
void loop() {
if (ccs.available() && !ccs.readData()) {
Serial.print("CO2: ");
Serial.print(ccs.geteCO2());
Serial.print("ppm, TVOC: ");
Serial.println(ccs.getTVOC());
} else {
Serial.println("Keine Daten empfangen");
delay(5000);
}
delay(1000);
}
Wie man hier sieht ist es möglich mit der Methode getTVOC() die Gesamtzahl der sogenannten Volatile Organic Compounds (VOC) abzurufen. Übersetzt sind das flüchtige organische Verbindungen wie Kohlenwasserstoffe oder Alkohole die sich durch die Luft bewegen. Treffen solche Partikel auf den Sensor, so „zählt“ dieser sie. Mit der Methode geteCO2() lässt sich zudem das sog. equivalent carbon dioxide, also ein CO2-Äquivalent abfragen. Hierbei sollte man jedoch wissen, dass der Sensor nicht in der Lage ist CO2 zu messen. Der ausgegebene Wert ist eine Berechnung, die auf den TVOCs basiert. Entsprechend kann man sich die Frage nach der Güte der ausgegebenen Werte stellen.
Für einen groben Indikator in wie weit sich die Qualität der Luft in einem Raum über die Zeit verändert ist der Sensor aber allemal gut und in Form eines solchen fertig aufgebauten Boards auch für Einsteiger einfach nutzbar. Um die für diesen Sensor bestmöglichen Ergebnisse zu erhalten, sollte man zudem 2 Dinge beachten:
- Vor der ersten Verwendung, sollte der Sensor eine 48 Stunden lange „Burn-In“-Phase durchlaufen. Ergo: Er soll einfach „arbeiten“. Nach 48 Stunden ist er dann „eingebrannt“ und soll vernünftige Ergebnisse liefern
- Vor jeder Verwendung benötigt der Sensor etwa 20 Minuten, bis er „betriebswarm“ ist. Zuvor sind die Ergebnisse ungenau