zurück zum Artikel

Picaxe-Projekt: Ein Schlips für Weiberfastnacht

Hintergrund
Eine Hand hält eine Schere, die ein Stück von einer grünen Pappkrawatte mit bunten LEDs abschneidet.

Schnipp, schnapp, Krawatte ab: Kein Problem bei diesem LED-Schlips für den Karneval. Beide Teile leuchten dank einer ausgeklügelten Schaltung trotzdem weiter.

An Fasnet, auch Fasching oder Karneval genannt, ist es vielerorts Tradition, dass die Damen die Krawatten der Herren abschneiden – als Entschädigung kann der Schlipsträger ein Küsschen einfordern. Als Maker geben wir uns nicht mit einer herkömmlichen Krawatte zufrieden, sondern basteln uns einen elektronischen Schlips mit LED-Strips.

Dieser ist an einer markierten Stelle mit einer Schere abschneidbar, wobei vorher die Spannung wegen sonst drohender Kurzschlüsse abgeschaltet werden muss. Danach funktioniert die LED-Krawatte aber weiterhin. Für Lichteffekte nutzen wir den in BASIC-programmierten Mikrocontroller Picaxe [1], der in Make 2/16 vorgestellt wurde. Auch das abgeschnittene Stück Krawatte kann mit einem zweiten Picaxe eigenständig weiterlaufen, wenn man es über die USB-Buchse mit Spannung versorgt.

Die Krawatte kann schließlich mit wenig Aufwand „repariert“ und so mehrfach verwendet werden. Acht Lötstellen gilt es zu flicken. Hierfür ist nur etwas Klebeband und ein Lötkolben erforderlich. Mit einem Gas- oder Handlötkolben ist auch die mobile Reparatur möglich [2].

Kurzinfo

Checkliste

Material

Vorderseite der Krawatte basteln

Auf dem Bastelkarton wird die Krawattenform aufgezeichnet und ausgeschnitten. Der gestrichelte Teil links kann nach hinten umgeknickt werden, um dort die Gummischnur einzulegen. Mit doppelseitigem Klebeband kleben wir den Karton auf der Rückseite um. Die Gummischnur binden wir zu einer Schlaufe, sodass die Krawatte später um den Hals gelegt werden kann.

Zeichnung Abmessungen LED-Schlips.
Abmessungen der Krawatte (in cm)

Der LED-Streifen wird mit einer Schere an den vorgesehenen Trennstellen auf die benötigten Teile zurechtgeschnitten: zwei Stücke mit jeweils 14 LEDs und zwei Stücke mit nur einer LED. Die LED-Anzahl kann angepasst werden, damit die Teile auf dem Karton Platz finden. Beim Aufkleben muss man unbedingt auf die korrekte Ausrichtung achten. Auf dem LED-Streifen sind dafür Pfeile aufgedruckt. Außerdem kann die Krawatte nach Belieben verziert, bemalt oder beklebt werden. Wir haben ein Sprüchlein ausgedruckt und aufgeklebt.

LED-Krawatte, die erste und letzte LED des Steifens sind markiert.
Krawatte beklebt mit den LED-Streifen

Anschließend verbinden wir die LED-Streifen an der Krawattenspitze durch feste, blanke Drahtstücke miteinander, so wie auf dem Foto gezeigt. Die Drähte werden mit einer Zange passend gebogen und dürfen sich nicht berühren.

Spitze der LED-Krawatte: die LEDs vor und hinter der Schnittkante sind markiert.
Mit Drahtstücken werden die LED-Stripe-Stücke in der Krawattenspitze miteinander verlötet. Beim Scherensymbol ist die Krawatte später abschneidbar.

Um den weiteren Nachbau besser nachvollziehen zu können, schauen wir zunächst auf den Schaltplan, aus dem die erforderlichen Verdrahtungen der beiden Picaxe-Controller ersichtlich sind.

Die Picaxe-Schaltungen

Im oberen Teil ist die Schaltung des Primary-Controllers zu sehen. Im Ausgangszustand der Krawatte steuert dieser die kompletten 30 LEDs. Dabei handelt es sich um eine kaskadierte LED-Kette, die über die LED_1 (siehe Foto) mit den Daten- und Taktsignalen versorgt wird, die der Picaxe (IC1) generiert.

Schaltpläne des LED-Schlips

Damit die Kette intakt bleibt, wenn die Krawatte geteilt ist, brücken wir die Daten- und Taktsignale von LED_11 und LED_20 jeweils über 10 kOhm Widerstände (R3 und R4). Solange die Kette nicht unterbrochen ist, sind sie wirkungslos, da die niederohmigen Ausgangstreiber der LED_19 die Signale für LED_20 vorgeben.

Schaltung erhalten trotz Schlipsschnitt

