Leuchtender und singender Nikolaus mit Picaxe-Steuerung zum Selbstbasteln

Bei diesem Einsteiger-Projekt können Kinder zusammen mit den Eltern einen leuchtenden, singenden Nikolaus mit Picaxe-Steuerung basteln, den Picolaus.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Michael Gaus
  • Miguel Köhnlein
Inhaltsverzeichnis

Vorweihnachtszeit: die Gelegenheit, sich mit Weihnachtsbasteleien und den Kindern zu beschäftigen. Dazu passend gibt es hier einen blinkenden und Weihnachtslieder-piependen Nicolaus zum Selberbauen. Da er von einem Picaxe gesteuert wird, tauften wir ihn auf den Namen Picolaus. Die Anforderungen an Material und handwerkliches Können sind nicht allzu hoch. Einsteiger werden ihn in ein bis zwei Stunden zusammenbauen.

Und wer es etwas anspruchsvoller mag, der erfährt in der Anleitung am Schluß, wie man Picolausis Software und damit sein Können noch erweitern kann. Spaß und Lerneffekt sind also inbegriffen.

Wir haben für den Picolaus eine handelsübliche Lochrasterplatine im Euro-Format verwendet, mit einem Nikolaus-Motiv beklebt und mit Leuchtdioden versehen. Auf der Rückseite der Leiterplatte wird ein Breadboard mit der Ansteuerelektronik montiert, wozu das NanoAxe-Board verwendet wird.

Es können dann verschiedene Lichteffekte generiert werden, zum Beispiel zwinkernde Augen, leuchtende Nase, singender Mund oder blinkende Mütze und Schuhe. Über einen kleinen Lautsprecher können per Tastendruck zusätzlich (Weihnachts)-Melodien abgespielt werden, die im Klingelton-Format RTTTL vorliegen.

Die Stromversorgung erfolgt über die Micro-USB-Buchse, sodass die Schaltung mit 5V über den USB-Port eines PCs oder per USB-Netzteil (z.B. Handy-Ladegerät) oder auch unabhängig von einer 230V-Steckdose per USB-Powerbank versorgt werden kann.

Die Firmware ist über den Picaxe-Editor leicht anpassbar, sodass individuelle Lichtmuster programmiert werden können. Über den im NanoAxe-Board integrierten Flashprogrammer können die Eigenkreationen bequem per USB aufgespielt werden. Gedacht ist das ganze als Weihnachtsdekoration zum Aufhängen mit einer Schnur im Fenster (zum Beispiel an einem Fenstersaugnapf oder an einer vorhandenen Vorhangschiene) oder am Christbaum. Wenn man ein USB-Netzteil verwendet, das über eine handelsübliche Zeitschaltuhr gesteuert wird, kann man den Nikolaus abends für einen bestimmten Zeitraum automatisch leuchten lassen und so für vorweihnachtliche Stimmung sorgen.

Schaltplan des Picolaus

Zur Ansteuerung verwenden wir das NanoAxe-Board mit einem Picaxe 14M2. Dieser hat genügend I/Os, um alle neun low-current-Leuchtdioden direkt ansteuern zu können, ohne dass Multiplexing notwendig ist. Die Kathoden der LEDs sind jeweils mit GND und die Anoden über Vorwiderstände mit den Picaxe-Ausgängen verbunden. Über den Taster TA1 kann per Firmware das Abspielen einer Melodie angetriggert werden. Beim Drücken wird der Pin C.3 des Picaxe 14M2 auf LOW-Pegel gezogen, in der Firmware wird an diesem Portpin ein interner Pullup aktiviert.

Die im NanoAxe-Schaltplansymbol innenliegenden Pins kennzeichnen die Portnummern des hier verwendeten Picaxe 14M2. Er verfügt über 12 I/O-Pins B0-B5 sowie C0-C5. Die Bezeichnungen direkt an den Kontaktleisten PL4 und PL5 stimmen mit dem Aufdruck auf der Platine überein.

