eCO2-Sensor, Thermometer, Hygrometer mit OLED-Display.

Über das Projekt

Das CCS811 HDC1080 eCO2 Temperatur, Luftfeuchtigkeit und VOC Luftqualitäts-Sensor Modul CJMCU-8118 bietet den Vorteil, dass in einem Board gleich mehrere relevante Parameter der Raumluftqualität überwacht werden können. Die gemessenen Temperatur- und Luftfeuchtigkeitsmesswerte helfen darüber hinaus, präzisere eCO2-Messwerte zu erhalten.

Die ermittelten Werte zeigen wir einerseits über ein 1,3 Zoll OLED-Display an. Andererseits übermitteln wir sie via MQTT an den Home Assistant.

Mit dem CCS811 Sensor werden die eCO2-Konzentration (Äquivalent berechnetes Kohlendioxid) in einem Bereich von 400 bis 8192 ppm (parts per million) und die TVOC-Konzentration (Total Volatile Organic Compound) in einem Bereich von 0 bis 1187 ppb (parts per billion) gemessen. Laut Datenblatt reagiert der Sensor auf Alkohole, Aldehyde, Ketone, organische Säuren, Amine, aliphatische und aromatische Kohlenwasserstoffe. Daher ist die eCO2-Konzentration nur ein Näherungswert und kann je nach anderer in der Raumluft vorhandener Substanzen etwas von der tatsächlichen CO2-Konzentration abweichen.

Mit dem HDC1080-Sensor wird Temperatur und Luftfeuchtigkeit gemessen. Da die beiden Sensoren (CCS811 und HDC1080) auf demselben Board verbaut sind, und der CCS811-Sensor beim Messen Wärme entwickelt, kann die gemessene Temperatur um wenige Grad von der tatsächlichen Temperatur abweichen. Je weniger Messungen pro Zeitraum der CCS811-Sensor durchführt, umso geringer ist die Temperatur-Abweichung. Allerdings sollten die Abstände der Messungen auch nicht zu weit auseinander sein, da der CCS811 nach dem Start zunächst eine Kalibrierung durchführt und wir gerne möglichst schnell präzise eCO2-Werte ermitteln möchten. Wir haben uns in diesem Tutorial daher entschieden, eine Messung alle 10 Sekunden durchzuführen und im Arduino-Sketch einen Korrekturfaktur von 0,5 Grad für das Thermometer zu hinterlegen.

Der CCS811-Sensor hat eine Einbrennzeit von bis zu 48 Stunden, in der die Werte noch schwanken können. Für die Kalibrierung nach Start sollten wir rund 20 Minuten einräumen und während dieser Zeit einmal komplett durchlüften.

Disclaimer: Es handelt sich hier um einen Bausatz für Hobbybastler, die sich für IOT begeistern. Für die Funktionsfähigkeit der Luftqualitätsmessung kann daher keine Verantwortung übernommen werden. Für eine präzise CO2-Messung empfehlen wir, ein entsprechendes CO2-Messgerät von einem darauf spezialisierten Hersteller zu nutzen.

Hardware

Bauteile

Zum Aufbau werden folgende Bauteile benötigt:

Das komplette Set an Bauteilen in unserem Shop:

D1 Mini NodeMCU löten

Damit der „D1 Mini NodeMCU“ in das Breadboard gesteckt werden kann, muss er zuerst mit den Pin-Leisten verlötet werden.

Dabei bitte darauf achten, dass die Pin-Leisten rechtwinklig angelötet werden, damit sie später auch zum Breadboard passen. Dazu kann man auch erstmal pro Pin-Leiste einen Pin anlöten und nach Abkühlen alles auf das Breadboard setzen (noch nicht einstecken), um zu prüfen, ob es passt. Falls OK, können dann einfach die weiteren Pins gelötet werden. Falls noch nicht OK (falscher Winkel), kann durch Erwärmen des bereits gelöteten Pins der Winkel der Pin-Leiste noch einfach korrigiert werden.

CJMCU-8118 löten

Analog zu vorhergehender Beschreibung löten wir die Pin-Leiste an das CJMCU-8118 Sensor-Modul.

OLED-Display löten

Analog zu vorhergehender Beschreibung löten wir die Pin-Leiste an das OLED Display-Modul.

Stecken

Im nächsten Schritt werden alle Bauteile auf das Breadboard gesteckt.

