Artikel-Schlagworte: „Neopixel“

CO2-Ampel für die Schule

Seit fast einem Jahr müssen wir uns nun schon mit dem Thema „Corona“ beschäftigen. Aktuell schnellen die Infektionszahlen wieder in die Höhe und es entstand bei der besten aller Ehefrauen die Frage, ob denn eine Lüftung im Klassenzimmer nach zwanzig Minuten ausreichend ist.
In diversen Medien wurde der Zusammenhang zwischen CO2-Konzentration in der Raumluft und Virenbelastung diskutiert. Fazit: Je höher die CO2-Konzentration, um so höher ist auch die potentielle Virenbelastung in der Raumluft – klingt jedenfalls logisch für mich ;-).

Daher bot sich die Messung der CO2-Konzentration der Raumluft an, um zu testen, ob die Lüftung nach zwanzig Minuten ausreichend ist oder ob gegebenenfalls früher zu lüften ist.

Das Stichwort lautet also CO2-Ampel. Angeregt durch einen Artikel in der „Make“ googelte ich mich durch diverse Seiten zum Thema. Dabei spielte bei meiner Entscheidung die Verfügbarkeit des CO2-Sensors und schon in der Bastelkiste vorhandener Hardware die entscheidende Rolle.

In meiner „Ampel“ werkelt als Herz ein Arduino Nano, der noch von einem anderen Projekt „übrig“ war. Als CO2-Sensor entschied ich mich für einen MH-Z19B, den ich über einen Händler aus dem „Reich der Mitte“ erwarb. Ursprünglich sollte die CO2-Konzentration nur über eine Ampel mit rot-gelb-grün angezeigt werden. Beim Umgraben der Bastelkiste stolperte ich dann über ein alphanumerisches 14-Segment-Display mit 4 Stellen und ich entschied mich spontan dazu, diese Anzeige noch in der Ampel unterzubringen. So kann ich zusätzlich Texte ausgeben und die CO2-Konzentration im „Klartext“ zur Anzeige bringen. Die Ansteuerung des Displays erfolgt per I2C-Bus und ist durch die Einbindung vorhandener Libraries recht simpel.
Die „Ampel“-Anzeige realisierte ich per WS 2812 (NeoPixel) – RGB-LED’s. Vom Bau meiner Wortuhr hatte ich noch einen Streifen mit 11 LED’s übrig. Auch hier ist die Ansteuerung durch die Verwendung fertiger Bibliotheken recht einfach zu machen.
Weil die Verdrahtung der einzelnen Komponenten auch recht einfach ist, bot sich die Verwendung einer Lochrasterplatte an – für die paar Leitungen lohnt es sich nicht, extra eine Leiterplatte zu entwerfen.

Das Gehäuse entwarf ich mit FreeCAD und druckte es anschließend mit dem 3D-Drucker.  Die entsprechenden Dateien gibt es demnächst hier auch zum Download.
Die beiden Gehäusehälften werden einfach ineinander gesteckt. Durch die beim Drucken entstehende minimale Riffelung der Gehäusewände halten die beiden Teile auch ohne besondere Befestigung gut zusammen.
Der „Ampelturm“ ist aus zwei Teilen zusammengesetzt. Der nach vorn zeigende Teil ist u-förmig und aus transparentem PET gedruckt, die Rückwand ist aus weißem PLA gedruckt. Auf die Rückseite habe ich doppelseitiges Teppichklebeband geklebt. Damit klebt einerseits der Streifen mit den NeoPixeln bombenfest (der Streifen hat zwar selbst eine Klebeschicht, die klebte bei meinem Streifen aber nicht mehr) und andererseits ist damit auch gleich das u-förmige Vorderteil an der Rückwand befestigt.  Das hält bis jetzt jedenfalls ziemlich gut. Alternativ hätte ich beide Seiten mit Klebstoff kleben müssen und das wäre vermutlich eine mehr oder weniger große Sauerei geworden ;-).