Bei dem abgeschnittenem Schlips sind die Verbindungen zwischen LED_11 und LED_12 sowie zwischen LED_19 und LED_20 unterbrochen, sodass nun automatisch die Ausgangstreiber von LED_11 über die Widerstände R3 und R4 mit den Eingängen von LED_20 verbunden sind und die Kette mit weniger LEDs erhalten bleibt. Zusätzlich muss die 5-Volt-Spannungsversorgung durchverbunden werden vom linken Streifen (LED_1 bis LED_11) bis zum rechten Streifen (LED_20 bis LED_30). Auf unserer Krawattenrückseite haben wir zwei Drähte zwischen LED_1 und LED_30 gelötet.

Um auch das programmierte Lichtmuster automatisch auf die geringere Anzahl LEDs anpassen zu können, ist der Datenausgang DO der letzten LED (LED_30) über den Widerstand R5 auf den SPI-Eingangspin des Mikrocontrollers verdrahtet. So wird erkannt, nach wievielen Clock-Pulsen das Datensignal dort ankommt.

Den optionalen Taster TA1 kann man verwenden, um zwischen verschiedenen Lichteffekten umzuschalten. Über die Klinkenbuchse J1 flashen wir der Picaxe mit einem Programmierkabel. Die Spannungsversorgung der Krawatte erfolgt über die USB-Buchse J2 direkt mit 5 Volt, zum Beispiel mit einer USB-Powerbank. An den Einspeisepunkt der LED_1 wird ein vier-adriges Flachbandkabel gelötet, das auf die Rückseite der Krawatte geführt wird.

Abgeschnittenes Stück mit Eigenleben

Im unteren Teil des Schaltplans ist die Schaltung des Secondary-Controllers zu sehen. Im Ausgangszustand der Krawatte hat dieser noch keinen Einfluss auf die LED-Muster. Zwar könnte er die LED_12 hochohmig per 10-kOhm-Widerstände (R103 und R104) ansteuern, praktisch steuert allerdings der Primary-Controller über die niederohmigen Ausgangstreiber von LED_11 den Eingang von LED_12.

Sobald die Krawatte abgeschnitten wurde, übernimmt der zweite Picaxe (IC101) die Ansteuerung der LED_12 und erzeugt die Leuchtmuster für die Kette von LED_12 bis LED_19. Voraussetzung ist, dass über die USB-Buchse J102 eine 5-Volt-Spannung eingespeist wird. Dies sollte nur geschehen, wenn der Primary-Teil abgetrennt wurde, damit nicht zwei Spannungsquellen gegeneinander arbeiten.

Bauteile verdrahten

Die Primary- und Secondary-Schaltung löten wir jeweils auf ein Stückchen Lochrasterplatine, die auf der Rückseite der Krawatte aufgeklebt wird. Die Bauteile müssen alle auf der Lötseite montiert sein, damit die Rückseite für das doppelseitiges Klebeband frei bleibt. Man sollte außerdem auf möglichst niedrige Bauhöhe achten.

Rückseite der Krawatte mit Beschriftungen der Bauteile
Rückseite der Krawatte

Um die Spannungsversorgung an die Streifen zu führen, kann man mit einer Nähnadel ein Loch in die entsprechenden Lötpads der Streifen stechen, den Draht von der Krawattenrückseite hindurch stecken und auf der Vorderseite verlöten (rote und schwarze Drähte auf dem Foto).

Für die Verdrahtung von LED_11, LED_12 und LED_20 empfiehlt es sich dagegen nicht, die Lötpads zu nutzen, da es zu Kontaktproblemen beim Abschneiden oder Wiederanlöten kommen kann. Besser ist es, Fädeldrähte an den LED-Beinchen anzulöten, diese seitlich um den Karton herum auf die Rückseite zu führen und mit Klebestreifen zu fixieren. Die Belegung der LED-Pins kann per Durchgangsprüfer ermittelt werden.

Platine mit Primary-Controller

Die beiden Widerstände R3 und R4 werden auf einem separaten Stückchen Lochrasterplatine aufgelötet und die Secondary-Schaltung nach dem gleichen Prinzip wie die Primary-Schaltung aufgebaut.

Software programmieren

Die Programmierung der Firmware für Primary- und Secondary-Controller erfolgt mit dem Picaxe Editor [3]. Unser Beispielcode für beide Mikrocontroller [4] kann dafür einfach heruntergeladen werden.

Primary-Firmware

Zu Beginn des Programms wird mit NUMBER_OF_LEDS sowie NUMBER_OF_LEDS_AFTER_CUT die entsprechende Anzahl der LEDs definiert.

symbol NUMBER_OF_LEDS = 30 ; Gesamtanzahl LEDs (max. 33 bei 08M2)
symbol NUMBER_OF_LEDS_AFTER_CUT = 22 ; verbleibende Anzahl LEDs nach Abschneiden