Die Verkabelung findet dabei wie folgt statt:

  • Gelb: D1 Mini D3 an CJMCU8118 WAK
  • Blau: D1 Mini D2 an CJMCU8118 SDA sowie an OLED SDA
  • Grün: D1 Mini D1 an CJMCU8118 SCL sowie an OLED SCK
  • Schwarz: D1 Mini G an CJMCU8118 GND sowie an OLED GND
  • Rot: D1 Mini 3V an CJMCU8118 VCC sowie an OLED VDD

Das folgende Fritzing-Schaubild gibt einen guten Überblick.

Erster Test

Werden die Bauteile falsch verdrahtet und der NodeMCU an den PC angeschlossen, so kann dies zur Beschädigung des USB-Ports des PCs führen. Daher testen wir erst einmal, indem wir den NodeMCU an ein klassisches USB-Ladegerät oder eine Powerbank mit USB-Kabel anschließen. Wird dort nichts zu heiß, ist das schon einmal ein gutes Zeichen.

ARDUINO PROGRAMMIERUNG

Arduino IDE herunterladen und installieren

Wir benötigen die Arduino IDE, welche hier kostenlos heruntergeladen werden kann: https://www.arduino.cc/en/Main/Software

Noch einfacher geht es auf Windows PCs, dort kann die Arduino IDE über den Microsoft Store installiert werden.

ESP 8266 Board hinzufügen

Zunächst ist folgende "Zusätzliche Boardverwalter URL" in den Voreinstellungen zu ergänzen: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Dazu gehen wir wie folgt vor:

1. Wir rufen die Voreinstellungen auf:

2. Wir ergänzen die URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json

"ESP8266" Board installieren

Dazu navigieren wir zu "Werkzeuge -> Board -> Boardverwalter".

Nun suchen wir nach "ESP8266" und installieren das Board.

"Generic ESP8266 Module" als Board auswählen

Dazu gehen wir wie folgt vor:

1. Wir navigieren über "Werkzeuge -> Board -> ESP8266 Boards"

2. Wir wählen "Generic ESP8266 Module" als Board aus

Upload Speed auswählen

Unter „Werkzeuge -> Upload Speed“ wählen wir 115200 aus.

Bibliotheken verwalten

Wir benötigen die folgenden Arduino Bibliotheken:

  • ESP8266WiFi.h
  • PubSubClient.h
  • U8g2lib.h
  • SPI.h
  • Wire.h
  • ccs811.h
  • ClosedCube_HDC1080.h
  • ArduinoJson.h

Die Bibliotheken "ESP8266WiFi.h", "SPI.h" und "Wire.h" sind durch das Auswählen des "Generic ESP8266 Module" als Board automatisch verfügbar (siehe vorheriger Schritt).

Die anderen Bibliotheken installieren wir wie folgt:

Unter „Werkzeuge -> Bibliotheken“ können wir die erforderlichen Bibliotheken installieren.

1. Wir suchen nach "PubSubClient" und wählen die Bibliothek von Nick O'Leary aus und klicken auf "installieren":

2. Wir suchen nach "U8g2" und wählen die U8g2 Bibliothek von Oliver aus und klicken auf "Installieren".

3. Wir suchen nach "ClosedCube_HDC1080" und wählen die Bibliothek von ClosedCube aus und klicken auf "Installieren".

4. Wir installieren die ccs811.h Bibliothek von Marteen Pennings manuell, da diese nicht über den Bibliotheksverwalter verfügbar ist. Siehe Anleitung unter Abschnitt "Installation" unter https://github.com/maarten-pennings/CCS811. Wir laden also zunächst das komplette ZIP-Archiv von der Projektseite auf GitHub herunter.

 

Danach installieren wir es im Arduino Bibliotheksverwalter über die Funktion ".ZIP-Bibliothek hinzufügen".

5. Wir suchen nach "ArduinoJson" und wählen die Bibliothek von Benoit Blanchon aus und klicken auf "installieren":

Arduino-Sketch von GitHub kopieren

Nun rufen wir den folgenden Arduino-Sketch von GitHub auf und kopieren ihn per "Kopieren / Einfügen" in einen neuen Sketch in unserer Arduino IDE:

https://github.com/NEOE-IO/NEOE-IOT-Kit-6

Nun müssen wir im Arduino Sketch noch individuelle Informationen ergänzen (siehe Kommentare im Sketch), z.B. für

  • WLAN Zugangsdaten
  • MQTT-Server Daten

