Für Halloween: Beleuchtetes Kürbis-Gesicht mit Nano-Axe-Board
Ob im Fenster oder auf dem Kamin – diese selbstgebaute Deko mit LED-Streifen sorgt für herbstliche Stimmung und wird vom Mikrocontroller Picaxe gesteuert.
- Michael Gaus
- Miguel Köhnlein
Als Dekoration für Halloween haben wir ein 2D-Kürbisgesicht aus Sperrholz und Fotokarton gebastelt. Die Augen, Nase und der Mund werden von RGB-LEDs beleuchtet. Hierfür nutzen wir selbstklebende LED-Stripes. Die Steuerung übernimmt das Nano-Axe-Board mit einem Picaxe-08M2, das exklusiv mit dem Picaxe Special im heise shop erhältlich ist. Das Nano-Axe-Board wird in einem Mini-Steckbrett verdrahtet und auf der Rückseite der Kürbisgesichts montiert. Als Spannungsversorgung reicht eine USB-Powerbank. Das fertige Objekt lässt sich beispielsweise als Halloween-Dekoration auf das Fensterbrett stellen.
Kürbisfigur basteln
Die Vorderseite des Kürbisgesichts haben wir aus Sperrholz gefertigt. Darauf wird das Gesicht mit einem Bleistift aufgezeichnet. Wer nicht frei Hand zeichnen möchte, findet über die einschlägigen Bildersuchen auch passende Vorlagen zum ausdrucken und abpausen. Das von uns verwendete Motiv ist etwa 14 cm breit und 16 cm hoch. Anschließend haben wir den Umriss sowie die Aussparungen für Augen, Nase und Mund mit einer Laubsäge ausgesägt und die Vorderseite passend angemalt.
- Halloween-Deko aus Holzresten
- LED-Streifen an Picaxe anschließen
- Wiederverwendbare Schaltung mit dem Nano-Axe-Board
Checkliste
- Zeitaufwand: ein Nachmittag
- Kosten: ab 35 Euro
- Holzbearbeitung: einfache Sägearbeiten
- Programmieren: Picaxe-Editor
Material
- Nano-Axe-Board mit Picaxe-08M2
- Sperrholzreste
- Oranger Fotokarton
- Weißes Papier
- Orange Farbe
- LED-Streifen APA 102 (30 LEDs/Meter, mit Klebestreifen) oder WS2801 (32 LED/Meter bzw. individuelle Länge)
- Breadboard
- Litze
- Jumperkabel
Danach haben wir den Umriss des Gesichts sowie die Aussparungen mit Bleistift auf einen farbigen Fotokarton übertragen. Ausgeschnitten wird nur der Umriss; die weiteren Markierungen helfen später beim Aufkleben der LEDs. Gleichzeitig dient der Karton als rückseitige Abdeckung des Projekts. Einen weiteren Umriss haben wir auf ein weißes Blatt Papier übertragen. Dieses Blatt kommt auf die Rückseite der Sperrholzfront und zerstreut das Licht der LEDs.
Als Standfuß haben wir ein Sperrholzbrettchen genommen und zwei weitere Brettchen so aufgeklebt, dass ein passender Schlitz entsteht, in den das Holzgesicht eingesteckt werden kann, so wie auf dem Foto zu sehen. Falls es zu wackelig sein sollte, hilft später auch ein wenig Heißkleber zur Fixierung.
RGB-LEDs montieren
Für die Beleuchtung haben wir einen digital steuerbaren LED-Streifen auseinandergeschnitten und die Teilstücke anschließend mit Litzen wieder zusammengelötet, um sie passend aufkleben zu können. Picaxe-Mikrocontroller können LED-Stripes vom Typ APA102 oder WS2801 ansteuern. Sie verfügen neben der Datenleitung noch über eine Taktleitung, sodass die Ansteuerung ähnlich wie beim SPI-Protokoll erfolgt und nicht ganz so zeitkritisch ist. Die bekannten WS2812 (von unserem Hosenträgerprojekt) können dagegen nicht verwendet werden, da sie ein zeitkritisches Timing erfordern, das der Picaxe-08M2 nicht leisten kann.
LED-Streifen ansteuern
Beim von uns verwendeten Typ APA102 ist der Ansteuer-Chip in der LED integriert. Es werden 32 Datenbits pro LED benötigt, wobei das erste Byte einen Header enthält und die folgenden 24 Bits jeweils 8 Bits für die RGB-Farbanteile. Das eingetaktete Farbmuster wird sofort angezeigt, wenn alle Bits einer LED gesendet wurden, es gibt kein Zeitlimit bei der Datenübertragung. Der Beginn einer neuen Übertragung erfolgt durch eine Kennung im Headerbyte.
Vom Typ WS2801 gibt es verschiedene Varianten, wobei man zur Verwendung mit dem Picaxe die 5-Volt-Streifen mit einem Ansteuer-IC pro LED nehmen muss. Beim WS2801 werden 24 Datenbits pro LED übertragen, was jeweils 8 Bit für die RGB-Farbanteile entspreicht. Das Farbmuster wird erst angezeigt, nachdem mindestens 500 Mikrosekunden lang keine Taktpulse mehr angekommen sind. Wenn man den Picaxe-08M2 mit 32 MHz Taktfrequenz betreibt, schafft er das gerade so – vorausgesetzt die LED-Daten liegen bereits vorbereitet im RAM und das SPI-Interface wird per pokesfr
-Befehl benutzt. Obwohl der Chip eine SPI-Einheit bietet, kann bei den M2-Typen der komfortablere Befehl hspi
leider nicht genutzt werden.
LEDs aufkleben
Wir haben sechs LEDs verwendet: zwei für die Augen, eine für die Nase und drei für den Mund. Die Stripes werden an den markierten Stellen auseinandergeschnitten und an den passenden Stellen auf den Fotokarton aufgeklebt (Pfeilrichtung auf dem Stripe beachten). Anschließend werden die Teilstücke mit Litzen wieder verdrahtet, wobei jeweils die Ausgangspins DO (Daten) und CO (Takt) mit den Eingangspins DI und CI der nachfolgenden LED verbunden werden. Der Lötvorgang sollte möglichst nur kurz dauern, um die Lötpads der Stripes nicht zu beschädigen.
Schaltung mit Nano-Axe-Board
Der Schaltungsaufbau gestaltet sich also recht einfach. Im Schaltplan sind nur zwei LEDs als Beispiele eingezeichnet. Die erste LED wird mit dem NanoAxe-Board verbunden. Hier ist noch zu beachten, dass sich die Pin-Bezeichnungen auf dem Board an den Pins des Picaxe-20M2 orientieren – wir nutzen aber den Picaxe-08M2, dessen Bezeichnungen abweichen.
Das Datensignal (grüner Draht) wird am Pin C7 angeschlossen, was dem Pin C.4 des Picaxe-08M2 entspricht und das Taktsignal (weißer Draht) am Pin B0 (C.1 des 08M2). Das VCC-Lötpad (roter Draht) des Stripes wird mit dem 5-V-Pin und das GND-Lötpad (schwarzer Draht) mit dem GND-Pin verdrahtet. Die Spannungsversorgung erfolgt über die USB-Buchse. Beim späteren Einsatz auf dem Fensterbrett kann man beispielsweise eine USB-Powerbank verwenden.
Möchte man die Schaltung ohne NanoAxe-Board aufbauen, dann kann man zuerst den Picaxe-08M2 im Nano-Axe-Board mit der passenden Firmware programmieren und den Chip anschließend in einen IC-Sockel auf einer Lochrasterplatine einsetzen oder in ein Mini-Breadboard einstecken. Wichtig ist der Pulldown-Widerstand R1 am Pin SERIN des Picaxe, damit sich dieser keine Störsignale einfangen kann und irrtümlich in den Programmiermode wechselt. Die Spannungsversorgung ist durch eine fliegend verdrahtete USB-Buchse angedeutet.
Elektronik verdrahten
Das Nano-Axe-Board haben wir auf ein Mini-Breadboard gesteckt, um die Platine nach Halloween wieder für andere Bastelzwecke nutzen zu können. Das Steckbrett hat einen Klebestreifen auf der Rückseite. Die Verbindung zwischen den LEDs und dem NanoAxe-Board haben wir über Dupontkabel mit Stiften (male) vorgenommen. Diese können direkt in das Mini-Breadboard gesteckt werden und auf der anderen Seite mit abgeschnittenem Kabelende an den Lötpads der ersten LED angelötet werden.
Der Fotokarton mit den LEDs wird abschließend mit Abstandshaltern auf das weiße Papier auf der Rückseite des Holzgesichts geklebt. Wir haben in den vier „Ecken“ jeweils zwei kleine Stückchen Wellpappe von einem Verpackungskarton übereinander geklebt, sodass sich ein Abstand von ca. 5 mm zwischen Papier und Fotokarton ergab. Je nachdem, ob die LED-Leuchtpunkte schärfer oder diffuser erscheinen sollen, kann man hier den Abstand etwas variieren. Das Mini-Breadboard haben wir hinter dem Kürbisgesicht auf das Sockelbrettchen geklebt.
Picaxe-Firmware
Unsere
Software zum Herunterladen
ist voreingestellt für die Verwendung des APA102-Streifens mit sechs LEDs und kommt in zwei Varianten: Im Beispiel Halloween.bas läuft eine kleine Animation ab, in der zuerst das Kürbisgesicht schrittweise voll erleuchtet wird und anschließend mit den Augen zwinkert. Hier können eigene Effekte nach Lust und Laune programmiert werden. Im zweiten Beispiel Halloween_Zufall.bas erfolgt eine zufällige Steuerung der Farben und Wartezeiten zwischen den LED-Umschaltvorgängen mittels des random
-Befehls. Bis auf diesen Unterschied sind die Programme ansonsten gleich aufgebaut. Wer das Projekt mit einem anderen Picaxe-Chip als dem 08M2 nachbaut, muss noch die Pinbezeichnungen im Programm ändern.
Datenübertragung und LED-Streifen festlegen
Zu Beginn der Programme werden die beiden Pins für Daten und Takt der LEDs definiert, angelehnt an die SPI-Einheit im Picaxe. Der Taktaushang CLK liegt fix am Pin C.1 des 08M2. Der Datenausgang SDO ist normalerweise an C.0 herausgeführt – dieser Pin ist allerdings auch der serielle Ausgang, über den Debugausgaben mit den Befehlen debug
oder sertxd
ablaufen. Um diese Funktion weiter nutzen zu können, mappen wir SDO auf den Pin C.4 um. Dies erfolgt über das Bit APFCON_SFR
, das wir im Unterprogramm initSpi
mit dem Befehl pokesfr
konfigurieren.
Der LED-Typ (APA102 oder WS2801) wird mit #define APA102
bzw. #define WS2801
angegeben. Im Code ist beides vorbereitet, sodass die falsche Angabe gelöscht oder mit ;
auskommentiert werden kann. Bei symbol NUMBER_OF_LEDS
wird die Gesamtanzahl der LEDs eingetragen, hier 6
. Falls die LEDs zu grell leuchten, kann mit symbol LED_DEFAULT_BRIGHTNESS
die Helligkeit mit hexadezimalen Angaben angepasst werden: Der Wert 0xFF
bedeutet volle Helligkeit.
Farbmuster übertragen
Um den LEDs im Programmablauf einfacher unterschiedliche Farbwerte zuteilen zu können, haben wir noch mit #define
die Bezeichnungen LED_AUGE_1
bis LED_MUND
vergeben. Falls die Verdrahtung der LEDs in anderer Reihenfolge erfolgt ist, können in diesen Defines
die Nummern angepasst werden.
Die Farbwerte für die LEDs werden zunächst nur per bptr
-Zugriff im RAM des Picaxe abgespeichert. Um die vorbereiteten Werte an die LEDs zu übertragen, muss das Makro UPDATE_AND_WAITTIME(t
) aufgerufen werden, das als Parameter t
die anschließend gewünschte Wartezeit in Millisekunden erwartet. Ab dem Label main
ist zu sehen, wie die Ablaufkette aussieht: es werden die gewünschten Änderungen im LED-Muster über die oben genannten Defines
im RAM gesetzt, wobei die Werte unveränderter LEDs im RAM erhalten bleiben. Anschließend werden die Änderungen mit UPDATE_AND_WAITTIME(t)
auf die LEDs übertragen.
Um das fertige Programm auf den Picaxe-Chip zu spielen, gibt es verschiedene Programmierumgebungen, die wir im Sonderheft "Picaxe Special" genauer erklären.
(hch)