Für heute soll es das  gewesen sein – ich muss mir nun erst mal Gedanken machen, wie ich einfach und schnell nen passenden Schaltplan zeichnen kann. Und als nächstes ist das Arduino-Programm aufzuräumen – das ist nur quick and dirty zusammengestrickt, funktioniert zwar super, aber jeder richtige Coder würde bei seinem Anblick vermutlich sofort graue Haare bekommen… 😉

(Hinterher wahrscheinlich auch noch, bin halt nur Teilzeitprogrammierer 😉 )

Foto: CO2-Ampel

Neu im Wohnzimmer – die Wort-Uhr

Foto: Wortuhr

Wortuhren sind seit einiger Zeit ja der letzte Schrei in Sachen Uhr – und wenn man sie kaufen will, zahlt man dafür je nach Anbieter und Ausführung ein kleines Vermögen. Aber es geht zum Glück auch anders. Das Zauberwort heißt Eigenbau. Im Netz der Netze kursieren unzählige Anleitungen zum Bau dieser Uhren und ich habe mir das für mich passende daraus zusammengesucht und einfach mal losgelegt.

Die Basis der Uhr bildet ein Bilderrahmen in der Größe 23x23cm aus einem schwedischen Möbelhaus. Leider wird der seit einiger Zeit nur noch mit einer Scheibe aus Plexiglas geliefert, welches relativ dünn ist und deshalb für die Uhr durch eine Glasscheibe aus der Glaserei um die Ecke ersetzt wurde.

Im Inneren der Uhr werkelt ein RaspberryPi Zero W, welcher in der neuesten Version meiner Uhr 114 Neopixel-LEDs ansteuert. Sicher wird jetzt manch Fachmann die Augen verdrehen und sagen, dass das völlige Ressourcenverschwendung ist und es ein kleinerer Mikrokontroller auch getan hätte. Stimmt! Aber: warum sollte ich es mir unnötig schwer machen?

Den Raspi kann ich super in Python programmieren, ich brauche NULL Bedienelemente, habe keine Sorgen wegen der Genauigkeit der Uhr und muss mir keine Gedanken wegen der jährlichen Zeitumstellungen machen. Ein Update der „Firmware“ ist jederzeit problemlos per WLAN möglich und außer einem Netzteil ist keinerlei zusätzliche Hardware zum Betrieb der Uhr nötig.

Foto: Neopixel-Streifen auf der Rückwand des Bilderrahmens

Die Neopixel-LEDs gibt es in diversen Ausführungen zu kaufen. Für die Uhr fiel die Wahl auf LEDs auf selbstklebende Streifen. Diese kann man nach jeder LED teilen und so fast beliebige Designs erstellen. Ich habe sie in 10 Streifen mit je 11 LEDs aufgeteilt. In der zweiten Version der Uhr sind noch vier einzelne LEDs in den Ecken zur Anzeige der genauen Minute verbaut. Das besondere an den Neopixeln ist die serielle Ansteuerung der einzelnen LEDs. Einfach die Versorgungsspannung und die Datenleitung von Streifen zu streifen durchschleifen und fertig. Über die genaue Ansteuerung dieser LEDs lasse ich mich an dieser Stelle nicht aus, wer mehr wissen möchte, bemühe bitte die Suchmaschine seiner Wahl ;-). Dazu gibt es reichlich Informationen auf vielen anderen Seiten. Hier nur soviel: jedes „Neopixel“ besteht aus einer roten, einer grünen und einer blauen LED. Durch Ansteuern dieser einzelnen LEDs mit unterschiedlichen Helligkeitswerten lassen sich fast alle Farben erzeugen.

Foto: Pappstreifen zur optischen Trennung der LEDs