Bitte dazu sämtliche Kommentare im Sketch sorgfältig lesen.

Arduino-Sketch auf NodeMCU hochladen

Nun schließen wir unseren Luftqualitätssensor über ein USB-Kabel an unseren Computer an.

Anschließend wählen wir über "Werkzeuge -> Port" die relevante USB-Schnittstelle (z.B. COM3 oder COM4) aus.

Nun klicken wir auf "Sketch -> Hochladen" und wenn keine Fehler mehr im Sketch sind, kann er erfolgreich hochgeladen werden und wir können nun unseren „Luftqualitätssensor“ nutzen.

Home Assistant

Zur Grundeinrichtung von Home Assistant siehe https://www.home-assistant.io/getting-started/.

Wir haben den Arduino Sketch so entwickelt, dass er die MQTT Discovery Funktionalität von Home Assistant unterstützt. Dadurch wird der Sensor automatisch von Home Assistant erkannt und die via MQTT übermittelten Daten können direkt in den Dashboards angezeigt werden. Zur Aktivierung der MQTT Discovery Funktion in Home Assistant siehe https://www.home-assistant.io/docs/mqtt/discovery/.

Die Sensordaten können in den Home Assistant Dashboards auf unterschiedliche Art und Weise angezeigt werden.

Sensor Card:

 

Gauge Card:

 

Klickt man auf die jeweilige Card, so wird ein Verlauf angezeigt:

Andere Smart Home Systeme

Dank Nutzung des MQTT-Protokolls sollte eine Anbindung auch an alle anderen Smart Home Systeme, welche MQTT unterstützen, möglich sein. Jedoch können wir aufgrund der Vielzahl unterschiedlicher Systeme dafür keine Garantie übernehmen. Zur Anbindung via MQTT an weitere Smart Home Systeme bitte die Dokumentationen der jeweiligen Smart Home Systeme konsultieren.

Kalibrierung

Der CCS811 kalibriert sich automatisch. Wir empfehlen jedoch, mindestens einmal am Tag komplett durchzulüften, damit der Sensor den eCO2-Nullpunkt neu ermittelt.

Optional: Firmware Upgrade des CCS811

Falls gewünscht, kann ein Firmware-Upgrade des CCS811-Sensors auf Version 2.0 durchgeführt werden. Weitere Informationen siehe https://github.com/maarten-pennings/CCS811/. Wir bitten um Verständnis, dass wir für die extern verlinkten Inhalte keine Haftung übernehmen können.

Häufige Fragen

Die eCO2-Werte des NEO-IOT-Kit-6 weichen von den eCO2-Werten des NEOE-IOT-Kit-1 oder anderen CO2-Messgeräten ab.

  • Die beiden Kits haben unterschiedliche Sensoren und abweichende Programmierungen. Bei beiden Kits sind die ermittelten eCO2-Werte Näherungswerte und keine präzisen CO2-Messdaten. Siehe eingangs in diesem Tutorial erwähnt.

Der Arduino-Programmcode funktioniert nicht und es erscheint eine Fehlermeldung in der Arduino IDE

  • In manchen Browsern ist eine automatische Übersetzung von Englisch auf Deutsch aktiviert. Dies führt dazu, dass der Arduino-Programmcode auf GitHub automatisch auf Deutsch übersetzt und daher falsch angezeigt wird. In diesem Fall bitte vor dem Kopieren und Übertragen des Arduino-Programmcodes die automatische Übersetzung deaktivieren. 

 

 

Disclaimer - alle Angaben ohne Gewähr:

Die in diesem Tutorial (Beitrag) enthaltenen Informationen wurden nach bestem Wissen und Gewissen recherchiert und zusammengetragen. Jedoch können auch uns Fehler passieren. Und genauso kann bei der Umsetzung des Tutorials etwas schief gehen oder können Inhalte missverstanden werden. Für eventuelle Schäden durch das Befolgen dieses Tutorials können wir daher keine Haftung übernehmen. Wir entwickeln unsere Tutorials laufen weiter. Sollte etwas unstimmig oder unklar sein, bitte Bescheid geben, damit wir den betroffenen Punkt korrigieren oder ergänzen können. Vielen Dank.

Hinterlassen Sie einen Kommentar

Bitte beachten Sie, dass Kommentare vor der Veröffentlichung freigegeben werden müssen