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.

In Pocket speichern vorlesen Druckansicht 16 Kommentare lesen
Ein oranger Kürbis mit grün leuchtenden Augen und rot leuchtendem Mund.
Lesezeit: 9 Min.
Von
  • Michael Gaus
  • Miguel Köhnlein
Inhaltsverzeichnis

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.

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.

Das angemalte Kürbisgesicht aus Sperrholz
Kurzinfo
  • 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

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.

Make PICAXE Special

Mehr zum Thema gibt es im Make: PICAXE Special.

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.

Blick auf die Vorderseite mit weißem Papier als Streuscheibe für Augen, Nase und Mund

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.

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.

LED-Stripe mit APA102

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.

LED-Stripe mit WS2801

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.

Die aufgeklebten und mit Litzen verbundenen Teilstücke des LED-Streifens

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.

Die Schaltung mit Nano-Axe-Board

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.

Schaltplan für den Aufbau ohne Nano-Axe-Board

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.

Die Rückseite mit dem Nano-Axe-Board im Steckbrettchen, die Kabel werden direkt daneben zwischen die Lagen des Kürbis geführt.

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.

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.

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.

So sieht der Kürbis im Dunklen aus.

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.

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)