Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 407 lines (306 sloc) 30.318 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407
{{AchtungKasten1 |title= Projekt eingestellt |msg=
Das Projekt "Hacklace" wurde eingestellt. Diese Seite dient nur als Referenz.}}
{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}

{{ProjektInfoBox
|name = Hacklace
|status = stable
|image = Hacklace_schwarz.jpg
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display
|author = [[user:fabster|fabster]],[[user:muzy|muzy]]
|username =
|version = Revision B
|update =
|platform =
|license = Creative Commons (siehe unten)
|download = [[Hacklace#Download|Download]]
}}

Hacklace - A Necklace for Hackers

* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.
* Du willst 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
* Zahlreiche vorgefertigte Animationen
* 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
* Auch als universelles serielles Display verwendbar.


==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===
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann.
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|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.

Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.

===Aufbau===

====Hinweis zum Display====
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.

# HDSP-5403 hp 008 L3 - Der schwarze Punkt an der Seite des Displays muss diagonal zum PIN 1 (viereckiges Pad) liegen. Von oben betrachtet wäre das die rechte untere Ecke. Hinweis: Seit 01/2013 werden keine Bausätze mehr mit diesem Display ausgeliefert.
# TC07/TA07 - Das Display so einsetzen daß Pin 1 in das rechteckige Pad kommt. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.
# LM57 - wie TC07 Display.
# BS - wie TC07 Display.

====Anleitung====
Zur Erläuterung: Die Platinenoberseite ist die Seite ohne Leiterbahnen bzw. ohne Aufdruck. Diese Seite ist die sichtbare Vorderseite. Auf der Rückseite befinden sich die Kupferbahnen und bei der professionellen Platine der weiße Bestückungsdruck. Dies ist die Lötseite.
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]

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. Du kannst zum Biegen eine Biegelehre verwenden. 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).
# Als Vorbereitung 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 (siehe Foto).
# 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 rechteckigen Form zu erkennen. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. Die überstehenden Pins des Displays auf der Lötseite müssen mit dem Seitenschneider so gekürzt werden, daß sie die Platine 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels (Flußmittelstift). Da wir direkt am Pin löten, erwärmt sich das Bauteil recht schnell. Damit der Prozessor hierdurch keinen Schaden nimmt, sollte man nach jedem Pin eine Weile warten, bis er sich wieder abgekühlt hat.
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.
# Es fehlen noch die Kabel für die Stromversorgung. Jeweils ein rotes (plus) und schwarzes (minus) Kabel wird an das jeweilige Lötpad angelötet. Danach die Kabel auf die gewünschte Länge kürzen. Zur Zugentlastung sollte 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. Wer sich an den vorstehenden Pins des Knopfzellenhalters stört, kann diese rechtwinklig abbiegen, damit sie im Nacken nicht pieksen.
{|
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]
|}

===Flashen===
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), 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.
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF

Fusebits mit avrdude setzen:
 avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp

Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.

Flash und EEPROM mit avrdude programmieren:
 avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep
 avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex


==Software==

=== Firmware compilieren ===
Die Firmware für den Mikrocontroller wurde mit dem AVR-Studio 6.0 von Atmel (AVR Toolchain Version: 3.4.0.663 - GCC 4.6.2) entwickelt. Dabei zeigte sich, daß das mit dieser Version ausgelieferte File "iotn4313.h" Fehler enthält. Eine korrigierte Version findet sich im GIT-Repository. Unter Windows liegt das fehlerhafte Headerfile unter
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".
Bevor man das Hacklace-Projekt compilieren kann, muß man das fehlerhafte Headerfile "iotn4313.h" in "iotn4313_buggy.h" umbenennen und die korrekte Version aus dem Repository an seine Stelle kopieren. Unter Linux ist der Pfad wahrscheinlich "/usr/lib/avr/include/avr/"

Im [http://www.obdev.at/products/crosspack/ CrossPack for AVR® Development] für OS X ist der iotn4313.h Bug ab Version 2013-02-12 bereits gepatched.

Wer das AVR-Studio 6.0 nicht verwenden möchte, sollte den AVR-GCC-Compiler so einstellen, daß er die Codegröße optimiert (Option -Os). Außerdem muß das Symbol F_CPU=4000000 definiert werden (Option -D), damit er weiß, daß der Controller mit 4 MHz läuft.

===Displayspeicher===
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]
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.

