Smart Home Luftqualitätssensor. Reagiert auf CO2.

Über das Projekt

Ausreichend lüften ist wichtig für die Gesundheit. Der MQ-135-Sensor überwacht die Raumluft. Präziser ausgedrückt: Laut Datenblatt des Herstellers überwacht er die Raumluft auf CO2, Alkohol, Benzene, NOx, NH3. CO2 ist das vierthäufigste Gas in der Erdatmosphäre. Die anderen der genannten Gase treten in der Regel und  glücklicherweise viel seltener auf. Das können wir nutzen und mit dem MQ-135 eine Quasi-CO2-Messgerät bauen, das weitaus günstiger als verfügbare CO2-Messgeräte ist.

Dabei dürfen wir natürlich keine Labor-Präzision erwarten. Es geht vielmehr darum, anzuzeigen, ob es Zeit ist, mal wieder zu Lüften.

Außerdem sollte das Spielerische, die Begeisterung für die IOT-Technologe im Vordergrund stehen. Denn in diesem Bausatz verbinden wir den MQ-135 einerseits mit einer RBG LED, um anzuzeigen, ob die Raumluft OK ist (grün) oder ob gelüftet werden soll (rot). Nach dem Start wird eine mehrminütige Kalibrierungsphase durchlaufen (blau). Außerdem verbinden wir den MQ-135 über einen Mini-NodeMCU Microprozessor mit dem Internet. Die CO2-Werte können somit auch via MQTT an gängige Smart Home Systeme (wie z.B. Home Assistant) übertragen werden.

Der Aufbau erfordert gewisse Elektronik- und PC Kenntnisse. Zum Aufspielen der Software ist ein Computer mit installierter Arduino IDE erforderlich.

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. Der MQ-135-Sensor selbst wird warm und sollte daher nur betrieben werden, wenn man anwesend ist. Außerdem hat der MQ-135-Sensor eine gewissen Einbrennzeit, in der die Werte noch schwanken können.

Hardware

Bauteile

Zum Aufbau werden folgende Bauteile benötigt:

  • MQ-135, Sensor, Standalone
  • 1 x 10 Kiloohm Wiederstand
  • WeMos D1 mini NodeMCU
  • 5mm RGB LED, 4pins, gemeinsame Kathode
  • 3 x 220 Ohm Widerstände
  • Leiterplatte
  • Montageschrauben (optional)
  • Gehäuse (optional)

Der komplette Bausatz in unserem Shop:

Löten

Damit der „D1 Mini NodeMCU“ mit der Leiterplatte verlötet werden kann, muss er zuerst mit den PINs verlötet werden. Dabei bitte darauf achten, dass die PINs rechtwinklig angelötet werden, damit sie später auch zur Leiterplatte passen.

Im nächsten Schritt werden alle Bauteile mit der Leiterplatte verlötet.

Die Markierungen auf der Leiterplatte helfen dabei, die Bauteile korrekt zu platzieren.

Dabei bitte unbedingt beachten:

  • Bitte die abgeflachte Seite der LED an der abgeflachten Seite des LED-Symbols auf der Leiterplatte ausrichten, da sonst das Kit nicht funktioniert und der NodeMCU zerstört werden kann.
  • Die Widerstände habe unterschiedliche Werte, wenn sie falsch eingelötet werden, funktioniert das Kit nicht.
    • Die Widerstände R1 - R3 haben 220 Ohm
    • Der Widerstand R4 hat 10 Kiloohm
  • Der MQ-135 Sensor ist symmetrisch aufgebaut. Somit ist es egal, wie herum er auf die Leiterplatte gelötet wird.

Anschließend mit einer geeigneten Zange die überstehenden Drähte der Bauteile kürzen.

Erster Test

Werden die Bauteile falsch verlötet 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
  • ArduinoJson.h

Die Bibliothek "ESP8266WiFi.h" ist durch das Auswählen des "Generic ESP8266 Module" als Board automatisch verfügbar (siehe vorheriger Schritt).

Die anderen beiden 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 "ArduinoJason" 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-1

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.

ANBINDUNG AN SMART HOME SYSTEM

Die NEOE IOT-Kits werden für Home Assistant entwickelt und getestet, da dieses das aufgrund der umfangreichen und ausgereiften Funktionalitäten aktuell von uns präferierte Smart Home System ist. Weitere Informationen zu Home Assistant siehe https://www.home-assistant.io.

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

