Hacklace
Hacklace Release status: stable [box doku] | |
---|---|
![]() | |
Beschreibung | Eine Halskette mit 5x7-Dot-Matrix-Led-Display |
Autor(en) | fabster, muzy |
Letzte Version | Revision B |
Lizenz | Creative Commons (siehe unten) |
Download | Download |
Hacklace - A Necklace for Hackers
- Ein passendes Accessoire zur Adventszeit für Nerds, Geeks und Hacker? Wir haben es jetzt schon.
- Du suchst noch nach einem unkonventionellen Weihnachtsgeschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.
- Du willst auch ganzjährig auf Partys und in Clubs ein leuchtendes Zeichen setzen? Hacklace ist immer ein Blickfang, mit dem du dich abhebst und deine Leidenschaft für Technik dokumentierst.
Beim Hacklace handelt es sich um ein 5 x 7 Dot-Matrix-Led-Display, welches wie eine Halskette getragen werden kann. Auf dem Display lassen sich beliebige Textnachrichten oder Animationen darstellen.
Features
- Nur 48 mm x 15 mm groß
- Mobiler Betrieb durch Versorgung mit Knopfzelle
- Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile
- Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar
- ASCII-Zeichensatz mit deutschen Umlauten
- Proportional-Font
- Originelle Sonderzeichen und Symbole
- Vorgefertigte Animationen im Flash
- Speichern von eigenen Texten und Animationen im EEPROM
- Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages
- Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden
- Zwei Scroll-Modi: Vorwärts und bidirektional
- Scrollgeschwindigkeit und Pause einstellbar
- ISP-Anschluß zum Programmieren eigener Firmware
Bedienung
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.
Ein kurzer Druck auf den Taster wechselt auf den nächsten Text bzw. die nächste Animation. Hält man den Taster für einige Sekunden gedrückt, schaltet sich das Hacklace aus. Aus diesem Zustand kann man es durch einen kurzen Tastendruck wieder zum Leben erwecken.
Voraussetzungen / Schwierigkeitsgrad
Hacklace wurde als Einsteigerprojekt konzipiert, so daß es auch von Anfängern leicht nachgebaut werden kann. Du solltest über grundlegende Lötkenntnisse verfügen und in der Lage sein, einen AVR-Mikrocontroller zu flashen. Falls Löten und Flashen noch nicht zu deinem Repertoire gehören, empfehlen wir, das Hacklace unter Anleitung eines erfahrenen RaumZeitLaboranten zusammen zu bauen. So kannst du dir die nötigen Kenntnisse schnell und unkompliziert aneignen.
Ausrüstung und Werkzeug
Folgendes wird zum Zusammenbau benötigt:
- Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)
- ISP-Programmiergerät für Atmel AVR-Mikrocontroller
- Computer
- Optional: Ausrüstung zur Herstellung einseitiger Platinen
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.
Hardware
Platine
![](/images/thumb/b/b0/Hacklace_Platine.jpg/150px-Hacklace_Platine.jpg)
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. Eine Belichtungsvorlage findet sich unter Download.
Es werden nur zwei verschiedene Bohrdurchmesser verwendet. Die Pins für die Led-Matrix und die beiden Befestigungsanschlüsse des Tasters werden mit 1,2 mm gebohrt. Alle anderen Bohrungen mit 0,9 mm. An der oberen Kante sind rechts und links jeweils ein Pad, welches keinen elektrischen Anschluß hat und als Zugentlastung für das Kabel dient. Diese Pads werden auf den Außendurchmesser des Kabels aufgebohrt.
Eventuell werden wir zur Herstellung der Platine noch einen Ätzworkshop veranstalten.
Aufbau
Zur Erläuterung: Die Platinenoberseite ist die Seite ohne Leiterbahnen. Diese Seite ist die sichtbare Vorderseite. Auf der Rückseite befinden sich die Kupferbahnen. Dies ist die Lötseite.
![](/images/thumb/8/80/Hacklace_Zusammenbau01.jpg/150px-Hacklace_Zusammenbau01.jpg)
![](/images/thumb/b/bf/Hacklace_Zusammenbau02.jpg/150px-Hacklace_Zusammenbau02.jpg)
![](/images/thumb/c/c4/Hacklace_Zusammenbau03.jpg/150px-Hacklace_Zusammenbau03.jpg)
Der Aufbau geschieht wie folgt:
- Als erstes werden die beiden SMD-Widerstände (R2, R3) auf der Leiterbahnseite aufgelötet. Durch die große 1206-Bauform ist das nicht weiter schwierig. Zunächst ein Pad mit etwas Lötzinn belegen, dann das Bauteil mit der Pinzette an das Lötpad halten und mit dem Lötkolben festlöten. Wenn das Bauteil richtig sitzt, den zweiten Anschluß verlöten.
- Die Drähte des "normalen" Widerstands (R1) im richtigen Abstand abbiegen, Widerstand auf die Platinenoberseite stecken und auf der Lötseite festlöten. Anschließend die überstehenden Drahtenden mit einem Seitenschneider abknipsen.
- Mit dem Kondensator (C1) wird genauso verfahren.
- Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).
- Für den nächsten Schritt ist es sinnvoll, die Beinchen des Prozessors mit einem entsprechenden Werkzeug genau auf den Abstand der Bohrlöcher auszurichten.
- Jetzt kommt der etwas trickreiche Teil. Das Dot-Matrix-Display und der Prozessor müssen gleichzeitig eingelötet werden. Dazu wird das Display zunächst von der Oberseite her eingesetzt aber noch nicht verlötet. Das Display gehört in die breiten Pads mit den etwas größeren Löchern. Pad Nummer 1 ist an der quadratischen Form zu erkennen. Die überstehenden Pins auf der Lötseite müssen mit dem Seitenschneider so gekürzt werden, daß sie die Platine nur ca. 1 Millimeter überragen. Nun wird von der Lötseite her der Prozessor eingesetzt, so daß sich Display und Prozessor gegenüberliegen und die Pads mit den großen Löchern jeweils einen Pin vom Prozessor und einen Pin vom Display gemeinsam aufnehmen. Dies erfordert u. U. etwas Probieren, bis alle Beinchen ihren Platz gefunden haben. Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels.
- Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.
- Fehlen noch die Kabel für die Stromversorgung. Jeweils ein rotes (plus) und schwarzes (minus) Kabel wird an das jeweilige Lötpad angelötet. Zur Zugentlastung kann man jedes Kabel durch die zugehörige Bohrung in der oberen Ecke führen.
- Als letzter Schritt sind die Kabel an den Halter für die Knopfzelle zu löten. Dabei unbedingt auf die richtige Polung achten, da das Hacklace keinen Verpolungsschutz besitzt.
![]() |
![]() |
![]() |
Flashen
Zum Flashen der Software benötigt man einen AVR-Programmer, der an der ISP-Schnittstelle angeschlossen wird. Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft. Danach werdem das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.
Software
Die Software wurde mit dem AVR-Studio 6.0 von Atmel (AVRGCC 4.6.2) entwickelt. Dabei zeigte sich, daß das in dieser Version enthaltene File "iotn4313.h" Fehler enthält. Eine korrigierte Version findet sich im GIT-Repository.
Displayspeicher
Das Hacklace verwendet einen Displayspeicher von 200 Byte. Jedes Byte repräsentiert eine Spalte der Anzeige. Da der Zeichensatz proportional ist, haben die meisten Zeichen nur eine Breite von vier Spalten zuzüglich einer Spalte Abstand zum nächsten Zeichen. Animationen bestehen aus einzelnen Frames, wobei jeder Frame fünf Byte benötigt. Somit können Texte bis zu einer Länge von ca. 40 Zeichen dargestellt werden; eine Animation kann aus maximal 40 Frames bestehen.
![](/images/thumb/8/85/Hacklace_Display_Schema.png/250px-Hacklace_Display_Schema.png)
Konfiguration
Über ein serielles Interface kannst du deine eigenen Texte und Animationen auf das Hacklace übertragen. Hierzu benötigst du ein serielles 3,3 Volt-Interfacekabel (5 Volt geht auch), welches an CON2 angeschlossen wird (GND - Pin 1, TxD - Pin 2). Über das Kabel kannst du mit einem Terminalprogramm ein Textfile an das Hacklace senden (2400 Baud, 8 Datenbits, keine Parität, 1 Stoppbit).
Das Textfile zur Konfiguration enthält deine eigenen Texte und Animationen. Es läßt sich mit jedem beliebigen Texteditor erstellen, der in der Lage ist, ASCII-Texte zu erzeugen (kein Unicode!). Zum Speichern des Konfigurationsfiles stehen im internen EEPROM des Mikrocontrollers maximal 256 Byte zur Verfügung.
Um ein irrtümliches Beschreiben zu Verhindern, muß vor dem Download eine Initialisierungssequenz geschickt werden. Dazu wird das Hacklace durch Senden eines Escape-Zeichens (chr(27)) zunächst zurückgesetzt. Um die Programmierung freizuschalten, müssen danach die beiden Großbuchstaben 'H' und 'L' folgen. Nun kannst du das Textfile senden. Nach dem Download empfiehlt es sich, nochmals ein Escape-Zeichen zu senden, damit das Hacklace verriegelt und gegen zufälliges Beschreiben geschützt wird.
Format des Konfigurationsfiles
Eine Message ist entweder ein Text oder eine Animation. Die Messages können durch Tastendruck auf dem Hacklace weitergeschaltet werden. Jede Zeile des Konfigurationsfiles enthält genau eine Message. Eine Message beginnt immer mit einem Modus-Byte, danach folgt der Text bzw. die Daten der Animation. Ein Modus-Byte von 0 zeigt das Ende der Messageliste an.
Das Modus-Byte hat folgenden Aufbau:
- Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.
- Bit 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)
- Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.
- Bit 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)
Es ist zu beachten, daß man nicht alle Bits auf Null setzen darf, da dies für die Markierung des Endes der Messageliste reserviert ist.
Texte können direkt als Klartext eingegeben werden. Es stehen alle druckbaren ASCII-Zeichen sowie die deutschen Umlaute und 'ß' zur Verfügung (Hacklace Zeichensatz).
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.
- Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.
- In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).
- Zur Eingabe von Hexadezimalwerten wird ein '$' vorangestellt. Danach folgen zwei Hex-Ziffern (0..9 bzw. A..F). Dabei müssen Großbuchstaben verwendet werden. Durch ein Leerzeichen oder ein Komma wird die Hex-Eingabe beendet.
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.
Eigene Animationen können erzeugt werden, indem man durch Eingabe von '$FF,' das Zeichen chr(255) sendet, wodurch die Eingabe in den Direkt-Modus wechselt. Die folgenden Bytes werden nun direkt abgespeichert. Jedes Byte repräsentiert eine Displayspalte wobei Bit 0 das oberste und Bit 6 das unterste Pixel verkörpern. Bit 7 bleibt ungenutzt und sollte auf Null gesetzt werden. Verlassen kann man den Direkt-Modus ebenfalls durch Senden von chr(255).
Hier nun ein Beispiel für ein Konfigurationsfile.
$45,Beispieltext
$40, Scrollen in Zeitlupe
$47, und extrem schnell
$74,moderat mit Pause
$84,.bidirektional.
$44,Umlaute äÄöÖüÜß
$24,Ein Herz ^R
$3B,~F
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,
$00,
Animationen erstellen
Wer die vorgefertigten Animationen im Flash durch eigene ersetzen will, muß eine Header-Datei erstellen, die die entsprechenden Daten als Byte-Array enthält. In "animations.h" wird dann ein #include-Befehl eingefügt, der diese Datei einbindet. Außerdem muß die Animation in die Liste der Animationen (animation[]) eingetragen werden. Die Position in dieser Liste legt fest, über welchen Buchstaben die Animation referenziert wird. Z. B. wird mit '~A' die erste Animation in der Liste aufgerufen (siehe Konfigurationsfile).
Als Hilfsmittel zum Erstellen einer Animation kann diese Vorlage verwendet werden. Dabei handelt es sich um ein Graustufenbild, das eine Folge von 40 Frames mit je 5 x 8 Pixeln enthält. Mit einem Malprogramm läßt sich die Animation einfach in die Kästchen zeichnen. Die unterste (achte) Zeile bleibt unbenutzt. Eingeschaltete Pixel müssen schwarz (Farbcode 0), ausgeschaltete Pixel müssen weiß (Farbcode 255) gemalt werden. Spalten die Grauwerte enthalten werden später ignoriert. Zuletzt wird das Bild auf die benutzten Frames zugeschnitten, die nicht genutzten Frames werden gelöscht. Eine solche Bitmap läßt sich anschließend mit dem Skript "make_data.m" automatisch in ein C-Headerfile konvertieren. Dabei ist der Name des Bildes ohne Extension anzugeben, z. B. make_data('my_animation'). Zum Ausführen des Skripts benötigt man FreeMat, einen freien Matlab-Klon.
Download
(!!!!! Die Dateien werden verfügbar gemacht, sobald das Projekt den Status "stable" hat. !!!!!)
Datei | Format | Lizenz |
---|---|---|
Vortrag zur Projektpräsentation | CC-BY-ND | |
Schaltplan | CC-BY-ND | |
Bauteileliste | CC0 | |
Belichtungsvorlage | CC-BY-ND | |
Bestückungsplan (Vorder- und Rückseite) | .pdf, .pdf | CC-BY-ND |
Hex-Files zum Flashen des Controllers / EEPROMs | .hex, .eep | CC-BY-NC-ND |
Sourcecode | .zip | CC-BY-NC-SA |
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.
Bilder
![]() |
![]() |
Bezugsquellen
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich hier.
Eventuell wird das RaumZeitLabor auch einen Bausatz anbieten.
Credits
Hacklace wurde inspiriert durch das Projekt "TinyMatrix" von TigerUp [1]. Da wir jedoch unsere eigenen Vorstellungen umsetzen wollten, ist Hacklace bezüglich Hard- und Software eine komplette Neuentwicklung.