Am Pin B.5 ist ein Mini-Lautsprecher mit mindestens 50 Ohm Impedanz angeschlossen, über den der Picaxe eine Melodie abspielen kann. Der Kondensator C2 sorgt dafür, dass nur der Wechselspannungsanteil am Lautsprecher ankommt. Die Leuchtdioden LED5, LED6 und LED7 sind für den Mund des Nikolaus verwendet und werden am gleichen Port wie der Lautsprecher angeschlossen, damit beim Abspielen der Melodie gleichzeitig diese LEDs im Takt blinken können. Der Picaxe unterstützt hierfür nur Pins des gleichen Ports. Es sieht dann ein bisschen so aus, als würde der Nikolaus singen.

Auf dem NanoAxe-Board ist bereits das notwendige Picaxe-Programmierinterface integriert. Somit können jederzeit Änderungen an den Lichteffekten und den Melodien in der Firmware durchgeführt und in den Mikrocontroller geflasht werden. Die Stromversorgung der Schaltung erfolgt über die Micro-USB-Buchse.

  • Board NanoAxe-Board mit Picaxe 14M2
  • R1 - R9 Widerstand 1 kOhm
  • LED1 - LED9 Leuchtdiode 3 mm, low-current, 3x rot, 2x grün, 4x gelb
  • C1 Kondensator 10 µF
  • SP1 Mini-Lautsprecher mit 50...100 Ohm Impedanz z.B. Reichelt Bestellnr. VIS K16-50
  • TA1 Taster (Schließer)
  • Lochraster mit Lötpunkten, einseitig, Raster 2,54 mm, 160 x 100mm
  • Mini-Steckbrett mit 170 Kontakten
  • Dupont-Kabel Typ male

Die Fritzing-Skizze zeigt symbolisch die Verdrahtung des Mini-Breadboards auf der Rückseite des Picolaus. Der Übersichtlichkeit wegen sind die LED-Vorwiderstände nicht eingezeichnet. Da sich die NanoAxe-Platine auf der Platinenrückseite befindet sind die LEDs hier von hinten zu sehen und deshalb spiegelverkehrt angeordnet. Beispielsweise befindet sich Auge1 rechts und Auge2 links.

Die Verschaltung des NanoAxe auf dem Breadboard ist sehr einfach.

Die Schaltung wird auf einer einseitigen Lochrasterplatine mit Lötpunktaugen im 2,54 mm Raster aufgebaut. Es wird das gängige Euro-Maß von 160mm x 100mm verwendet, die Platine muss also nicht gekürzt werden. Zunächst wird das Nikolaus-Motiv in passender Größe auf Papier ausgedruckt und dann als Rechteck mit den Maßen 10 cm waagrecht und 16 cm senkrecht ausgeschnitten. Der hier verwendete Nikolaus wurde anhand einer Youtube-Video-Anleitung selbstgezeichnet und koloriert, anschließend eingescannt und passend skaliert ausgedruckt.

Mit doppelseitigem Klebeband wird dann das Papier auf die Vorderseite der Platine geklebt. Es sind neun LEDs vorgesehen: eine in der Mütze, zwei für die Augen, eine für die Nase, dre für den Mund und zwei für die Schuhe. Wenn man die Platine gegen das Licht hält, sieht man die Löcher der Platine durchscheinen und kann sehen, ob an den gewünschten Stellen der LEDs die vorhandenen Löcher bereits passen.

Nikolausmotiv aufgeklebt und LEDs passend bestückt

In diesem Fall braucht man nur mit einer Nadel das Papier durchzustechen. Überall dort, wo die Löcher nicht genau passen, wird mit einem 1 mm Bohrer durchgebohrt, um die LED-Anschlussdrähte durchstecken zu können. Die LEDs werden bis auf Anschlag durchgesteckt und auf der Rückseite verlötet.

Nikolausmotiv aufgeklebt und LEDs passend bestückt

Alle anderen Bauteile werden auf der Lötseite bestückt, wobei darauf zu achten ist, dass die Anschlussdrähte der Bauteile vorab entsprechend gekürzt werden und nicht durch das Papier auf der Platinenvorderseite pieksen. Die Verdrahtung kann mit Lötzinnbrücken, Drahtresten von den Widerständen sowie Fädeldraht vorgenommen werden. Der kleine Lautsprecher wird mit doppelseitigem Klebeband befestigt.