Über LED_DEFAULT_BRIGHTNESS kann eine Helligkeitsanpassung erfolgen, da viele Streifen so hell sind, dass man sie dimmen sollte, um die Augen zu schonen. Der Wert muss im Bereich zwischen 0 (aus) und 0xFF (maximale Helligkeit) liegen.

Mit der Funktion autoDetectLeds wird zunächst ermittelt, ob die Krawatte noch komplett bestückt oder abgeschnitten ist. Hierzu wird das Datenausgangssignal DO der letzten LED_30 ausgewertet und ermittelt, nach wievielen Datenbytes ein High-Signal ankommt. Die entsprechende Anzahl anzusteuernder LEDs ist dann in der Variable numberOfAvailableLeds verfügbar. Ebenso wird die Nummer der letzten verfügbaren LED in der Variablen maxLed gespeichert (beginnend ab Nummer 0, d.h. der Wert entspricht numberOfAvailableLeds – 1).

Makros kombinieren

Um ein LED-Muster zu generieren, ruft man eine beliebige Kombination folgender Makros solange nacheinander mit den gewünschten LED-Daten auf, bis das gewünschte Muster im RAM erzeugt wurde:

Bei Verwendung dieser Makros wird automatisch der bei LED_DEFAULT_BRIGHTNESS angegebene Wert für die Helligkeit eingerechnet. Durch Aufruf von gosub updateLeds wird das im RAM vorhandene Muster an den LED-Streifen gesendet. Dadurch wird auch die Nummer der nächsten zu setzenden LED wieder genullt.

Es ist darauf zu achten, dass die Makros SetNextLed und SetNextMultipleLeds nur solange aufgerufen werden, bis die maximal zulässige Anzahl LEDs gesetzt wurde. Ansonsten würde ein Überlauf im RAM erfolgen und es könnte zum Absturz der Firmware kommen.

Vorprogrammierte Effekte

In unserer Beispielfirmware ist direkt nach dem Einschalten der Automatik-Mode aktiv. Darin werden verschiedene Lichteffekte erzeugt, die nacheinander ablaufen:

Per Tastendruck können der Automatik-Mode beendet und stattdessen die Lichteffekte der Reihe nach manuell ausgewählt werden. Der jeweilige Effekt läuft solange, bis die Taste wieder gedrückt wird. Nach dem Beenden des letzten Lichteffekts ist wieder der Automatik-Mode aktiv.

Eigene Effekte einbauen

Für jeden Lichteffekt gibt es eine eigene Funktion namens ledprog_xxx. Diese werden in der main-Routine per select case abhängig von der Variable progNumber ausgewählt. Für eigene Lichteffekte kann diese Auswahl ergänzt und jeweils eine eigene Funktion angelegt und aufgerufen werden. Um diese zum Automatik-Mode hinzuzufügen, muss die Funktion ledprog_autoMode ergänzt werden und zwar um einen weiteren Makroaufruf von REPEAT_LEDPROG mit der Funktion und der gewünschten Wiederholungsanzahl.

Als lokale Variablen können die Bytes localByte1 bis localByte3 sowie die Worte localWord1 bis localWord3 verwendet werden, die bereits in den vorhandenen Lichteffekten benutzt werden. Ebenso können die Variablen state, color_r, color_g und color_b dort verwendet werden. Nach dem Aufruf von gosub updateLeds sollte das Makro CheckForProgChange aufgerufen werden, damit bei einem Tastendruck zum nächsten Effekt gewechselt wird.

Secondary-Firmware

Das Programm ist sehr ähnlich aufgebaut. Ganz oben wird über NUMBER_OF_LEDS die Anzahl der LEDs definiert. Aufgrund des fehlenden Tasters gibt es nur den Automatik-Mode. Für jeden Lichteffekt gibt es eine eigene Funktion namens ledprog_xxx. Diese werden in der main-Routine durch das Makro REPEAT_LEDPROG zusammen mit der Anzahl gewünschter Durchläufe aufgerufen.

Für eigene Lichteffekte kann jeweils eine eigene Funktion angelegt und aufgerufen werden. Als lokale Variablen können ebenfalls die Bytes localByte1 bis localByte3, die Worte localWord1 bis localWord3 und die Variablen state, color_r, color_g und color_b verwendet werden.


URL dieses Artikels:
http://www.heise.de/-4295010

Links in diesem Artikel:
[1] https://www.heise.de/select/make/2016/2/1461232614283502
[2] https://www.heise.de/make/artikel/Ausprobiert-Loetkolben-Miniware-TS100-3973425.html
[3] http://www.picaxe.com/Software/
[4] https://www.heise.de/make/downloads/76/2/5/9/1/5/3/4/PICAXE-Code-LED-Schlips.zip