CO2 Konzentration mit dem Raspberry Pi und MH-Z19 Sensor messen

Ein zu hoher CO2 Gehalt in der Luft wirkt sich schlecht auf unsere Konzentration und Leistungsfähigkeit aus. Die CO2 / Kohlenstoffdioxid Konzentration lässt sich auch einfach mittels eines Raspberry Pi CO2 Sensors messen und damit z.B. in die eigene Hausautomatisierung mit einbauen. Dadurch können wir automatisch andere Aktionen triggern, wie z.B. die Belüftung eines Raumes.

Wie genau wir am Raspberry Pi einen CO2 Sensor wie den MH-Z19 auslesen und konfigurieren können, schauen wir uns in diesem Tutorial an.

Zubehör für den Raspberry Pi CO2 Sensor

Da der Sensor rein digital angesteuert wird, brauchen wir abgesehen von dem Pi nicht viele weitere Komponenten. Du kannst das Projekt natürlich so erweitern, wie du möchtest. Ich habe folgendes Zubehör genutzt:

  • Raspberry Pi
  • MH-Z19B – dieser kommt mit einem Flachbandkabel, aber du kannst ebenfalls Pinheader daran löten.
  • Jumper Kabel
  • ggf. Pinheader und Lötutensilien

Zwar gibt es auch noch andere Raspberry Pi CO2 Sensoren, allerdings sind diese bei weitem nicht so einfach auszulesen wie der MH-Z19.

 

Exkurs: Messung und Definition der CO2 Konzentration

Die Luft besteht hauptsächlich aus Stickstoff (ca. 78 %) und Sauerstoff (ca. 21 %) und dazu aus weiteren Gasen, wie eben Kohlendioxid (CO2). Dieser wird u.a. von Säugetieren beim Atmen erzeugt. Ist der

Der Kohlenstoffdioxid Gehalt der Luft wird in ppm (Parts per Million) angegeben. Haben wir also ein Volumen, in dem sich eine Million molekulare Verbindungen (N, O2, CO2, etc.) befinden, schauen wir wie viele davon zu welchem Stoff gehören. Anhand des Wertes für Kohlenstoffdioxid können wir die Luftqualität in Räumen besser einschätzen und ggf. (automatisch) Lüften. Eine Übersicht der Werte sehen wir hier (Quelle):

Luftqualität CO2 Gehalt (%) CO2 Konzentration in ppm
Hohe Raumluftqualität < 0.08% < 800
Mittlere Raumluftqualität 0.08% – 0.1% 800 – 1000
Mäßige Raumluftqualität 0.1% – 0.14% 1000 – 1400
Niedrige Raumluftqualität > 0.14% > 1400

 

 

MH-Z19B CO2 Sensor am Raspberry Pi anschließen

Starten wir damit den Raspberry Pi CO2 Sensor anzuschließen. Im Gegensatz zu den MQ-X Gas Sensoren, gibt der MH-Z19 Sensor die CO2 Konzentration der Luft nicht analog zurück, sondern per serieller Kommunikation. Daher ist auch kein Analog-Digital Wandler nötig und erst recht keine Interpolation. Der ausgelesene Wert ist somit präziser.

Die serielle Kommunikation am Raspberry Pi findet über die beiden GPIOs 14 (TX0) und GPIO 15 (RX0) statt (Pin 8 und 10).

Raspberry Pi GPIO Pin Belegung

Raspberry Pi GPIO Pin Belegung

Der MH-Z19 Co2 Sensor hat nicht in allen Versionen bereits Pins angelötet. Die MH-Z19B Version hat allerdings freie Slots, auf die man Pinheader löten kann, um dann Jumper Kabel anzuschließen. Die Beschriftung der Pins befindet sich auf der Rückseite, wie im Datenblatt angegeben:

Raspberry Pi MH-Z19 Co2 Sensor Pins Diagram Datasheet

Der MH-Z19 Sensor wird außerdem mit 5V Spannung versorgt, weshalb wir Pin 2 und Pin 6 (GND) ebenfalls anschließen:

MH-Z19 Sensor Raspberry Pi
V+ (Pin 6) 5V (Pin 2)
V- (Pin 7) GND (Pin 6)
Rxd (Pin 2) GPIO 14 (Pin 8)
Txd (Pin 3) GPIO 15 (Pin 10)

Schematisch sieht die Verkabelung schließlich wie folgt aus:

Pinout MH-Z19 Raspberry Pi

Schematischer Aufbau (Quelle)

Damit sind wir entsprechend vorbereitet und können zum nächsten Punkt gehen.

 

Installation der notwendigen Python-Pakete

Zunächst einmal installieren wir nun eine Bibliothek, mit der wir den Sensor auslesen können. Zwar ist es auch möglich, über die serielle Schnittstelle den CO2 Gehalt direkt abfragen, jedoch ist es mit einer Bibliothek sehr viel einfacher.

Öffne dafür auf dem Raspberry Pi eine neue Konsole (oder verbinde dich per SSH). Zunächst einmal klonen wir das Projekt von Github:

git clone https://github.com/UedaTakeyuki/mh-z19
cd mh-z19

Darin führen wir nun das Setup-Skript aus, das die notwendigen Pakete installiert und freischaltet

./setup.sh

Übrigens: Die Bibliothek gibt es auch als pip-Package.

 

Erster Test des MH-Z19 Raspberry Pi CO2 Sensors MH-Z19

Nun möchten wir den CO2 Gehalt in ppm endlich messen. Hierfür reicht der folgende Befehl (im entsprechenden Verzeichnis):

sudo python -m mh_z19

Die Ausgabe sieht dann z.B. wie folgt aus:

pi@raspberrypi:~/mh-z19 $ sudo python -m mh_z19
{"co2": 619}

In meinem Fall ist der CO2 Gehalt des Raumes also noch nicht zu hoch.

Da die Ausgabe einen JSON String enthält, kannst du den Wert auch einfach in anderen Hausautomatisierungen (OpenHAB, HomeAssistant, Node-RED, etc.) einbinden. Alternativ kannst du auch eigene Python Skripte schreiben und die Funktion dort entsprechend einbauen. Der relevante Code dafür sieht wie folgt aus:

Das erzeugt folgende Ausgabe:

{'SS': 0, 'UhUl': 0, 'TT': 90, 'co2': 619, 'temperature': 21}

 

In welchem Projekt kommt der CO2 Sensor bei euch als nächstes zum Einsatz?

3 Kommentare

    • Hallo Mirko,

      es ist doch ganz normal, dass in einem Blog Verweise auf den Hardware-Bezug mit Affiliate Links angeboten werden. Was stört Dich daran? Wieso Schleichwerbung? Die Infos und Tutorials werden kostenlos angeboten – da finde ich es nur normal, dass ein Teil der Ausgaben (Hostingkosten, Arbeitszeit) über derartige Links kompensiert werden. Es steht Dir frei die Teile über andere Bezugsquellen zu bestellen.

      Antworten
  1. Mit dem T6703 existiert ein CO2 Sensor der über I2C angesprochen werden kann. Dieser läßt sich mMn besser integrieren als ein RS232 Sensor. Zudem bleibt die serielle Schnittstelle frei. In meiner Pi 4 Konfiguration lief er stabiler als der MH-Z19.

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!