Auf der Rückseite der Platine wird die Elektronik aufgelötet.

Das NanoAxe-Board wird in das Mini-Breadboard gesteckt und kann somit nach der Weihnachtszeit einfach ausgebaut und für andere Zwecke verwendet werden. Die Verdrahtung zwischen Steckbrett und den auf der Lochrasterplatine aufgelöteten Bauteilen erfolgt durch Dupont-Kabel des Typs male mit einseitig abgeschnittenen Drahtenden. Das Breadboard haben wir über das vorhandene doppelseitige Klebeband befestigt. Damit der Aufbau stabiler wird, haben wir an jeder Seite des Steckbrett jeweils einen kleinen Drahtbügel angelötet als mechanische Begrenzung um ein Verrutschen zu vermeiden. Außerdem haben wir die ungekürzten Kathoden der beiden LEDs für Mund und Nase so umgebogen, dass sich diese in der mittig längs verlaufenden Vertiefung des Steckboards befinden und es dadurch zusätzlich mechanisch fixieren.

Das NanoAxe-Board wird über das Mini-Steckbrett kontaktiert und befestigt.

Als nächstes muss der Picaxe mit der Firmware programmiert werden. Im Picaxe-Editor wird das Firmware-Projekt Picolaus.bas geöffnet und in den Mikrocontroller geflasht. Während des Flashens sollte bereits die LED1 in der Mütze flackern, da diese am Pin SerialOut angeschlossen ist.

Zum Abschluss kann die fertige Platine mit einer Schnur versehen und aufgehängt werden, zum Beispiel im Fenster. Hierzu kann ein Fenstersaugnapf verwendet werden oder auch eine vorhandene Vorhangschiene. Durch Verwendung eines USB-Netzteils, das von einer handelsüblichen Zeitschaltuhr gesteuert wird, kann der leuchtende Nikolaus abends für einen bestimmten Zeitraum automatisch eingeschaltet werden.

Die Firmware wurde mit dem Picaxe Editor erstellt. Ganz oben im Quellcode sind die verwendeten Portpins definiert, sodass man im weiteren Verlauf mit sprechenden Namen anstatt mit den direkten Portpin-Namen arbeiten kann.

#picaxe 14M2
symbol LED_MUETZE = B.0
symbol LED_AUGE_1 = C.0
symbol LED_AUGE_2 = C.1
symbol LED_NASE = B.1
symbol LED_MUND_1 = B.3
symbol LED_MUND_2 = B.4
symbol LED_MUND_3 = B.5
symbol LED_SCHUH_1 = C.2
symbol LED_SCHUH_2 = C.4
symbol SPEAKER = B.2
symbol TUNE_LED_MASK = %00111000
; Taster an C.3 (Taster gedrueckt = LOW-Pegel)
#define KEY_PRESSED PINC.3 = 0
#define KEY_PULLUP_MASK %0000100000000000

Bei Bedarf können die Pins an dieser zentralen Stelle angepasst werden, falls eine Schaltungsänderung vorgenommen wird. Über die Defines LED_xxx sind zum Beispiel die entsprechenden Portpins der LEDs definiert, mit TUNE_LED_MASK wird festgelegt, welche LEDs während der Soundausgabe blinken.

Falls man die Leuchtdioden anders als im Schaltplan angegeben beschaltet hat, kann hier eine Anpassung vorgenommen werden. Mit dem Define SPEAKER ist der Soundausgang festgelegt und mit KEY_PRESSED der Eingangspin sowie der Zustand bei gedrücktem Taster. Passend zum Taster-Pin gibt KEY_PULLUP_MASK den Wert für den entsprechenden internen Pullup an. Beim 14M2 befinden sich hierfür die Pins für den Port C in den oberen 16 Bits.