Damit beim Ansteuern einzelner LEDs nicht die benachbarten Buchstaben mit ausgeleuchtet werden, müssen alle LEDs optisch voneinander getrennt werden. Dazu habe ich aus einfacher Pappe zuerst mit der CNC-Fräse, dann mit dem Lasercutter Streifen geschnitten, die dann zusammengesetzt werden und ein passendes Raster ergeben. Darauf wird zur besseren Streuung des Lichts ein Blatt Transparentpapier geklebt. Dann alles Zusammensetzen und in den Rahmen packen – fertig. Naja… fast. Vorher müssen die Buchstaben ja noch irgendwie auf die Glasscheibe. Der erste Schritt dazu bestand in der Anschaffung eines Schneidplotters. Der war nicht ganz billig, aber ich hatte genug gute Argumente, um ihn der besten aller Ehefrauen schmackhaft zu machen ;-). Dank einiger zwischenzeitlich damit für sie angefertigter Bastelprojekte hat sie die Nützlichkeit dieses Teils anerkannt. 😉

Als nächstes entwarf ich mit dem Opensourceprogramm Inkscape das „Ziffernblatt“ der Uhr. Dabei kam ich ziemlich ins Schwitzen, denn es musste auf Anhieb alles passen – in der Packung Folie, die ich bestellt hatte, waren nur zwei Bögen in schwarzer Farbe enthalten und nachbestellen wollte ich nicht unbedingt. Zudem war der Schneidplotter auch noch nagelneu und die richtigen Einstellungen zum Schneiden der Folie musste ich auch erst noch herausfinden.
Zum Glück passte wirklich alles gleich beim ersten Versuch. Auf verschiedenen Webseiten hatte ich zwar viel darüber gelesen, wie man eine Folie am Sichersten auf eine Glasscheibe bekommt, aber wenn man es dann selbst machen muss, sieht vieles anders aus, als in der Theorie… Also noch eine Sprühflasche organisiert, Wasser und ein Tropfen Spülmittel dazu und dann die Glasplatte ordentlich einsprühen. Folie drauf und fertig? So einfach war es dann doch nicht. Aber mit etwas Geduld und dem Nachplotten einiger Buchstaben (R,O,A,D) passte dann doch noch alles super. Bei der zweiten Uhr lief das dann zum Glück viel entspannter.

Wie schon geschrieben, wird die Uhr von einem RaspberryPi gesteuert, auf dem ein Pythonscript läuft. Ganz sicher ist er damit total unterfordert. Aber ich habe so noch genügend Reserven für einen möglichen Ausbau der Uhr. Im Moment zeigt sie nur die Zeit an, aber irgendwann fällt mir bestimmt noch etwas geniales ein, um die Uhr zu erweitern. Auf dem Plan steht zum Beispiel ein Webinterface. Zurzeit hat die Uhr ja keinerlei Bedienelemente. Für die Grundfunktion sind auch keine nötig. Um die Farbe der LEDs, die Helligkeit, einen Wecker oder Timer zu steuern, wäre ein Webinterface eine feine Sache. Damit könnte man vom Computer, Smartphone oder Tablet alles einstellen und anpassen.

Möglich wäre auch der Anschluss eines kleinen Verstärkers und damit z.B. auf Wunsch die Ansage der Uhrzeit oder das Abspielen von Melodien, zum Geburtstag ein gesprochener Glückwunsch, die Erinnerung an Termine und, und, und…

Foto: Wortuhr, Version 2

Der Schaltplan ist an sich auch sehr simpel. In der neuesten Version habe ich noch einen Taster angebaut, der nach dem Drücken ein sauberes Herunterfahren des Raspberries gewährleistet. Dazu fragt ein Pythonscript den Zustand des Tasters regelmäßig ab und setzt nach dem Betätigen das Kommando zum Herunterfahren des Rechners ab.

Außerdem ist für den Fall, dass das WLAN mal nicht zur Verfügung steht und der Raspberry keinen NTP-Server kontaktieren kann, jetzt ein RTC-Modul mit einer DS3231 bzw. DS1307 installiert. So ist sichergestellt, dass immer die korrekte Zeit angezeigt wird.

Und zum Schluss noch der Schaltplan, der zeigt, dass der Schaltungsaufwand wirklich minimal ist…