Nach jedem Neustart (d.h. neue Verbindung mit Strom) durchläuft der Sensor eine Kalibrierungsphase. Während dieser Zeit ist die Indikator-LED blau. Die aktuelle CO2-Konzentration in der Raumluft wird dabei als 397.13 ppm definiert. Damit der Sensor korrekte Werte ausgibt, muss diese Kalibrierung an der frischen Luft oder zumindest in einem komplett gelüfteten Raum durchgeführt werden.

Sobald die Kalibrierung abgeschlossen ist, wird die Indikator-LED grün.

Wurde die Kalibrierung in einem schlecht gelüfteten Raum durchgeführt und wird dann gelüftet oder der Sensor komplett frischer Luft ausgesetzt, startet die Kalibrierung wieder (die Indikator-LED wird wieder blau), solange bis der sich der Sensor neu kalibriert hat.

Indikator-LED

Abhängig vom ermittelten CO2-Wert verändert sich die Indikator-LED (nach erfolgter Kalibrierung) in einem fließenden Farbverlauf:

  • Unter 1000 ppm ist sie grün.
  • Ab ca. 1000 ppm geht das Grün in einen leichten Gelbstich über.
  • Bei ca. 1500 ppm ist sie gelb.
  • Bei ca. 2000 ppm ist sie rot.

Gehäuse

Falls gewünscht, kann der Luftqualitätssensor in einem Gehäuse untergebracht werden. Hierzu gibt es zwei Varianten.

Variante 1: Gehäuse selbst mit einem 3D-Drucker erstellen

Druckdaten siehe https://www.thingiverse.com/thing:3993650

Variante 2: Gehäuse in unserem Shop kaufen

Dieses Gehäuse aus transparenten Acrlyglasplatten bieten wir optional in unserem Shop an. Siehe: NEOE-Kit-1

Häufige Fragen

Die Werte schwanken sehr, woran kann das liegen?

  • Eventuell befindet sich der Sensor noch in der „Einbrennphase“. Nach ca. 48 Stunden betrieb sollten die Werte stabiler sein.
  • Eventuell ist der Sensor nicht gut in das Breadboard gesteckt und beim Bewegen ändert sich der Kontaktwiderstand. Dann die Steckverbindung des Sensors prüfen.

Die Indikator-LED leuchtet gar nicht

  • Wurden die WLAN-Zugangsdaten korrekt hinterlegt? Achtung: Groß-Kleinschreibung ist wichtig.

Die Indikator-LED wechselt zwischen Blau und Grün

  • Wir haben die Indikator-LED so programmiert, dass bereits nach 95% erfolgter Kalibrierung der Wechsel zu Grün stattfindet. Wird während der Kalibrierungsphase der CO2-Wert oder der Wert eines der anderen vom Sensor erkannten Gase erhöht, kann der Wechsel zu Grün zu früh stattfinden. Geht der Wert dann wieder zurück, erkennt das Programm, dass die Kalibrierung noch nicht abgeschlossen ist und die LED leuchtet wieder blau. Die Kalibrierung wird dann solange fortgesetzt, bis der Zielwert erreicht ist.

Der CO2-Wert pendelt sich bei geöffnetem Fenster irgendwo zwischen 400 und 450 ppm ein. Müsste er nicht bei 397,13 ppm liegen?

  • Technisch bedingt schwanken die Werte des MQ-135-Sensors etwas. Unser Kalibrierungs-Algorythmus definiert den niedrigstmöglichen Wert als 397,13 ppm. Der „eingependelte“ CO2-Wert ist somit der niedrigstmögliche Wert zuzüglich der technisch bedingten Schwankungen des Sensors. Für die Funktion „ist die Raumluft OK oder sollte mal wieder gelüftet werden?“ sollte die Informationsqualität ausreichen. Wenn ein exakterer CO2-Wert bestimmt werden muss, empfehlen wir spezielle Messgeräte, welche jedoch viel teurer sind.

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. 

Ich erhalte beim Kompilieren des Arduino-Sketches die Fehlermeldung "ESP8266WiFi.h: No such file or directory"

  • Es wurde das falsche Board ausgewählt. Damit der Sketch erfolgreich kompiliert / hochgeladen werden kann, muss das Board "Generic ESP8266 Module" ausgewählt werden. Siehe Abschnitt "Arduino Programmierung".

 

 

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