Das Programm besteht aus 2 Tasks start0 und start1, das heißt, es wird die Multitasking-Fähigkeit des Picaxe 14M2 ausgenutzt. Der Picaxe-Editor sorgt dann dafür, dass der Code so in den Picaxe geflasht wird, dass immer jeweils ein Befehl eines Tasks ausgeführt und dann zum nächsten Task weitergeschaltet wird. Die entsprechenden Befehlszeilen der beiden Tasks hier werden also immer im Wechsel nacheinander ausgeführt.

Der Task start0 übernimmt die Ansteuerung der LEDs. Im Beispiel werden zunächst die LEDs im Gesicht des Nikolaus nacheinander eingeschaltet, anschließend zwinkert er durch Blinken mit den Augen, dann werden die LEDs in der Mütze und Schuhe nacheinander eingeschaltet. Nachdem alle LEDs an sind, werden diese von oben nach unten sozusagen zeilenweise wieder ausgeschaltet, bevor sich das ganze wiederholt. Natürlich kann man der eigenen Krreativität freien Lauf lassen und beliebige Lichteffekte generieren.

Der Task start1 aktiviert den internen Pullup am Pin C.3 für den Taster, sodass bei nicht gedrücktem Taster ein High-Pegel eingelesen wird. Über die Abfrage KEY_PRESSED wird geprüft, ob Low-Pegel anliegt, d.h. ob die Taste gedrückt ist. Falls ja, wird mit dem suspend-Befehl der Task 0 gestoppt, weil die LEDs nun von Task 1 gesteuert werden sollen. Nun werden alle LEDs eingeschaltet und anhand der Variablen songNumber wird die entsprechende Melodie abgespielt.

start1:
input SPEAKER
pullup KEY_PULLUP_MASK
if KEY_PRESSED then
suspend 0 ; Task 0 stoppen
gosub leds_on
select case songNumber
case 0
gosub jingle_bells
case 1
gosub silent_night
case 2
gosub rudolph
case 3
gosub jingle_bells_extended
else
songNumber = 0
gosub jingle_bells
endselect
songNumber = songNumber + 1
pause 1000
gosub leds_off
pause 1000
restart 0 ; Task 0 von vorne starten
endif
goto start1

Es gibt im Picaxe 14M2 vier fest einprogrammierte Melodien, die mit dem play-Befehl abgespielt werden können. Zusätzlich können mit dem tune-Befehl weitere Melodien im RTTTL-Klingelton-Format (monophon) ausgegeben werden. Dieses Format war bei den früheren Mobiltelefonen weit verbreitet. Im Internet gibt es eine große Auswahl an Melodien, zum Beispiel auf dieser Seite, die im Picaxe Editor über den Tune Wizard importiert werden können.

Am Ende der Melodie wird die Variable songNumber um 1 erhöht, sodass beim nächsten Tastendruck die nächste Melodie abgespielt wird. Anschließend werden alle LEDs ausgeschaltet und mit restart der Task 0 neu gestartet, sodass dieser wieder von vorne beginnt.

Im Tune Wizard kann man einen Klingelton importieren und in das passende Format für den Picaxe konvertieren. Als Piezo Pin wird B.2 ausgewählt und bei Select LED Flash B.3, B.4 und B.5 für die drei LEDs des Munds, die dann im Takt der Musik blinken, sodass es ein bisschen so aussieht, als würde der Nikolaus singen.

Die Einstellungen im Tune Wizard

Um eine Auswahl an verfügbaren Melodien im RTTTL-Klingeltelefonformat in Form von zip-Dateien zu erhalten, kann man auf den blauen Link Find a tune klicken. Wenn man eine passende Melodie gefunden hat, öffnet man die entsprechende Datei mit dem Button Open RTTTL txt File. Den anschließenden Dialog mit der Frage Generate BASIC code now? bestätigt man mit ja, die anschließende Frage nach einem wav-File kann mit nein quittiert werden.

Nun sollte im Textfeld result die entsprechende tune-Anweisung erscheinen. Per Klick auf den Button Copy kann diese in die Zwischenablage kopiert und dann im Quellcode eingefügt werden. Falls die Melodie zu schnell oder zu langsam abgespielt wird, kann man den Wert speed beim tune-Befehl anpassen.

Wir wünschen eine fröhliche Vorweihnachtszeit! (hgb)