CO2-Ampel bauen Schritt für Schritt





 Da einige Nachfragen kamen, hier nochmal eine etwas explizitere Anleitung. Auch wenn sie jetzt etwas länger ist, der eigentliche elektrische Aufbau zusammen mit der Programmierung dauert nicht länger als 20 Minuten. Die Installation hängt dann natürlich von den eigenen Ansprüchen ab.

1. Einkaufen

Es braucht (Einkauflinks hier noch zu Reichelt, siehe aber unten)
  1. Den eigentlichen Sensor: MH-Z19B 27,00 Euro
  2. Ein Display: Debo LCD 160x80 Pixel 8,68 Euro 
  3. Einen kleinen Computer, der das ganze steuert: Arduino Nano 8,76 Euro
  4. Eine Stromversorgung: Micro-USB Netzteil 7,02 Euro (Achtung, falsch, der Arduino Nano hat einen Mini-USB Anschluss, nicht Micro! Also entweder ein anderes Netzteil bestellen oder noch einen Adapter. Oder man hat eh noch so ein Kabel und Netzteil in der Ecke liegen)
  5. Kabel zum Anlöten
  6. Gehäuse / Montageplatte (noch nichts ausprobiert)
Der Sensor ist im Moment hochbegehrt und hat daher ziemliche Lieferzeiten, am besten scheint es mir hier momentan, bei Ebay nach "MH-Z19B" zu suchen. Da muss man dann sehen, wieviel man für welche Lieferzeit bereit ist, auszugeben. Wenn man große Mengen bauen will (oder als reseller sein Glück versuchen will), kann man natürlich auch gleich zu AliExpress gehen und direkt in China shoppen.

Das Display ist halt das, was ich ausgesucht habe. Da gäbe es viele Alternativen. Der Großteil des Programms (siehe unten) widmet sich aber genau der Ansteuerung dieses Displays. Mit anderen Worten: Nimmt man ein anderes Display, muss man gegebenenfalls die Software anpassen. Ist aber kein Hexenwerk, vor der Bestellung einfach ins Datenblatt schauen.

Update: Auch bei den Displays gibt es inzwischen Lieferengpässe. Es stellt sich heraus, dass andere genauso funktionieren (ohne Softwareanpassung), solange sie den gleichen Controller haben. Das Suchstichwort für Amazon oder Ebay ist "ST7735S", man muss nur darauf achten, dass es auch 8 Anschlüsse hat (nicht nur I2C mit vier Anschlüssen). Die Namen der Pins können etwas variieren, z.B. war bei meinem Nachkauf, der Pin, der unten "DIN" heisst, mit "SDA" und der, der unten "CLK" heisst, mit "SCL" beschriftet. Die Alternativen sind zum Teil auch noch billiger, allerdings hatte der von mir gekaufte Ersatz keine Steckkabel, so dass auch hier die acht Verbindungen zum Arduino gelötet werden mussten.

Andere 1-Platinencomputer gehen sicher auch, insbesondere andere Arduino. Den Nano habe ich wegen Größe, Preis und Verfügbarkeit ausgesucht.

Was die Stromversorgung angeht: Hier ist auch viel Freiheit, man muss halt irgendwie 5V in den Arduino reinbekommen, am einfachsten geht das über den Mini-USB Anschluss, über den dieser auch programmiert wird (man kann die CO2-Ampel also insbesondere auch am USB-Anschluss eines Laptops betreiben, dann kann bekommt man die aktuellen Messwerte auch auf der seriellen Schnittstelle und kann sie auswerten).

2. Der Zusammenbau

Um den Sensor mit dem Arduino zu verbinden, müssen vier Kabel angelötet werden:

Die Anschlüsse sind beschriftet. Bei mir sieht das so aus:



Das Display kann einfach über Steckverbindungen angeschlossen werden. Welches Kabel wohin kommt, geht aus der Tabelle auf Seite 13 der Display-Anleitung hervor.

3. Arduino programmieren

Um Programme auf den Arduino zu bekommen braucht man USB-Kabel zum PC/Laptop und die Programmierumgebung Arduino IDE. Ausserdem braucht man die Software für die CO2-Ampel. Diese liegt in einem GitHub-Repository. Vornehme Menschen clonen das mittels eines beliebigen git clients, man kann sich auch einfach alle Dateien in einer ZIP-Datei herunterladen. Jetzt öffnet man die Datei