===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, VCC - PIn 3). Über das Kabel kannst du mit einem Terminalprogramm ein Textfile an das Hacklace senden (2400 Baud, 8 Datenbits, keine Parität, 1 Stoppbit, kein Handshake).

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 und Umlaute gemäß ISO 8859 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.

Unter UNIX kann man die Kommandozeile nutzen, um das Hacklace zu konfigurieren. Dazu öffnest du die serielle Schnittstelle und stellst die entsprechenden Parameter ein. Danach wird mit printf der eigentliche Datenstring an das Hacklace gesendet.

<code>
 # stty -F /dev/ttyUSB0 2400
 # stty -F /dev/ttyUSB0
 speed 2400 baud; line = 0;
 kill = ^H; min = 100; time = 2;
 -icrnl -imaxbel -opost -onlcr
 -isig -icanon -echo
 # printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0
</code>

Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.

<code>
 # screen /dev/ttyUSB0 2400
</code>

Ganz bequem und ohne Programmierkenntnisse geht das Konfigurieren mit dem [https://github.com/Hacklace/Animator/wiki/Download Hacklace-Animator]. Mit diesem Programm kannst du Animationen per Mausklick erstellen und das EEPROM deines Hacklaces flashen.

===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 und schließlich ein Zeilenumbruch. Ein Modus-Byte von 0 zeigt das Ende der Messageliste an. Das Modus-Byte muß als Hex-Byte übertragen werden (z. B. "$45,").

Das Modus-Byte hat folgenden Aufbau:
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.
* Bits 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.
* Bits 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 ([[Medium:Hacklace_Font_5x7_extended.bmp|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.

<code>
 $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,
</code>

Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace-classic/].

===Animationen erstellen===

'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''

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 [[Hacklace#Format des Konfigurationsfiles|Konfigurationsfile]]).

Als Hilfsmittel zum Erstellen einer Animation kann diese [[Medium:Hacklace_Animationtemplate.bmp|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 "[[Medium:make_data.m|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.

Alternativ kann das ein Python-Skript [https://github.com/Don42/image2Hacklace] verwendet werden. Dieses nimmt nimmt als Argumente Grauwertbilder der Größe 5x7 Pixel und gibt standardmäßig die Animation im Format für die Config-Datei aus. Mit dem Parameter "-o source" gibt das Skript C Header, der mit dem Parameter "-f file.h" in die Datei "file.h" geschrieben werden kann. Zum ausführen wird Python 2.6 benötigt.

===Hacklace als serielles Display===
Das Hacklace läßt sich auch als originelles Display in eigenen Projekten verwenden. Ein schnöder PC sieht z. B. viel cooler aus, wenn der Systemzustand über ein Hacklace angezeigt wird. Auch eine einfaches Zimmerthermometer wird durch eine Textanzeige per Hacklace deutlich aufgewertet.

Um das Hacklace als serielles Display zu verwenden, sendet man die Initialisierungssequenz <ESC>, 'H', 'D'. Danach folgt das Modusbyte, welches unter [[Hacklace#Format des Konfigurationsfiles|"Format des Konfigurationsfiles"]] beschrieben ist. Nun kannst du beliebige ASCII-Zeichen senden, die vom Hacklace sofort als Laufschrift dargestellt werden. Ein Zeilenumbruch (<CR> oder <LF>) löscht das Display und du kannst eine neue Nachricht senden.

Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:

<code>
 # stty -F /dev/ttyUSB0 2400
 # stty -F /dev/ttyUSB0
 speed 2400 baud; line = 0;
 kill = ^H; min = 100; time = 2;
 -icrnl -imaxbel -opost -onlcr
 -isig -icanon -echo
 # printf '\eHDCHi World' > /dev/ttyUSB0
</code>

Durch '\eHD' wird der Display-Modus eingeschaltet. Das Modusbyte 'C' = chr(67) = 00100011 sorgt für einen Lauftext mit Geschwindigkeit 3 und einer Pause von 2 am Ende des Durchlaufs. Danach folgt der anzuzeigende Text 'Hi World'.

Außerdem besteht die Möglichkeit, eigene Pixelgrafiken auf das Display zu bringen. Durch Senden des Werts 255 (hexadezimal 0xFF) schaltet man in den "Raw-Modus". Die nun folgenden Bytes werden direkt in den Display-Buffer geschrieben. Durch Senden von 255 (0xFF) kann man den Raw-Modus wieder verlassen. Alle folgenden Daten werden dann wieder als ASCII-Zeichen interpretiert.

<code>
 # printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'
</code>

==Download==
{| class="wikitable" valign = "top"
!Datei
!Format
!Lizenz
|-
|Schaltplan
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]
|CC-BY-ND
|-
|Bauteileliste
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]
|CC0
|-
|Belichtungsvorlage
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]
|CC-BY-ND
|-
|Bestückungsplan (Vorder- und Rückseite)
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]
|CC-BY-ND
|-
|Hex-Files zum Flashen des Controllers (Github)
|[https://github.com/fabster/Hacklace-classic/tree/master/Hexfiles]
|CC-BY-NC-ND
|-
|Sourcecode (Github)
|[https://github.com/fabster/Hacklace-classic]
|CC-BY-NC-SA
|-
|Hacklace Animator
|[https://github.com/Hacklace/Animator/wiki/Download]
|GPL
|}

Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck

Das .eep-File dient zum Flashen des EEPROMS.

Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.

==Bilder==
{|
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]
|}
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.

Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].


==Bezugsquellen==
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].

=== Bausatz ===
Als bequeme Alternative gibt es einen Bausatz mit allen Teilen und einer professionell gefertigten Platine. Der Bausatz ist bei diesen Anbietern erhältlich:

* RaumZeitLabor für 10 €
* [https://fnordcordia.eu/electric-thingies/1/hacklace-classic Fnordcordia (Deutschland) für 11 €]
* [http://www.hackerspaceshop.com/electronics/hacklace.html Hackerspace Shop (Österreich) für 15 €]

{|
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]
|-
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]
|-
|}

=== Batteriehalter ===
Um das Hacklace am Gürtel zu tragen, gibt es für 5 € einen Batteriehalter inklusive drei Alkaline-Batterien. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces.
{|
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]
|}

=== USB auf TTL Adapter ===
Das Hacklace bietet eine serielle Schnittstelle, um eigene Animationen aufzuspielen. Zum Anschluß an den PC benötigt man einen USB auf TTL Adapter. Das RaumZeitLabor hat entsprechende Adapter für 5 € im Angebot. Der Adapter unterstützt sowohl 3,3 V als auch 5 V und ist somit universell einsetzbar: z. B. um auf die Rescue-Konsole von Routern zu kommen.

== Geld verdienen mit dem Hacklace ==
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle beim RaumZeitLabor einfach die benötigte Anzahl von Bausätzen.
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.

{| class="wikitable" valign = "top"
!Anzahl
!Preis
|-
|align="right"| 0 - 9 Stück
|10,00 pro Bausatz
|-
|align="right"| 10 - 19 Stück
|9,00 pro Bausatz
|-
|align="right"| 20 - 49 Stück
|8,50 pro Bausatz
|-
|align="right"| ab 50 Stück
|8,00 pro Bausatz
|}

== Probleme & Lösungen ==

=== Fehlerdiagnose ===
Es gibt ein [https://www.youtube.com/watch?v=tKu9sYu3xm8 Video], das dabei helfen kann einige Fehler, die beim Zusammenbau auftreten können, zu identifizieren.

=== Firmware compiliert nicht ===
Das kann einige Gründe haben.
<pre>
du@deinekiste:~/Hacklace$ make
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c
Hacklace.c: In function ‘GoToSleep’:
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)
make: *** [Hacklace.o] Error 1
</pre>

Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.

Das gehört ersetzt. Siehe [[#Software|oben]].

=== Serielles Interface ===

Sollte bei dir die Kommunikation über das serielle Interface nicht richtig funktionieren, kann dies an einer zu großen Abweichung des Prozessortakts liegen. Der Mikrocontroller wird über den internen RC-Oszillator betrieben, von dem auch der Takt für die serielle Kommunikation abgeleitet wird. Nun sind RC-Oszillatoren leider nicht so präzise wie ein Quarz. Fertigungsbedingte Abweichungen in der Frequenz von bis zu 10 Prozent sind möglich. Ist die Abweichung zu groß, stimmt die Baudrate für die serielle Schnittstelle nicht mehr genau und die Kommunikation schlägt fehl.

Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:

1) Mit einem Oszilloskop oder einem Frequenzzähler ermittelt man den Spaltentakt der Anzeige. Dazu wird der Abstand der Pulse (steigende Flanke zu steigender Flanke) an Pin 1 des ISP-Anschlusses gemessen (Pin1 = column4, Pin6 = GND). Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden. Die tatsächlich gemessene Zeit (in Millisekunden) wird in das File "calibration-data.h" als Konstante T_MEASURED eingetragen.

2) Eine alternative Möglichkeit besteht darin, einen geeigneten OSCCAL-Wert zu bestimmen, über den der interne RC-Oszillator möglichst gut auf seine nominelle Frequenz (4 MHz) abgeglichen wird. Wie man dies bewerkstelligen kann, wird von Atmel in einer Application Note beschrieben. Den gefundenen Wert trägt man als Konstante EXT_OSCCAL in das File "calibration-data.h" ein.

Nach dem Neucompilieren des Projekts und dem Flashen des Controllers, wird die serielle Schnittstelle nun mit einer ausreichend exakten Baudrate betrieben, so daß die Kommunikation einwandfrei gelingt.

=== Elektrostatische Ladungen ===

[[Datei:Hacklace_ESD_Kondensator.jpg|thumb|right|150px|Kondensator zwischen den Kontakten des Tasters]][[Datei:Hacklace_ESD_Kondensator2.jpg|thumb|right|150px|Kondensator zwischen Reset und GND]]
Das Hacklace hat kein Gehäuse, das es gegen Umwelteinflüsse abschirmt. Wenn es mit metallischen oder sonstwie leitenden Gegenständen in Berührung kommt, kann es passieren, daß Kontakte zufällig überbrückt werden. Ebenso ist es möglich, daß sich durch Bewegung und Reibung mit der Kleidung elektrostatische Ladungen aufbauen. Hierdurch ist es in seltenen Fällen möglich, daß sich das Hacklace unbeabsichtigt ein- bzw. ausschaltet.

Als erste Gegenmaßnahme sollte man metallische Gegenstände vom Hacklace fernhalten. Gegen elektrostatische Ladungen kann es helfen, einen kleinen Kondensator (z. B. 10 nF) zwischen den jeweiligen Pin und Masse (GND) zu schalten. Zwischen die Kontakte des Tasters paßt ein SMD-Kondensator der Bauform 1206. Für das Resetsignal wird ein SMD-Kondensator der Bauform 0805 zwischen Pin 5 und Pin 6 des ISP-Steckers gelötet.

=== Zeilenumbrüche im Konfigurationsfile ===

In einer früheren Firmware-Version konnte als Zeilenumbruch nur entweder <CR> (carriage return = chr(13)) oder <LF> (line feed = chr(10)) verwendet werden. Insbesondere unter Windows werden Zeilenumbrüche jedoch durch <CRLF>, also zwei Zeichen, repräsentiert. Dies führte dazu, daß nach Übertragung des Konfigurationsfiles nur die erste Message erreichbar war. Alle anderen wurden ignoriert. Mit der aktuellen Firmware können alle drei Varianten für einen Zeilenumbruch genutzt werden.

== Fragen, Ideen etc. ==
Diese Wikiseite dient dazu, die Fakten zum Hacklace zu präsentieren. Hier findest du Informationen über alles, was bereits realisiert worden ist. Für Dinge, die noch offen sind oder in der Zukunt liegen, wie z. B. Fragen, Ideen, Kommentare, Vorschläge, Wünsche steht dir die [[Diskussion:Hacklace|Diskussionsseite]] zur Verfügung. Dort kann alles eingetragen und besprochen werden, was noch nicht umgesetzt wurde.


==Credits==
Hacklace wurde inspiriert durch das Projekt "TinyMatrix" von TigerUp [https://sites.google.com/site/tinymatrix/]. Da wir jedoch unsere eigenen Vorstellungen umsetzen wollten, ist Hacklace bezüglich Hard- und Software eine komplette Neuentwicklung.


[[Kategorie:Projekt]]
[[Category:Raum-Kommerz-Labor]]
[[Category:Shop]]
Something went wrong with that request. Please try again.