Picaxe-Projekt: Ein Schlips für Weiberfastnacht
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
- Abschneidbare LED-Krawatte für Fasnet
- Programmierung über Picaxe-Mikrocontroller
- Reparierbare Schaltung für wiederholte Einsätze
Checkliste
- Zeitaufwand: 1,5 bis 2 Stunden
- Kosten: 25 Euro
- Programmieren: BASIC-Kenntnisse
Material
- 2× PICAXE 08M2
- 1m LED-Streifen Typ APA102 (mit 30 LEDs und Klebestreifen auf der Rückseite)
- USB-Powerbank als Stromversorgung
- ca. 20 cm Draht
- Bauteile??
- Bastelkarton in gewünschter Farbe
- ein Stück Gummischnur
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.
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.
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.
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.
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.
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.
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:
SetLed(number, r, g, b)
: eine beliebige LED mit der Nummernumber
im Bereich von0
bisnumberOfAvailableLeds – 1
mit dem gewünschten Farbwert setzenSetNextLed(r, g, b)
: die nächste LED nach der zuvor gesetzten LED mit dem gewünschten Farbwert setzenSetNextMultipleLeds(quantity, r, g, b)
: die nächstenquantity
LEDs nach der zuvor gesetzten LED mit dem gewünschten Farbwert setzen
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:
- ein Leuchtpunkt, der nacheinander in rot, grün und blau durch den Streifen wandert
- eine Leuchtkette, die nacheinander in rot, grün und blau aufgebaut wird
- eine Leuchtkette, die beidseitig in rot, grün und blau aufgebaut wird
- stufenweises Aufdimmen nacheinander in rot, grün und blau
- ein Regenbogenverlauf, der langsam durch den LED-Streifen wandert
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.
(hch [5])
URL dieses Artikels:
https://www.heise.de/-4295010
Links in diesem Artikel:
[1] https://www.heise.de/select/make/2016/2/1461232614283502
[2] https://www.heise.de/tests/Im-Test-Loetkolben-Miniware-TS100-3973425.html
[3] http://www.picaxe.com/Software/
[4] https://www.heise.de/downloads/18/2/5/9/1/5/3/4/PICAXE-Code-LED-Schlips.zip
[5] mailto:hch@make-magazin.de
Copyright © 2019 Heise Medien