./LCD/0.96inch_LCD_Module_code/Arduino/LCD_Show/LCD_Show.ino


in der  Arduino-IDE und klickt auf das Häkchen-Icon ("Verify"), wodurch das Programm übersetzt wird. Dann muss man noch im "Tools"-Menu den Arduino-Typ einstellen und vor allem dem Port, an dem der Arduino über USB angeschlossen ist. Durch drücken auf das Pfeil-rechts-Icon ("Upload") wird dann das Programm auf den Arduino übertragen und der sollte dann auch gleich mit dem Messen anfangen. Falls er beim Starten stecken bleibt (passiert manchmal), nochmal auf den Reset-Knopf auf der Rückseite des Arduino drücken, dann sollte es laufen.

4. Installation

Hier sind der Kreativität keine Grenzen gesetzt. Zu Zeit benutze ich eine Plexiglas-Platte, in die ich ein paar Löcher bohre, durch die ich dünne Kabelbinder stecke, um die Bauteile zu fixieren. Ich habe aber inzwischen auch schon Vorlagen für Gehäuse (eines für einen Lasercutter, eines für einen 3d-Drucker) bekommen, diese finden sich auch im Repository.
Man sollte bei der Installation nur darauf achten, dass die beiden Fenster des Sensors gut mit Raumluft in Verbindung sind, sonst misst man nur den CO2-Gehalt im Gehäuse.


Kommentare

  1. Antworten
    1. Ich habe da mal eine Frage nach dem ich den Sketch nach der zip heruntergeladen hat,hat er mir immer wieder bei dem Sketch Fehler gezeigt und ich konnte ihn nicht hochladen haben sie eine idee ?
      Lg Noah

      Löschen
    2. Was sind denn die Fehler, die angezeigt werden? Port richtig eingestellt? Arduino-Modell richtig eingestellt?

      Löschen
  2. Hey,

    ich hab den MH-Z19B Sensor mit einer schwarzen Platine. Bei diesem sind die Beschriftungen nicht dieselben. Statt den üblichen stehen diese hier draufgeschrieben: Hd, Txd, Rxd, Vo, PWM, V- und V+.
    Kann ich davon ausgehen, dass das einfach nur andere Namen sind?
    Txd = Tx
    Rxd = Rx
    V- = GND
    V+ = V1n

    Können Sie auch erklären, wie man die Kabel am besten löten sollte?

    AntwortenLöschen
    Antworten
    1. Ich denke, die Übersetzung der Anschlussbezeichnungen ist richtig. Was soll ich zum Kabel-Löten sagen? Etwa 3mm abisolieren, durch das Loch durchstecken und dann mit Lötkolben heiss machen und ein Tropfen Lötzinn dran. Drauf achten, dass keine "kalte Lötstelle" entsteht: https://de.wikipedia.org/wiki/Löten

      Löschen
  3. Ich meine beim Löten vor allem die Stiftleisten an dem Arduino. Wie soll man denn da vorgehen? Ich bin leider absoluter Anfänger.

    AntwortenLöschen
  4. Schau mal bei YouTube nach Stift Leiste löten, zb dieses hier, richtig los geht es bei Minute 3: https://youtu.be/UDdbaMk39tM

    AntwortenLöschen
  5. Nein, die Stiftleisten sind am Arduino schon befestigt, aber ich muss auch die Kabel anlöten. Die Kabel, die den Sensor mit dem Arduino verbinden, müssen am Arduino angelötet werden, aber weil die Stiftleisten schon dran sind, weiß ich nicht, wie ich vorgehen soll. Wie Sie ja oben geschrieben haben, steckt man normalerweise das Kabel durch die Platine und lötet es. An dem Sensor war ich schon erfolgreich, aber beim Arduino weiß ich nicht, wie ich das Kabel jetzt an der Stiftleiste anbringen soll.

    AntwortenLöschen
  6. Sowie es bei Ihnen auch ist, soweit ich es im Bild sehen kann.

    AntwortenLöschen
  7. Ach so. Einfach 1-2mm am Kabel abisolieren, mit Lötkolben Anwärmen und ein Tropfen Lot dran. Dann die Lötstelle auf der Unterseite des Arduino schmelzen zusammen mit dem Kabelende und kalt werden lassen. Fertig.

    AntwortenLöschen
    Antworten
    1. In den ersten drei Minuten von https://youtu.be/D2qhyoNxiS8 wird’s gezeigt.

      Löschen
  8. Hallo,
    ich habe alles angeschlossen und alle Komponenten erhalten auch Strom, aber mein Display zeigt mir nichts an. Der leuchtet einfach nur blau. Können Sie mir weiterhelfen? Das Programm konnte ich mit ATmega328p (old bootloader) hochladen.

    Außerdem wurden beim Kompilieren des Programms Warnungen angezeigt, aber Kompilieren konnte es trotzdem.


    Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: "Arduino Nano, ATmega328P"

    sketch\GUI_Paint.cpp: In function 'void Paint_DrawString_CN(uint16_t, uint16_t, const char*, cFONT*, uint16_t, uint16_t)':

    sketch\GUI_Paint.cpp:500:32: warning: invalid conversion from 'const char*' to 'const unsigned char*' [-fpermissive]

    const unsigned char* p_text = pString;

    ^~~~~~~

    sketch\font12.cpp:110:1: warning: initializer-string for array of chars is too long [-fpermissive]

    };

    ^

    sketch\font12.cpp:110:1: warning: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing]

    sketch\font12.cpp:110:1: warning: narrowing conversion of '128' from 'int' to 'char' inside { } [-Wnarrowing]

    sketch\font12.cpp:110:1: warning: narrowing conversion of '255' from 'int' to 'char' inside { } [-Wnarrowing]

    und noch weitere von diesem Typ..

    AntwortenLöschen
  9. Jetzt wird mir plötzlich doch ein Wert angezeigt. Das Programm scheint nicht sehr stabil zu sein.

    AntwortenLöschen
  10. Können mir die Werte auch gleichzeitig auf dem Computer angezeigt werden? Zum Beispiel in einem Diagramm?

    AntwortenLöschen
    Antworten
    1. Ja, in der Arduino IDE unter "Tools" gibt es "Serial Plotter". Der Plotter genau die Kurve. Der Arduino schreibt jede Sekunde den aktuellen Wert auf die serielle Schnittstelle. Das kann man auf der PC Seite auslesen und abspeichern oder weiterverarbeiten. Den orange-blauen Plot auf https://homeschoolschwabing.blogspot.com/2020/09/co2-ampel-selber-bauen.html habe ich genau so gemacht (mit Mathematica).

      Löschen
  11. Moin Moin,
    erstmal vielen Dank für das Projekt.
    Ich habe es nach Ihrer Anleitung nachgebaut, den Sketch auf den Nano geladen (Clone), Display angeschlossen und den Sensor verlötet.
    Beim Starten der Ampel Zeigt das Display "CO2 Konz. und Ihren Namen an" soweit so gut, dann wird das Display kurz Rot und dann ist nur noch die Hintergrundbeleuchtung an.
    Auch nach einem Reset bleibt er an dieser Position hängen, woran kann das liegen? :(

    AntwortenLöschen
    Antworten
    1. Das klingt ganz danach, als ob der Arduino versucht, den Sensor auszulesen, aber keine Antwort bekommt. Da würde ich als erstes die vier Kabelverbindungen zum Sensor nochmal genau prüfen.

      Löschen
    2. Vielen Dank für den Tipp, hab die Kabel nachgelötet und schon funktioniert die CO2 Ampel. :)

      Löschen
    3. Dann bin ich ja beruhigt, dass sich der Fehler finden liess. Ich hatte mal das gleiche Verhalten, als ich die Rx- und Tx-Kabel verdreht hatte.

      Löschen
  12. Moin, ich habe ein Problem mit der Library des Displays, wie kann ich diese herunterladen und in meine Library auf dem Rechner installieren? Bei Github kann ich es nicht als .zip Datei speichern.

    AntwortenLöschen

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

CO2 Ampel selber bauen

Lochkamera