https://wiki.raumzeitlabor.de/api.php?action=feedcontributions&user=Fabster&feedformat=atomRaumZeitLabor Wiki - Benutzerbeiträge [de]2024-03-29T11:19:31ZBenutzerbeiträgeMediaWiki 1.40.2https://wiki.raumzeitlabor.de/index.php?title=Benutzer:Fabster&diff=11621Benutzer:Fabster2014-02-20T09:45:44Z<p>Fabster: </p>
<hr />
<div>Ende März 2014 aus dem Verein ausgeschieden.<br />
<br />
==[[Projekte]]==<br />
<br />
*[[MiniMoody]]<br />
*[[Hacklace]]<br />
<br />
==[[Vorträge]]==<br />
*[[Medium:Vortrag_Lets_Aetz.pdf|Let's ätz - Platinen selbstgemacht]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=11581Hacklace2014-02-12T14:23:02Z<p>Fabster: Download-Links aktualisiert</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace-classic/].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace-classic/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace-classic]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative gibt es einen Bausatz mit allen Teilen und einer professionell gefertigten Platine. Der Bausatz ist bei diesen Anbietern erhältlich:<br />
<br />
* RaumZeitLabor für 10 €<br />
* [https://fnordcordia.eu/electric-thingies/1/hacklace-classic Fnordcordia (Deutschland) für 11 €]<br />
* [http://www.hackerspaceshop.com/electronics/hacklace.html Hackerspace Shop (Österreich) für 15 €]<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=11580Hacklace2014-02-12T14:16:14Z<p>Fabster: Änderung 11558 von Fabster (Diskussion) rückgängig gemacht.</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative gibt es einen Bausatz mit allen Teilen und einer professionell gefertigten Platine. Der Bausatz ist bei diesen Anbietern erhältlich:<br />
<br />
* RaumZeitLabor für 10 €<br />
* [https://fnordcordia.eu/electric-thingies/1/hacklace-classic Fnordcordia (Deutschland) für 11 €]<br />
* [http://www.hackerspaceshop.com/electronics/hacklace.html Hackerspace Shop (Österreich) für 15 €]<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=11579Hacklace2014-02-12T14:15:55Z<p>Fabster: Änderung 11559 von Nicoduck (Diskussion) rückgängig gemacht.</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
=== Bausatz ===<br />
Die Produktion von Hacklace-Bausätzen wurde im Februar 2014 eingestellt.<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=%C3%84tzecke/%C3%84tzsession_17.01.2012&diff=11572Ätzecke/Ätzsession 17.01.20122014-02-09T12:25:04Z<p>Fabster: /* Ätzen */</p>
<hr />
<div>= Geeks@Work =<br />
<br />
* [[Benutzer:fabster|fabster]]<br />
* [[Benutzer:TheTinyToon|TheTinyToon]]<br />
<br />
= Sicherheitshinweise =<br />
<br />
Die benutzten Chemikalien sind zwar nicht hochätzend oder ähnliches, aber können bei Kontakt mit Schleimhäuten dennoch ätzend wirken (sorry, no drinking).<br />
<br />
* Schutzbrille (Spritzer!) tragen<br />
* Kittel (Ätzmittel hinterlässt nette Flecken)<br />
* nach Möglichkeit Handschuhe (richtige Gummihandschuhe, nicht nur Latexgloves)<br />
<br />
= Ätzablauf =<br />
<br />
<br />
== Vorlage ==<br />
<br />
* Laserausdruck auf Zweckformfolie<br />
* auf hohen Kontrast achten (Toner-Überdruck einstellen)<br />
* Leiterbahnen eher dünn drucken (ca 0,5mm Stärke - Toner stößt sich ab, dünne Bahnen werden dichter gedruckt)<br />
* Layout spiegelbildlich ausdrucken<br />
* Flächen und dicke Leiterbahnen ggf. mit Edding nachschwärzen<br />
<br />
== Belichtung ==<br />
<br />
* Layout mit der Tonerseite zur Lackseite auf die Platine auflegen (dadurch schärfere Belichtung)<br />
* Belichtung auf ca. 90 Sekunden stellen (für [http://www.bungard.de/ Bungard-Platinen])<br />
<br />
== Entwickler ==<br />
<br />
* immer frisch ansetzen<br />
* nach Anleitung anmischen (bei uns 1/5 Löffel / 2g Natriumhydroxit auf 200ml kaltes Wasser)<br />
* ca 1min entwickeln, Platine ständig in Bewegung halten (z.B. mit weichen Haarpinsel abstreifen)<br />
* Entwicklungszeit ist zu Ende, wenn die belichteten Stellen blankes Kupfer zeigen und kein Grauschleier mehr vorhanden ist<br />
* anschließend: mit Wasser abspülen und abtrocknen<br />
* Tipp: Sollte der Photolack an einer Stelle Unterbrechungen/Beschädigungen aufweisen, mit (ätzfesten) Edding übermalen/korrigieren<br />
<br />
== Ätzen ==<br />
<br />
Wir haben die Küvettenätzanlage eingeweiht.<br />
<br />
* nach Anleitung Ätzlösung ansetzen oder alte Ätzlösung benutzen<br />
** Ätzlösung auf rund 40-50°C erhitzen<br />
** bei Neuansetzen 200g Natriumpersulfat auf 1l Wasser benutzen<br />
* Ätzlösung in Ätzanlage einfüllen, Heizstab und Luftpumpe einschalten<br />
* Platine in Platinenhalter einspannen und in die Küvette eintauchen<br />
* Ätzen, bis das restliche Kupfer an den belichteten Stellen komplett abgetragen ist und das Basismaterial sichtbar wird - bei uns: Ätzdauer 11min<br />
** das Ätzen wandelt das Kupfer in Kupfersulfat um - dadurch wird die Lösung leicht bläulich<br />
* anschließend: mit Wasser abspülen<br />
<br />
{|<br />
| [[Datei:Ätzsession_2011-01-17_1.jpg|200px|thumb|Platine nach dem Eintauchen]]<br />
| [[Datei:Ätzsession_2011-01-17_3.jpg|200px|thumb|Platine nach wenigen Minuten]]<br />
| [[Datei:Ätzsession_2011-01-17_4.jpg|200px|thumb|[[Benutzer:the_nihilant|the_nihilant]] beobachtet das Ätzbad]]<br />
|-<br />
| [[Datei:Ätzsession_2011-01-17_5.jpg|200px|thumb|Erste Ätzstellen werden sichtbar]]<br />
| [[Datei:Ätzsession_2011-01-17_6.jpg|200px|thumb|Die Platine wird einmal gewendet zur gleichmäßigeren Ätzung]]<br />
| [[Datei:Ätzsession_2011-01-17_7.jpg|200px|thumb|Rückseite der Platine, kurz vor Ende]]<br />
| [[Datei:IMG_20120117_225344.jpg|200px|thumb|Die erste fertige Platine nach dem Abwaschen]]<br />
|}<br />
<br />
== Nachbearbeitung ==<br />
<br />
* Mit Kleenex trocknen<br />
* etwas Aceton auf Tuch auftragen und den restlichen Photolack der Platine vollständig entfernen (lieber mehr als einmal wiederholen, min. 2 Vorgänge, um alle Lackreste zu erwischen)<br />
* Lötlack aufsprühen zum Oxidationsschutz und als Flussmittel fürs spätere Auflöten von Komponenten<br />
* Ätzlösung wieder in Flasche füllen oder zur Entsorgung aufbewahren (beschriften und als Sondermüll bei Recyclinghof abgeben)<br />
* Entwicklerlösung kann (verdünnt) in den Ausguss gegossen werden (in kleinen Mengen! sonst neutralisieren)<br />
<br />
== Bohren ==<br />
<br />
* bei Hartpapierplatinen mit HSS-Bohrer, bei Epoxidharz mit Hartmetallbohrer (Epoxidharz+Glasfasergewebe hat eine hohe Härte und verschleißt daher HSS-Bohrer sehr schnell - Hartmetallbohrer sind hingegen sehr teuer und brechen schnell)<br />
* Bohrständer benutzen (insbesondere bei Hartmetallbohrer wegen Bruchanfälligkeit)<br />
* Safety first (Schutzbrille tragen!)</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=%C3%84tzecke&diff=11571Ätzecke2014-02-09T12:23:03Z<p>Fabster: /* Versuchsreihen / Erfahrungswerte */</p>
<hr />
<div>{{ProjektInfoBox<br />
|name = Ätzecke<br />
|status = beta<br />
|image = IMG_0622.JPG<br />
|description = Ätzecke<br />
|author = [[Benutzer:nessi|nessi]], [[Benutzer:Felicitus|Felicitus]]<br />
|username = <br />
|version = 0.9<br />
|update = <br />
|platform = <br />
|license = <br />
|download = <br />
}}<br />
'''WICHTIG: In der Ätzecke befinden sich Geräte und Chemikalien die nicht Ungefährlich sind. Wer hier eigenständig Arbeiten ausführen will benötigt eine Unterweisung. Persönliche Sicherheitsausstattung ist erforderlich. (z.B. Laborkittel, UV-Schutzbrille, Handschuhe)'''<br />
<br />
'''Die Ätzecke ist im Aufbau'''<br />
<br />
Die Ätzecke bietet Platz für Platinenbelichtung und Platinenätzen. Dafür stehen eine Vielzahl an Geräten und Zubehör bereit. <br />
<br />
Die Ätzecke hat derzeit 2 Arbeitsplätze. Der Rollcontainer ist entsprechend bestückt.<br />
<br />
== Mitätzservice ==<br />
<br />
Alles, was du geätzt haben möchtest, aber nicht selbst ätzen kannst oder willst, trägst du unter [[Ätzecke/Zu Ätzen]] ein.<br />
== Gerätenutzung ==<br />
<br />
Bei einigen Geräten ist vorher die Erlaubnis des Eigentümers einzuholen. Diese Geräte sind besonders beschriftet, bitte beachten!<br />
<br />
== Ordnung ==<br />
<br />
Bitte räume nach der Nutzung die Geräte/Werkzeuge wieder an ihren Platz. <br />
<br />
Beim verlassen der Ätzecke die Arbeitsflächen und den Boden (ab)kehren bzw putzen.<br />
<br />
== Versuchsreihen / Erfahrungswerte ==<br />
<br />
[[Datei:Ätzlösung auf Pulli.jpg|right|thumb|[[Benutzer:Felicitus|Felicitus]] hat unfreiwillig demonstriert, was bei Ätzflüssigkeit auf Kleidungsstück passiert...]]<br />
<br />
* [[Ätzecke/Ätzsession 10.01.2012|Ätzsession 10.01.2012]]<br />
* [[Ätzecke/Ätzsession 17.01.2012|Ätzsession 17.01.2012]] (erfolgreich!)<br />
* [[Medium:Vortrag_Lets_Aetz.pdf|Vortrag zur Platinenherstellung]] (14.02.2012)<br />
<br />
Seit den Versuchsreihen sind viele mehr oder minder erfolgreiche Ätzsessions gelaufen. Folgende Personen können dir am besten weiterhelfen:<br />
<br />
* [[Benutzer:Felicitus|Felicitus]]<br />
<br />
== Prozessübersicht ==<br />
Grobe Prozessübersicht für 1-seitiges Layout, Bungard Epoxyd-Platinen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Schritt<br />
!Anweisungen<br />
|-<br />
|Vorbereitung<br />
|Ätzflüssigkeit in die Ätzküvette geben. Den Heizstab einführen und darauf achten, daß die Heizspirale '''vollständig''' mit Ätzflüssigkeit benetzt ist, ggf. mehr Ätzflüssigkeit einfüllen. Den "Sprudelschlauch" anschließen und das Thermometer mit einem Klebestreifen fixieren. '''Alternative:''': Die Ätzflüssigkeit in ein Glasgefäß geben und mit der Kochplatte auf ca. 40-45°C erhitzen.<br />
|-<br />
|Belichten<br />
|Belichtungsvorlage auf Zweckform 3491 ausdrucken und prüfen, bei schlechten Vorlagen lohnt sich das Ätzen nicht! Platine mit dem ausgedruckten Platinenlayout in den Bilderrahmen spannen. Auf die richtige Positionierung von Platine und Folie achten. Bilderrahmen auf die Holzklötzchen legen. Etwa 120-150 Sekunden belichten.<br />
|-<br />
|Entwickeln<br />
|Entwickler mit 2g/200ml anrühren und in eine Entwicklungsschale geben. Die Platine hineinlegen und dafür sorgen, daß genügend Verwirbelungen in der Entwicklerflüssigkeit entstehen. [[Benutzer:Fabster|Fabster]] empfiehlt einen Haarpinsel, damit sanft über die Platine streichen. Entwicklungsdauer beträgt ca. 1 Minute.<br />
|-<br />
|Ätzen<br />
|Die Platine ca. 10-15 Minuten ätzen. Während dieser Zeit einmal oder mehrmals wenden. Die Heizspirale muß vollständig mit Ätzflüssigkeit bedeckt sein! Ätztemperatur ca. 40-45°C. <br />
|-<br />
|Platine reinigen<br />
|Gut eignet sich Aceton und die Wattepads. Dabei beachten, daß sich der Fotolack auch bei einseitigen Platinen auf Vorder- und Rückseite befindet.<br />
|-<br />
|Optional: Chemisch Verzinnen<br />
|Eine der Flaschen mit chemisch Zinn in ein Glasgefäß geben und ordentlich umrühren (die Bestandteile setzen sich am Boden ab). Danach ca. 200ml in die Arbeitsschale geben und die vollständig vom Fotolack befreite Platine 2-3 Minuten chemisch verzinnen lassen. Der Prozess stoppt automatisch bei ca 5µm. Platine entfernen und den Rest der Flüssigkeit wieder in den Aufbewahrungsbehälter geben. Die Platine zeitnah löten oder mit Lötlack versiegeln, damit die Schicht nicht oxidiert.<br />
|-<br />
|Optional: Lötlack SK10 aufsprühen<br />
|Der Lötlack dient zum Schutz der Platine vor Oxidierung und Versiegelung. Dies kann auch ohne vorheriges Verzinnen geschehen. Es empfiehlt sich, die Platine *vorher* zu schneiden/bohren. Wichtig ist, daß der Lötlack in einer recht staubfreien Umgebung aufgesprüht wird (RZL ist staubig!). Am besten draußen mit einem Karton, der verschlossen werden kann. Verfahrensweise siehe Aufdruck der Flasche. Der Lötlack ist auch nach dem trocken klebrig und Fingerabdrücke bleiben dauerhaft.<br />
|-<br />
|Optional: Lötlack Bungard Green Coat aufsprühen<br />
|Ähnliche Info wie bei SK10, allerdings muß die Platine unmittelbar (bis max. 1 Tag später) gelötet werden, da dieser Lack aushärtet. Ergibt eine grüne Oberfläche und schaut schön professionell aus.<br />
|-<br />
|Aufräumen<br />
|Ätzflüssigkeit abkühlen lassen (unter 30°C sind OK), mit dem Trichter in die Plastikflaschen abfüllen. Das Abfüllen kann etwas trickreich sein - '''IMMER''' obacht geben und nicht die neusten Klamotten zum Ätzen verwenden (trotz Labcoat). Alle Gegenstände gründlich säubern und Abstrocknen. [[Benutzer:Felicitus|Felicitus]] vermutet, daß Kalkablagerungen den Anschein erwecken, als ob dort getrocknetes Ätzmittel wäre - deshalb abtrocknen! Arbeitsflächen abwischen.<br />
|}<br />
<br />
== Chemielaborlog ==<br />
<br />
{| class="wikitable" valign = "top"<br />
!Wann?<br />
!Was?<br />
!Wer?<br />
!Hinweise<br />
|-<br />
|21.04.2012<br />
|Ätzflüssigkeit<br />
|[[Benutzer:Felicitus|Felicitus]]<br />
|Muß evtl. etwas verdünnt werden - aber *erst*, wenn zweifelsfrei geklärt ist, daß das Mischungsverhältnis zu hoch ist. Eventuell war auch meine Ätztemperatur mit 48°C zu hoch. Platinen waren nach wenigen Minuten bereits geätzt. ''''Nachtrag 18.05.''' Das Mischungsverhältnis war gut, frische Ätzflüssigkeit ätzt wohl am Anfang schneller. Mittlerweile hat sich der Prozess auf übliche Werte eingependelt.<br />
|-<br />
|22.04.2012<br />
|Chemisch Zinn<br />
|[[Benutzer:Felicitus|Felicitus]]<br />
|Haltbarkeit bis ca. Juli 2012<br />
|}<br />
<br />
==Tips==<br />
<br />
* Für gute Lötbarkeit: Pads in Eagle (Restring) auf 14 mil setzen<br />
<br />
==Zu Besorgen==<br />
*Latexhandschuhe<br />
*UV Schutzbrille<br />
*Schutzbrille gegen Flüssigkeiten<br />
*Augenspühlflasche<br />
*Seifenspender<br />
<br />
*Kanister zum entsorgen für Entwickler<br />
*Kanister zum entsorgen für Ätzmittel [http://www.hubersoft.net/chemie/kupferabfall/kupferabfall.html]<br />
*Box für Schutzbrille<br />
*Boiler<br />
<br />
== Schon besorgt oder vorhanden ==<br />
*Tonerverdichter<br />
*Arbeitsplatte<br />
*Waschbecken<br />
*Wasserhahn<br />
*Tischbohrmaschine zum Platinen bohren<br />
*Behälter für die Lagerung von Ätzmittel und Entwickler-Pulver, feuchtigkeitsgeschützt.<br />
*Lötstoplack<br />
*Laborkittel<br />
*Folie für Laserdrucker<br />
*Mülleimer<br />
<br />
==ToDo==<br />
* Halterung für Küchenrolle bauen<br />
<br />
==Erledigt==<br />
*Ausmessen der Wände im Bereich der Fließen inkl. Träger<br />
*Planen des Waschbeckenunterbaus<br />
*Ätzeecke Fließen<br />
*Wasser anschließen<br />
*Waschbecken und Hahn anbauen<br />
*Steckdosen einbauen<br />
*Unterschrank bauen mit Schloss<br />
*Ätzbad prüfen<br />
<br />
==Ätzecke Vermessen==<br />
Hintere Wand 127cm<br />
Seitliche Wand 56cm<br />
Pfosten 11cm * 11cm<br />
Abstand hintere Wand zum Hängeschrank 32cm<br />
<br />
== Bilder ==<br />
{| <br />
| [[Datei:Aetzbad roh.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzbad work progress remote.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzbad roh 2.JPG|thumb|left|250px]]<br />
|-<br />
| [[Datei:Aetzbad remote table.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzbad remote roh mit abrock.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzecke remote floor.JPG|thumb|left|250px]]<br />
|-<br />
| [[Datei:Aetzecke work.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzecke work2.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzecke work3.JPG|thumb|left|250px]]<br />
|-<br />
| [[Datei:Aetzecke work4.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzecke work5.JPG|thumb|left|250px]]<br />
| [[Datei:IMG 0592.JPG|thumb|left|250px]]<br />
|-<br />
| [[Datei:IMG 0594.JPG|thumb|left|250px]]<br />
| [[Datei:IMG 0596.JPG|thumb|left|250px]]<br />
| [[Datei:IMG 0597.JPG|thumb|left|250px]]<br />
|-<br />
| [[Datei:IMG 0598.JPG|thumb|left|250px]]<br />
| [[Datei:IMG 0600.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzbad_moertel_verteilen.jpg|thumb|left|250px]]<br />
|-<br />
| [[Datei:Aetzbad_moertel_verteilen_details.jpg|thumb|left|250px]]<br />
| [[Datei:Aetzbad_moertel_verteilen_happy_alex.jpg|thumb|left|250px]]<br />
| [[Datei:Aetzbad_moertel_bereinigen_alex.jpg|thumb|left|250px]]<br />
|-<br />
| [[Datei:Aetzbad_mit_moertel_rand.jpg|thumb|left|250px]]<br />
| [[Datei:Aetzbad_mit_moertel_rand_sauber.jpg|thumb|left|250px]]<br />
| [[Datei:Aetzbad_mit_moertel_becken_sauber.jpg|thumb|left|250px]]<br />
|-<br />
| [[Datei:IMG 0622.JPG|thumb|left|250px]]<br />
| [[Datei:Aetzecke_IMG_0623.JPG|thumb|left|250px]]<br />
|}<br />
<br />
== Unterseiten ==<br />
<br />
{| style="width:100%"<br />
|[[image:Belichter 0467.JPG|200px|center|link=Belichter]]<br />
|[[image:RaumZeitLabor_-_Logo_-_Schwarz.svg|200px|center|link=Ätzbad]]<br />
|[[image:RaumZeitLabor_-_Logo_-_Schwarz.svg|200px|center|link=Sonstiges]]<br />
|-<br />
|style="text-align:center" | [[Belichter | Belichter]]<br />
|style="text-align:center" | [[Ätzbad | Ätzbad]]<br />
|style="text-align:center" | [[Sonstiges | Sonstiges]] <br />
|-<br />
|[[image:IMG_0547.JPG|200px|center|link=Alligator]]<br />
|[[image:RaumZeitLabor_-_Logo_-_Schwarz.svg|200px|center|link=Bestückungsdruck]]<br />
|[[image:RaumZeitLabor_-_Logo_-_Schwarz.svg|200px|center|link=Ätzecke/Ätzen_mittels_Schneidplotter]]<br />
|-<br />
|style="text-align:center" | [[Alligator | Alligator]]<br />
|style="text-align:center" | [[Bestückungsdruck]]<br />
|style="text-align:center" | [[Ätzecke/Ätzen_mittels_Schneidplotter|Ätzen mit dem Schneidplotter]]<br />
|-<br />
<br />
|}<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Ätzecke]]<br />
[[Category:Procedures]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=KleinProzessorZ%C3%BCchter&diff=11570KleinProzessorZüchter2014-02-09T12:22:07Z<p>Fabster: </p>
<hr />
<div>{{EventInfoBox<br />
|name = KleinProzessorZüchter<br />
|status = unknown<br />
|image = <br />
|description = Die Mikrocontroller Arbeitsgruppe im RaumZeitLabor<br />
|author = [[Benutzer:TabasyoEye|TabascoEye]], [[Benutzer:Tiefpunkt|tiefpunkt]], [[Benutzer:Felicitus|Felicitus]]<br />
|username = <br />
|rhythm = Wöchentlich<br />
|day = Mittwoch<br />
|time = 19:30 Uhr<br />
|preis = Kostenlos<br />
}}<br />
Die '''KleinProzessorZüchter''' sind eine lose Gruppe von Lebewesen, die sich einmal wöchentlich mit der wunderbaren Welt der Elektronik beschäftigt haben. Leider ist das Event in letzter Zeit ein wenig eingeschlafen, es besteht allerdings Hoffnung auf Wiederbelebung. Auf der [[Vorträge#Gew.C3.BCnscht|Vorträge]]-Seite kann man z.B. Interesse an einem Arduino-Workshop bekunden oder andere Workshops/Vorträge wünschen...<br />
<br />
Zusätzlich kümmert sich diese losen Gruppierung um die Bereitstellung von tollen Bausätzen, die günstig in den Räumlichkeiten des RaumZeitLabors, sowie auf sämtlichen Veranstaltungen der RaumZeitLabor Hackerspace Holding Inc., erworden werden können.<br />
<br />
<br />
==Bausätze==<br />
<br />
===Auf Lager===<br />
* [[Usbasp]]<br />
* [[ISP-Adapter]]<br />
* [[Hacklace]]<br />
* [[MicroMoody]]<br />
<br />
=== Vergriffen ===<br />
* [[Moodlamp]]<br />
* [[V-USB Proto Board]]<br />
* [[TV-B-Gone]]<br />
* Laborboard<br>Als erstes Experminetierboard für Mikrocontrollerprojekte nutzen wir das Laborboard, das unser befreundeter Hackerspace Das Labor aus Bochum entwickelt hat. Es besteht aus einem Atmel ATmega32 mit ISP Programmierschnittstelle, 16Mhz Quarz, 4 Tastern, 8 freiprogrammierbaren LEDs und einem Spannungsversorgunsteil für die 5V.<br />
<br />
<br />
=== Mögliche zukünftige Bausätze ===<br />
* CMOY-Kopfhörer-Verstärker<br />
** http://gilmore2.chem.northwestern.edu/projects/cmoy2_prj.htm<br />
** http://tangentsoft.net/audio/cmoy-tutorial/<br />
** http://runawaybrainz.blogspot.com/2011/12/mystery-project-update-3-time-vampire.html<br />
* Piezo-Kontakt-Mikrofon<br />
** http://blog.makezine.com/archive/2011/12/collins-lab-diy-contact-mic.html<br />
** http://scotthelmke.com/Mint-box-buffer.html<br />
* Klein-Membran-Mikros<br />
** http://moosapotamus.net/THINGS/mics.htm<br />
** http://www.subatomicglue.com/mintymic/<br />
** http://webpages.charter.net/tidmarsh/binmic/<br />
* Mini-Gitarren-Verstärker<br />
** http://www.runoffgroove.com/littlegem.html<br />
* RZL-Blink<br />
<br />
<br />
[[Kategorie:Veranstaltung]]<br />
[[Kategorie:KleinProzessorZüchter]]<br />
[[Kategorie:Wiki Cleanup/ToDo]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Benutzer:Fabster&diff=11567Benutzer:Fabster2014-02-08T22:16:52Z<p>Fabster: </p>
<hr />
<div>Im Februar 2014 aus dem Verein ausgeschieden.<br />
<br />
==[[Projekte]]==<br />
<br />
*[[MiniMoody]]<br />
*[[Hacklace]]<br />
<br />
==[[Vorträge]]==<br />
*[[Medium:Vortrag_Lets_Aetz.pdf|Let's ätz - Platinen selbstgemacht]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=11558Hacklace2014-02-06T13:37:22Z<p>Fabster: </p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
=== Bausatz ===<br />
Die Produktion von Hacklace-Bausätzen wurde im Februar 2014 eingestellt.<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace/en&diff=11557Hacklace/en2014-02-06T13:37:10Z<p>Fabster: </p>
<hr />
<div>{{LanguageBox |msg=This page was translated from the German version. Click [[Hacklace|here]] to visit the original page.}}<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = A necklace with a 5x7 dotmatrix display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* You're searching for an accessory suitable for nerds, geeks and hackers? Try a hacklace!<br />
* You're searching for an individual gift? Try a hacklace!<br />
* You want to be the highlight on any party? A hacklace is your gadget with which you can gain attention!<br />
<br />
A hacklace is 5x7 dotmatrix display which is attached to a necklace. You can create your own animations and messages which one can display on the dotmatrix display. You are only limited by your own imagination.<br />
<br />
Note: This is the site of the "Hacklace classic". If you need extended capabilities you might also be interested in the follow-up project [http://www.hacklace.info "Hacklace2"].<br />
<br />
==Features==<br />
* Only 48mm x 15mm (1.89" x 0.59") in size.<br />
* Coin cell included<br />
* Symmetric component layout<br />
* Adjustable pin mapping to support dot-matrix display types<br />
* Supports ASCII including german umlauts and additional symbols<br />
* Propotional font and predefined animations included<br />
* Serial port (3,3 or 5V) to upload your own messages and animations which are then stored in the EEPROM.<br />
* Animations and messages can be created easily using a text-editor of your choice.<br />
* Ready to use. Your hacklace microcontroller comes with the latest firmware.<br />
* Speed, delay and modus can be set individually.<br />
* ISP-connector for flashing custom firmware.<br />
<br />
<br />
==Usage==<br />
Using the hacklace is very easy, because there is just one button which triggers the actions.<br />
<br />
By pressing this button for a short period of time, the hacklace switches to the next text/animation. By pressing the button longer, the hacklace goes into a deep sleep mode which consumes nearly no power. By pressing the button again, the hacklace resumes from deep sleep.<br />
<br />
==Prerequisites==<br />
Building the hacklace will help you learn how to solder. If you already have soldering experience and knowledge how to flash AVR mircocontrollers, it should be easy for you to build one. If you are not used to the tasks of soldering and flashing a microcontroller, we recommend to ask some RaumZeitLabor member to help you. This way you will gain the needed expertise!<br />
<br />
==Tools needed==<br />
To build a hacklace you'll need the following tools:<br />
<br />
* Soldering equipment (Soldering iron, solder, tweezers, ...)<br />
* ISP programmer for Atmel AVR-microcontroller<br />
* A computer<br />
* Optional: equipment for etching circuit boards (when you do not want to use one of our pre-produced circuit boards)<br />
<br />
Everything you need is readily available at the RaumZeitLabor. Ask a friendly hackerspace member to introduce you to the equipment.<br />
<br />
==Hardware==<br />
<br />
===Circuit Board===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Circuit board, etched manually and painted red]]<br />
The circuit board was designed to be easily etched. If you want to etch the circuit by yourself you will find the file [[Hacklace/en#Download|here]].<br />
<br />
After you etched the pcb you just need two drilling diameters. Use a 1.2mm (0.047") diameter for the LED-matrix pins and the tactile-switch pins. Apart from those drill holes, the remaining drill holes should have a diameter of 0.9mm (0.035"). The pads on the upper left and upper right side are not part of the circuit and can be drilled to the diameter of the cable which acts as the holder for the necklace.<br />
<br />
In case you do not have the equipment for etching circuit boards, you can buy a professionally manufactured circuit board [[Hacklace#Bezugsquellen|here]].<br />
<br />
===Assembly===<br />
<br />
====Hint on the display====<br />
Due to shortages in hardware supply, there are 3 different display types. Depending on the type, the display has to be inserted differently. This is also a configuration parameter in the firmware.<br />
<br />
# HDSP-5403 hp 008 L3 - The black dot on the side of the display has to be arranged diagonally to PIN 1 (rectangular pad). Seen from top, that's the bottom right edge. Note: Since 01/2013 this display type is obsolete and will no longer be delivered with our kits.<br />
# TC07 / TA07 - Pin 1 of the display (rectangular pad) is in the same row as pin 1 of the micro-controller (square pad). Depending on the display type (TA or TC) the corresponding firmware has to be flashed.<br />
# LM57 - Same as TC07 display. Pin 1 of the display has been manually marked with a felt tip marker.<br />
<br />
====Instructions====<br />
<br />
Important: The top of the PCB is the side without traces and text! That's the side which is visible while waring. The traces and silkscreen are located on the back side. The back side is where you'll be soldering the components.<br />
<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD Resistors]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Resistors and Capacitor]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Aligning the IC Pins]]<br />
<br />
The assembling is done as follows:<br />
# Firstly, the two SMD resistors ('''R2''', '''R3''') are soldered to the conductor path side. Due to the large 1206 type, this is comparatively easy. At first, cover one pad with solder, then hold the resistor to the pad with a pair of tweezers. As soon as the part fits correctly, do the same with the other connector.<br />
# Bend the pins of the through-hole resistor '''R1''' in the correct width. You can use a bending tool. Insert the resistor into the holes. Fixate the resistor with a piece of tape. Turn the PCB around and solder the pins. Cut the remainder of the pins with a sidecutter.<br />
# Repeat with the capacitor ('''C1''').<br />
# If you don't like the white case of the display, paint it black using a permanent marker.<br />
# ICs usually don't come bent to the 2.54mm grid common in through-hole technology. You need to bend them to that grid first by either using a bending tool or by hand (see photo). Additionally, it is recommended to pre-tin the pins of the display a bit with solder.<br />
# Now it's time for a tricky bit: The dot-matrix display and the IC need to be soldered in '''at the same time'''. Insert the display from the top and apply a bit of tape to hold it in place, but don't solder it in yet! The display is supposed to fit into the pads with the larger holes. You can recognize the first pad for the IC by it's squre shape (Pin 1). The first pin of the display is labeled with a small "1" or a dot. The pins of the display needs to be cut so that they'll stick out of the PCB by about 1mm. Insert the IC from the opposite side. This requires a bit of trial-and-error until all the pins fit.<br />
# Solder the pins of the display and the IC. Apply a bit of solder flux to achieve better bonding. As we're soldering directly on the pins themselves you should wait a while after soldering one pin so that the parts don't overheat while soldering (this could break the uC)<br />
# Insert the button and the pin header on the top and solder it from the bottom.<br />
# Solder the two wires (red = positive, black = negative) to their corresponding pads. Then cut the wires to the desired length. To reduce mechanical stress you should guide both cables through their cable holes in the top of the PCB.<br />
# Last Step! You need to solder the wires to the battery holder. You need to make sure that the polarity is correct, as the hacklace doesn't provide polarity protection. You may want to bend the pins of the battery holder so that you don't prick your neck.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Soldering of the IC and display (before, after)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Pin header and button]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Completed hacklace with wires and battery holder]]<br />
|}<br />
<br />
===Flash the firmware===<br />
To flash the firmware you'll need an AVR programmer (the [[Usbasp|USBAsp]] is such a programmer). Connect your programmer to the ISP interface on the hacklace. <br />
<br />
The fuses for the attiny4313 need to be adjusted so that the controller runs at 4 MHz from it's internal RC Oscillator. The fuses are: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Set the fuse bits using avrdude:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
Replace <PROGRAMMER> with your used programmer, e.g. '''usbasp'''<br />
<br />
Now program the firmware and the eeprom configuration data.<br />
<br />
Program flash and eeprom using avrdude:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
==Software==<br />
<br />
=== Compiling the firmware ===<br />
The firmware for the attiny4313 was developed using AVR-Studio 6.0 from Atmel (AVR Toolchain Version: 3.4.0.663 - GCC 4.6.2). The contained file "iotn4313.h" has an error. A corrected version of that file is available in the GIT-Repository. Place the corrected file under Windows to "C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
<br />
If you're compiling manually using the avr-gcc toolchain, you should pass the compiler flags "-Os" (to optimize code size only) as well as "-DF_CPU=4000000" (to set the target CPU frequency to 4MHz).<br />
<br />
===Display Memory===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
The hacklace uses 200 bytes of display memory. Each byte represents one column of the display. The hacklace uses a proportional font by default. As such, most characters have a width of 4 columns plus one empty column for spacing. Animations are composited of single frames, where each frame requires 5 bytes. The maximum animation size is 40 frames, so also text messages are limited to about 40 characters. <br />
<br />
===Configuration===<br />
You can store custom texts and animations via a serial interface. You'll need a 3.3 or 5V serial cable. Connect it to CON2 (Pin 1: GND, Pin 2: TxD, Pin 3: RxD). Serial configuration: 2400 Baud, 8 data bits, no parity, 1 stop bit [8N1]).<br />
<br />
The text file configures your own texts or animations. You can edit it with any text editor. Make sure you're using an 8 bit ASCII encoding; UTF-8 is not supported. The maximum length of the configuration file is 256 bytes due to the microcontroller's eeprom memory.<br />
<br />
You need to send a specific init sequence to avoid programming by accident. Send the following sequence to your hacklace:<br />
<br />
Escape-Character (ASCII Code 27, resets the hacklace)<br />
Capital H, Capital L<br />
<br />
Now you can transfer the configuraion file. It is recommended to reset the hacklace again after you've transferred the file. This enables write protection.<br />
<br />
===Configuration file format===<br />
One messge is either one text or one animation. You can cycle though the messages by pushing the button. Each line of the configuration file contains exactly one message. A message always begins with a mode byte, followed by text or the data of the animation. A mode byte of 0 designates the end of the message list.<br />
<br />
The mode byte is defined as follows:<br />
* Bit 7: forward (0) or backward (1) scrolling<br />
* Bit 6..4: Duration of the pause after the end of the message<br />
* Bit 3: Text (0) or Animation (1)<br />
* Bit 2..0: Scroll speed<br />
<br />
Don't set all bits to zero, as this designates the end of the message list.<br />
<br />
You can enter texts as plain text. You can use any printable 7-bit ASCII characters as well as the german umlauts ([[Medium:Hacklace_Font_5x7_extended.bmp|Hacklace charset]]).<br />
<br />
The hacklace firmware supports escape chars to make entering special chars, animations and byte values easier:<br />
* Prefix with a '^' to increase the char value by 63. Example: '^A' represents the first special character (129), '^B' the second (130).<br />
* Prefix with a '~' chooses an animation stored in flash. Example: '~A' chooses the first animation, '~B' the second one.<br />
* Prefix with a '$' to enter hexidecimal values. Example: '$10' or '$A1'. You need to enter exactly two values. Only capital letters are allowed. Use space or colon to exit the hex mode.<br />
* Use '^^', '~~' or '$$' to represent the literal value.<br />
<br />
You can program own animations by entering the direct mode using '$FF'. Any bytes now entered will be directly stored into flash. Each byte represents a display column, where bit 0 is the first line and bit 6 the last line. bit 7 is not used and should be set to 0. Exit the direct mode by sending a character of value 255.<br />
<br />
Configuration example:<br />
<br />
<code><br />
$45,Sample text<br />
$40, Very slow scrolling<br />
$47, now very fast<br />
$74,medium speed with pause<br />
$84,.bidirectional.<br />
$44,Umlauts äÄöÖüÜß<br />
$24,A heart ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
===Creating animations===<br />
'''You can use the hacklace animator tool to create own animations: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
You need to create your own header file if you wish to replace the animations. That header file contains your animation data as byte array. Include a #include command into "animations.h" which will include your own header file. You'll also need to append your animation to the list of animations (animation[]). The position inside that list defines which character is assigned to it. For example, '~A' is the first animation inside that list (see [[Hacklace/en#Configuration file format|Configuration File]]).<br />
<br />
You can use the [[Medium:Hacklace_Animationtemplate.bmp|Hacklace Template]] to make it easier to create animations. It is a greyscale image with 40 frames with 5x8 pixels each. You can simply draw your frames using a bitmap paint program. The last line (8) is not used. To turn on a pixel, draw using color code 0, to turn it off draw using color code 255. Greyscale values are ignored. Crop the image to the number of used frames. Use the script "[[Medium:make_data.m|make_data.m]]" to convert your image to a C header file. Enter the file name without extension, e.g. make_data('my_animation'). You'll need FreeMat, a free Matlab clone.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!File<br />
!Format<br />
!License<br />
|-<br />
|Schematic<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bill of Materials<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|PCB etching template <br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Assembly Plan (front and back)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Firmware (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display Kingbright TC07-11)<br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|EEPROM hex file<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Source code (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
All files are published under the respective Creative-Commons license.<br />
<br />
==Pictures==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Hacklace worn as necklace]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Hacklace worn as belt clip]]<br />
|}<br />
<br />
The belt clip was made by attaching the battery holder to a PCB and connected using soldering lugs.<br />
<br />
You can see the hacklace on a video on YouTube [http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
==Ordering Information==<br />
In Germany, you can order all needed parts from Reichelt or CSD-Electronics. A list of parts can be found [[Medium:Hacklace_Bauteileliste.pdf|here]].<br />
<br />
=== Kit ===<br />
The production of Hacklace-kits has been stopped in Feb. 2014.<br />
<br />
==Credits==<br />
Hacklace was inspired by the "TinyMatrix" project from TigerUp [https://sites.google.com/site/tinymatrix/]. <br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=11109Hacklace2013-11-04T09:30:56Z<p>Fabster: Bausatzanbieter in den Abschnitt "Bezugsquellen - Bausatz" verschoben</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative gibt es einen Bausatz mit allen Teilen und einer professionell gefertigten Platine. Der Bausatz ist bei diesen Anbietern erhältlich:<br />
<br />
* RaumZeitLabor für 10 €<br />
* [https://fnordcordia.eu/electric-thingies/1/hacklace-classic Fnordcordia (Deutschland) für 11 €]<br />
* [http://www.hackerspaceshop.com/electronics/hacklace.html Hackerspace Shop (Österreich) für 15 €]<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10951Hacklace2013-10-15T13:33:21Z<p>Fabster: /* Probleme & Lösungen */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Fehlerdiagnose ===<br />
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.<br />
<br />
=== Firmware compiliert nicht ===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10920Hacklace2013-10-09T16:17:28Z<p>Fabster: </p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info "Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace/en&diff=10919Hacklace/en2013-10-09T16:16:42Z<p>Fabster: </p>
<hr />
<div>{{LanguageBox |msg=This page was translated from the German version. Click [[Hacklace|here]] to visit the original page.}}<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = A necklace with a 5x7 dotmatrix display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* You're searching for an accessory suitable for nerds, geeks and hackers? Try a hacklace!<br />
* You're searching for an individual gift? Try a hacklace!<br />
* You want to be the highlight on any party? A hacklace is your gadget with which you can gain attention!<br />
<br />
A hacklace is 5x7 dotmatrix display which is attached to a necklace. You can create your own animations and messages which one can display on the dotmatrix display. You are only limited by your own imagination.<br />
<br />
Note: This is the site of the "Hacklace classic". If you need extended capabilities you might also be interested in the follow-up project [http://www.hacklace.info "Hacklace2"].<br />
<br />
==Features==<br />
* Only 48mm x 15mm (1.89" x 0.59") in size.<br />
* Coin cell included<br />
* Symmetric component layout<br />
* Adjustable pin mapping to support dot-matrix display types<br />
* Supports ASCII including german umlauts and additional symbols<br />
* Propotional font and predefined animations included<br />
* Serial port (3,3 or 5V) to upload your own messages and animations which are then stored in the EEPROM.<br />
* Animations and messages can be created easily using a text-editor of your choice.<br />
* Ready to use. Your hacklace microcontroller comes with the latest firmware.<br />
* Speed, delay and modus can be set individually.<br />
* ISP-connector for flashing custom firmware.<br />
<br />
<br />
==Usage==<br />
Using the hacklace is very easy, because there is just one button which triggers the actions.<br />
<br />
By pressing this button for a short period of time, the hacklace switches to the next text/animation. By pressing the button longer, the hacklace goes into a deep sleep mode which consumes nearly no power. By pressing the button again, the hacklace resumes from deep sleep.<br />
<br />
==Prerequisites==<br />
Building the hacklace will help you learn how to solder. If you already have soldering experience and knowledge how to flash AVR mircocontrollers, it should be easy for you to build one. If you are not used to the tasks of soldering and flashing a microcontroller, we recommend to ask some RaumZeitLabor member to help you. This way you will gain the needed expertise!<br />
<br />
==Tools needed==<br />
To build a hacklace you'll need the following tools:<br />
<br />
* Soldering equipment (Soldering iron, solder, tweezers, ...)<br />
* ISP programmer for Atmel AVR-microcontroller<br />
* A computer<br />
* Optional: equipment for etching circuit boards (when you do not want to use one of our pre-produced circuit boards)<br />
<br />
Everything you need is readily available at the RaumZeitLabor. Ask a friendly hackerspace member to introduce you to the equipment.<br />
<br />
==Hardware==<br />
<br />
===Circuit Board===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Circuit board, etched manually and painted red]]<br />
The circuit board was designed to be easily etched. If you want to etch the circuit by yourself you will find the file [[Hacklace/en#Download|here]].<br />
<br />
After you etched the pcb you just need two drilling diameters. Use a 1.2mm (0.047") diameter for the LED-matrix pins and the tactile-switch pins. Apart from those drill holes, the remaining drill holes should have a diameter of 0.9mm (0.035"). The pads on the upper left and upper right side are not part of the circuit and can be drilled to the diameter of the cable which acts as the holder for the necklace.<br />
<br />
In case you do not have the equipment for etching circuit boards, you can buy a professionally manufactured circuit board [[Hacklace#Bezugsquellen|here]].<br />
<br />
===Assembly===<br />
<br />
====Hint on the display====<br />
Due to shortages in hardware supply, there are 3 different display types. Depending on the type, the display has to be inserted differently. This is also a configuration parameter in the firmware.<br />
<br />
# HDSP-5403 hp 008 L3 - The black dot on the side of the display has to be arranged diagonally to PIN 1 (rectangular pad). Seen from top, that's the bottom right edge. Note: Since 01/2013 this display type is obsolete and will no longer be delivered with our kits.<br />
# TC07 / TA07 - Pin 1 of the display (rectangular pad) is in the same row as pin 1 of the micro-controller (square pad). Depending on the display type (TA or TC) the corresponding firmware has to be flashed.<br />
# LM57 - Same as TC07 display. Pin 1 of the display has been manually marked with a felt tip marker.<br />
<br />
====Instructions====<br />
<br />
Important: The top of the PCB is the side without traces and text! That's the side which is visible while waring. The traces and silkscreen are located on the back side. The back side is where you'll be soldering the components.<br />
<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD Resistors]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Resistors and Capacitor]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Aligning the IC Pins]]<br />
<br />
The assembling is done as follows:<br />
# Firstly, the two SMD resistors ('''R2''', '''R3''') are soldered to the conductor path side. Due to the large 1206 type, this is comparatively easy. At first, cover one pad with solder, then hold the resistor to the pad with a pair of tweezers. As soon as the part fits correctly, do the same with the other connector.<br />
# Bend the pins of the through-hole resistor '''R1''' in the correct width. You can use a bending tool. Insert the resistor into the holes. Fixate the resistor with a piece of tape. Turn the PCB around and solder the pins. Cut the remainder of the pins with a sidecutter.<br />
# Repeat with the capacitor ('''C1''').<br />
# If you don't like the white case of the display, paint it black using a permanent marker.<br />
# ICs usually don't come bent to the 2.54mm grid common in through-hole technology. You need to bend them to that grid first by either using a bending tool or by hand (see photo). Additionally, it is recommended to pre-tin the pins of the display a bit with solder.<br />
# Now it's time for a tricky bit: The dot-matrix display and the IC need to be soldered in '''at the same time'''. Insert the display from the top and apply a bit of tape to hold it in place, but don't solder it in yet! The display is supposed to fit into the pads with the larger holes. You can recognize the first pad for the IC by it's squre shape (Pin 1). The first pin of the display is labeled with a small "1" or a dot. The pins of the display needs to be cut so that they'll stick out of the PCB by about 1mm. Insert the IC from the opposite side. This requires a bit of trial-and-error until all the pins fit.<br />
# Solder the pins of the display and the IC. Apply a bit of solder flux to achieve better bonding. As we're soldering directly on the pins themselves you should wait a while after soldering one pin so that the parts don't overheat while soldering (this could break the uC)<br />
# Insert the button and the pin header on the top and solder it from the bottom.<br />
# Solder the two wires (red = positive, black = negative) to their corresponding pads. Then cut the wires to the desired length. To reduce mechanical stress you should guide both cables through their cable holes in the top of the PCB.<br />
# Last Step! You need to solder the wires to the battery holder. You need to make sure that the polarity is correct, as the hacklace doesn't provide polarity protection. You may want to bend the pins of the battery holder so that you don't prick your neck.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Soldering of the IC and display (before, after)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Pin header and button]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Completed hacklace with wires and battery holder]]<br />
|}<br />
<br />
===Flash the firmware===<br />
To flash the firmware you'll need an AVR programmer (the [[Usbasp|USBAsp]] is such a programmer). Connect your programmer to the ISP interface on the hacklace. <br />
<br />
The fuses for the attiny4313 need to be adjusted so that the controller runs at 4 MHz from it's internal RC Oscillator. The fuses are: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Set the fuse bits using avrdude:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
Replace <PROGRAMMER> with your used programmer, e.g. '''usbasp'''<br />
<br />
Now program the firmware and the eeprom configuration data.<br />
<br />
Program flash and eeprom using avrdude:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
==Software==<br />
<br />
=== Compiling the firmware ===<br />
The firmware for the attiny4313 was developed using AVR-Studio 6.0 from Atmel (AVR Toolchain Version: 3.4.0.663 - GCC 4.6.2). The contained file "iotn4313.h" has an error. A corrected version of that file is available in the GIT-Repository. Place the corrected file under Windows to "C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
<br />
If you're compiling manually using the avr-gcc toolchain, you should pass the compiler flags "-Os" (to optimize code size only) as well as "-DF_CPU=4000000" (to set the target CPU frequency to 4MHz).<br />
<br />
===Display Memory===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
The hacklace uses 200 bytes of display memory. Each byte represents one column of the display. The hacklace uses a proportional font by default. As such, most characters have a width of 4 columns plus one empty column for spacing. Animations are composited of single frames, where each frame requires 5 bytes. The maximum animation size is 40 frames, so also text messages are limited to about 40 characters. <br />
<br />
===Configuration===<br />
You can store custom texts and animations via a serial interface. You'll need a 3.3 or 5V serial cable. Connect it to CON2 (Pin 1: GND, Pin 2: TxD, Pin 3: RxD). Serial configuration: 2400 Baud, 8 data bits, no parity, 1 stop bit [8N1]).<br />
<br />
The text file configures your own texts or animations. You can edit it with any text editor. Make sure you're using an 8 bit ASCII encoding; UTF-8 is not supported. The maximum length of the configuration file is 256 bytes due to the microcontroller's eeprom memory.<br />
<br />
You need to send a specific init sequence to avoid programming by accident. Send the following sequence to your hacklace:<br />
<br />
Escape-Character (ASCII Code 27, resets the hacklace)<br />
Capital H, Capital L<br />
<br />
Now you can transfer the configuraion file. It is recommended to reset the hacklace again after you've transferred the file. This enables write protection.<br />
<br />
===Configuration file format===<br />
One messge is either one text or one animation. You can cycle though the messages by pushing the button. Each line of the configuration file contains exactly one message. A message always begins with a mode byte, followed by text or the data of the animation. A mode byte of 0 designates the end of the message list.<br />
<br />
The mode byte is defined as follows:<br />
* Bit 7: forward (0) or backward (1) scrolling<br />
* Bit 6..4: Duration of the pause after the end of the message<br />
* Bit 3: Text (0) or Animation (1)<br />
* Bit 2..0: Scroll speed<br />
<br />
Don't set all bits to zero, as this designates the end of the message list.<br />
<br />
You can enter texts as plain text. You can use any printable 7-bit ASCII characters as well as the german umlauts ([[Medium:Hacklace_Font_5x7_extended.bmp|Hacklace charset]]).<br />
<br />
The hacklace firmware supports escape chars to make entering special chars, animations and byte values easier:<br />
* Prefix with a '^' to increase the char value by 63. Example: '^A' represents the first special character (129), '^B' the second (130).<br />
* Prefix with a '~' chooses an animation stored in flash. Example: '~A' chooses the first animation, '~B' the second one.<br />
* Prefix with a '$' to enter hexidecimal values. Example: '$10' or '$A1'. You need to enter exactly two values. Only capital letters are allowed. Use space or colon to exit the hex mode.<br />
* Use '^^', '~~' or '$$' to represent the literal value.<br />
<br />
You can program own animations by entering the direct mode using '$FF'. Any bytes now entered will be directly stored into flash. Each byte represents a display column, where bit 0 is the first line and bit 6 the last line. bit 7 is not used and should be set to 0. Exit the direct mode by sending a character of value 255.<br />
<br />
Configuration example:<br />
<br />
<code><br />
$45,Sample text<br />
$40, Very slow scrolling<br />
$47, now very fast<br />
$74,medium speed with pause<br />
$84,.bidirectional.<br />
$44,Umlauts äÄöÖüÜß<br />
$24,A heart ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
===Creating animations===<br />
'''You can use the hacklace animator tool to create own animations: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
You need to create your own header file if you wish to replace the animations. That header file contains your animation data as byte array. Include a #include command into "animations.h" which will include your own header file. You'll also need to append your animation to the list of animations (animation[]). The position inside that list defines which character is assigned to it. For example, '~A' is the first animation inside that list (see [[Hacklace/en#Configuration file format|Configuration File]]).<br />
<br />
You can use the [[Medium:Hacklace_Animationtemplate.bmp|Hacklace Template]] to make it easier to create animations. It is a greyscale image with 40 frames with 5x8 pixels each. You can simply draw your frames using a bitmap paint program. The last line (8) is not used. To turn on a pixel, draw using color code 0, to turn it off draw using color code 255. Greyscale values are ignored. Crop the image to the number of used frames. Use the script "[[Medium:make_data.m|make_data.m]]" to convert your image to a C header file. Enter the file name without extension, e.g. make_data('my_animation'). You'll need FreeMat, a free Matlab clone.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!File<br />
!Format<br />
!License<br />
|-<br />
|Schematic<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bill of Materials<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|PCB etching template <br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Assembly Plan (front and back)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Firmware (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display Kingbright TC07-11)<br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|EEPROM hex file<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Source code (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
All files are published under the respective Creative-Commons license.<br />
<br />
==Pictures==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Hacklace worn as necklace]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Hacklace worn as belt clip]]<br />
|}<br />
<br />
The belt clip was made by attaching the battery holder to a PCB and connected using soldering lugs.<br />
<br />
You can see the hacklace on a video on YouTube [http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
==Ordering Information==<br />
In Germany, you can order all needed parts from Reichelt or CSD-Electronics. A list of parts can be found [[Medium:Hacklace_Bauteileliste.pdf|here]].<br />
<br />
=== Kit ===<br />
You can purchase a kit for 10€ - please contact [[Benutzer:Fabster|Fabster]] or [[Benutzer:muzy|muzy]].<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|260px|Parts]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|PCB]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Completed Hacklace]]<br />
|-<br />
|}<br />
<br />
==Credits==<br />
Hacklace was inspired by the "TinyMatrix" project from TigerUp [https://sites.google.com/site/tinymatrix/]. <br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10918Hacklace2013-10-09T16:09:35Z<p>Fabster: </p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
Hinweis: Dies hier ist die Projektseite des "Hacklace classic". Wenn du erweiterte Möglichkeiten benötigst, interessiert dich vielleicht auch das Folgeprojekt [http://www.hacklace.info|"Hacklace2"].<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]<br />
[[Category:Shop]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10861Hacklace2013-09-25T20:11:34Z<p>Fabster: /* Batteriehalter */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10860Hacklace2013-09-25T20:08:06Z<p>Fabster: /* Batteriehalter */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, gibt es für 4,- € einen Batteriehalter inklusive drei Alkaline-Batterien. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10839Hacklace2013-09-20T12:04:58Z<p>Fabster: /* Geld verdienen mit dem Hacklace */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
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.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10838Hacklace2013-09-20T12:04:05Z<p>Fabster: /* USB auf TTL Adapter */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
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,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei [[Benutzer:Fabster|Fabster]] einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10837Hacklace2013-09-20T12:01:22Z<p>Fabster: /* Batteriehalter */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
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.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei [[Benutzer:Fabster|Fabster]] einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10836Hacklace2013-09-20T12:00:43Z<p>Fabster: /* Batteriehalter */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces.<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei [[Benutzer:Fabster|Fabster]] einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10835Hacklace2013-09-20T12:00:09Z<p>Fabster: /* Bausatz */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_lcd_eckiges_loetauge.JPG|thumb|right|220px|Punkt am LC-Display zum eckigen Lötauge ausrichten]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
[[Datei:Hacklace_lcd_pins_abschneiden.jpg|thumb|right|220px|Pins des LC-Displays müssen gekürzt werden]]<br />
[[Datei:Hacklace_prozessor_ausrichtung.JPG|thumb|right|220px|Prozessor mit Hilfe der Kerbe ausrichten]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bietet das RaumZeitLabor einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro. Bei Interesse bitte einfach eine E-Mail (z. B. an [[Benutzer:Fabster|Fabster]]) schreiben. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei [[Benutzer:Fabster|Fabster]] einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Jugendf%C3%B6rderung&diff=10662Jugendförderung2013-08-15T17:17:14Z<p>Fabster: /* freiwillige Helfer */</p>
<hr />
<div>[[Kategorie:Öffentlichkeitsarbeit]]{{ProjektInfoBox<br />
| name=Jugendförderung<br />
| description=Nachwuchs für das RaumZeitLabor<br />
| status=beta<br />
| author=[[Benutzer:zwetschgo|zwetschgo]]<br />
}}<br />
<br />
Teil der Vereinsatzung ist auch die Jugendförderung. Deshalb werden wir im kommenden Jahr am Mannheimer Agenda Diplom für Kinder[1] teilnehmen. Desweiteren bemühen wir uns um Kooperationen mit Schulen, Jugendtreffs/häusern und dem Stadtjugendring, bzw. der Jugendförderung der Stadt Mannheim.<br />
<br />
==Mannheimer Agenda Diplom für Kinder==<br />
<br />
Das Agenda Diplom ist eine Art Pass in dem sich Kinder im Alter zwischen acht und zwölf Jahren von Frühjahr bis Herbst bei vielen verschiedenen Einrichtungen, Firmen und Vereinen einen Stempel eintragen lassen können. Diesen bekommen sie wenn sie an einer Veranstaltung zum Thema Nachhaltigkeit be einem der Orte teilgenommen haben. wenn sie mindestens sechs Stempel gesammelt und eingereicht haben, bekommen die Kinder am Ende der Aktion im Rahmen einer Feier ihr Diplom ausgehändigt.<br />
<br />
Am 13. September 2012 hatten wir Besuch von Frau Argiantzis von der Jugendförderung der Stadt Mannheim. Sie stellte das Programm kurz vor und machte sich ein Bild der Örtlichkeiten. Sie gab uns direkt ein positives Feedback. <br />
<br />
Die Workshops/Vorträge/Aktionen sollten nach Möglichkeit nachmittags stattfinden und etwa eine bis zwei Stunden dauern. Dabei dürfen den Kindern keine Kosten entstehen. Wir können jedoch Teilnehmeranzahl, Midestalter und Anmeldeform selbst festlegen.<br />
<br />
Um am Agenda Diplom 2013 teilnehmen zu können müssen wir bis Anfang 2013 ein Konzept entwickelt haben. Darin enthalten sein sollen: <br />
<br />
- Ein prägnanter Titel für die Veranstaltung<br />
<br />
- Eine kurze kindgerechte Beschreibung der Tätigkeit, <br />
<br />
- Termine zur Auswahl (mindestens einer, maximal vier)<br />
<br />
- Anmeldungsmodalitäten<br />
<br />
- Besonderheiten die es zu beachten gilt<br />
<br />
<br />
<br />
'''Vorschläge zur Veranstaltung'''<br />
<br />
'' "Aus alt mach neu - Es ist toll wenn es blinkt" ''<br />
<br />
Kleiner Workshop in dem eine kleine Schaltung zum Betrieb einer LED gefertigt werden soll. Dazu sollen alte Bauteile verwendet werden.<br />
<br />
Dazu braucht es "Sachverständige" für die etwas ausarbeiten was von ~ 10jährigen problemlos in 1-2 Stunden nachmittags gebastelt werden kann. Wer etwas dazu beitragen kann uund mag, trage sich bitte hier ein. Gerne auch mit anderen Ideen.<br />
<br />
Um den "langweiligen Kram" wie Kontakt mit der Stadt, Eintrag ins Programm, Ankündigungen, usw. kümmert sich zwetschgo.<br />
<br />
<br /><br />
<br />
'' "Hacklace - Ein nachhaltiges und wandelbares Technik-Spielzeug für kleine und große Entdecker" ''<br />
<br />
Wenn Kinder blinkende Dinge entdecken ist Faszination garantiert. Doch die meisten Spielzeuge liegen meist nach wenigen Augenblicken bereits in der Zimmerecke. Um die Aufmerksamkeit und Begeisterung wieder herzustellen, werden oft einfach mehr Spielzeuge gekauft. <br />
Nachhaltig ist das nicht! Wie wäre es mit einem Spielzeug was man verändern kann wie Bauklötze, einem Spielzeug was alle Freunde Bauklötze staunen lässt? Erstelle deine eigenen Animationen und Texte, zeige sie auf dem Display an und entdecke spielerisch die Welt der Technik.<br />
<br />
Anmeldemodalitäten:<br />
Workshop ist kostenlos, Arbeitsmaterial kann für einen Unkostenbeitrag von 10€ mit nach Hause genommen werden.<br />
<br />
Kindertext:<br />
Technik gibt es überall. In Computern, Handies und sogar in deinem Spielzeug. Wenn dir die Technik nicht gefällt schmeißt du die Sachen meist einfach weg. Nachhaltig ist das nicht. Wie wäre es, wenn du dein Spielzeug verändern kannst? <br />
Technikbegeistert und interessiert? Komm an einem der Termine vorbei und lerne das Hacklace kennen. Das Hacklace ist eine kleine leuchtende Anzeige auf die du deine eigenen Texte und Animationen haben kannst. Wenn es dir nicht mehr gefällt kannst du immer wieder was neues anzeigen. Lerne wie man Texte änder und wie nachhaltige Technik funktioniert.<br />
Für einen kleinen Beitrag von nur 10€ kannst du das Hacklace auch mit nach Hause nehmen und allen deinen Freunden zeigen.<br />
<br />
<br />
'''Update 28.11.2012'''<br />
<br />
Kurze Vorstellung des Konzeptes bei der zuständigen Sachbearbeiterin bei der städtischen Jugendförderung, jetzt warten auf Antwort mit Einzelheiten und Unterlagen zur Teilnahme. <br />
<br />
'''Projekttitel:'''<br />
Wir löten ein programmierbares elektronisches Schmuckstück<br />
''Der Projekttitel soll auch Mädchen ansprechen.'' (ist ebenfalls ein relevanter Punkt der "Nachhaltigkeit" im Konzept des Agenda Diploms für Kinder)<br />
Gebaut wird ein Hacklace, ein immer wieder neu programierbares kleines<br />
Gerät auf dem in einer 5x7 Pixel LED Matrix Animationen oder Bilder<br />
wiedergegeben werden können. (mehr Infos: hacklace.org)<br />
Der Zusammenbau ist einfach und auch von Anfängern ohne Lötkenntnisse<br />
mit Anleitung sehr gut durchführbar.<br />
Zusätzlich lernen die Kinder neben dem Löten auch die Programmierung des<br />
Mikrokontrollers auf eine kindgerechte Art und Weise. Es wird extra dazu<br />
ein Programm mit grafischer Benutzeroberfläche entwickelt.<br />
Ein Workshop dauert etwa 2, maximal 3 Stunden, je nachdem wie gut die<br />
Kinder mit ihren Wwerkstücken vorankommen.<br />
Wir planen 4 Termine mit je 6 Kindern ab 10 bis 14 Jahre.<br />
Wünschenswert wäre, dass Eltern, wenn möglich, mitkommen, denn das<br />
Gelände ist ja, wie Sie selbst wissen, etwas unübersichtlich und das<br />
RaumZeitLabor nicht ganz einfach zu finden. Außerdem können sich die<br />
Eltern dann auch gleich einen Eindruck vom RaumZeitLabor machen, denn so<br />
bekannt dürfte unser Hackerspace ja bei ihnen (noch) nicht sein.<br />
Die Bausätze kosten etwa 10 € das Stück, den Kindern entstehen aber<br />
keine Kosten, wir versuchen das über Fördermittel des Bezirksbeirates<br />
Käfertal zu finanzieren.<br />
Abhänging vom Zeitraum des Agenda Diploms werden wir die Termine zu<br />
unterschiedlichen Zeiten anbieten, so dass für möglichst jeden etwas<br />
dabei ist:<br />
1x in den Ferien vormittags<br />
1x spät nachmittags<br />
1x am Wochenende<br />
1x flexibler Termin, abhänging von unseren projektbetreuenden Mitgliedern<br />
<br />
Ein ausführlicher Text ist in Arbeit, ebenso wie der Antrag für den Bezirksbeirat<br />
<br />
=== freiwillige Helfer ===<br />
Do 23. Mai 13, 11.00 – 14.00 Uhr:<br />
* [[Benutzer:Muzy|muzy]]<br />
* [[Benutzer:Fabster|Fabster]]<br />
* [[Benutzer:Unicorn|Unicorn]]<br />
* [[Benutzer:zwetschgo|zwetschgo]]<br />
<br />
Mi 17. Juli 13, 16.30 – 19.30 Uhr:<br />
* [[Benutzer:Hax404|hax404]]<br />
* [[Benutzer:Brainfreeze|Brainfreeze]]<br />
* [[Benutzer:Unicorn|Unicorn]]<br />
* [[Benutzer:zwetschgo|zwetschgo]]<br />
* [[Benutzer:TabascoEye|TabascoEye]]<br />
* [[Benutzer:Monika|Monika]]<br />
<br />
Fr 30. August 13, 15.00 – 18.00 Uhr:<br />
* [[Benutzer:zwetschgo|zwetschgo]]<br />
* [[Benutzer:TabascoEye|TabascoEye]] (tentative)<br />
* [[Benutzer:Unicorn|Unicorn]]<br />
* [[Benutzer:Fabster|Fabster]]<br />
<br />
Sa 21. September 13, 12.00 – 15.00 Uhr:<br />
* [[Benutzer:zwetschgo|zwetschgo]]<br />
* [[Benutzer:TabascoEye|TabascoEye]] (tentative)<br />
<br />
==geplante Kooperationen==<br />
<br />
- Schulen <br />
<br />
- Jugendtreffs/häuser<br />
<br />
- Stadtjugendring<br />
<br />
Dabei wollen wir möglichst vor Ort zeigen was wir haben und was wir können (mobiler Hackerspace) um damit vielleicht "Nachwuchs" ins RZL zu bringen<br />
<br />
==weitere Optionen==<br />
<br />
In Zukunft dann vielleicht wiederkehrende Termine, eine Art Tag der offenen Tür mit Eltern und Jugendlichen um beide an interesante Aspekte von Technik heranzuführen.<br />
<br />
<br />
<br />
[1] [http://www.mannheim.de/buerger-sein/mannheimer-agenda-diplom-kinder Mannheimer Agenda Diplom für Kinder]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10660Hacklace2013-08-15T08:53:19Z<p>Fabster: /* Serielles Interface */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Um dies zu beheben, muß das Hacklace kalibriert werden. Hierfür gibt es zwei Möglichkeiten:<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10587Hacklace2013-08-05T15:35:08Z<p>Fabster: /* Hinweis zum Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# 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.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10586Hacklace2013-08-05T15:31:52Z<p>Fabster: /* Hinweis zum Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10585Hacklace2013-08-05T15:31:35Z<p>Fabster: /* Hinweis zum Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
# BS - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10584Hacklace2013-08-05T15:30:53Z<p>Fabster: /* Anleitung */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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).<br />
# 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.<br />
# 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace/en&diff=10491Hacklace/en2013-06-18T20:22:26Z<p>Fabster: /* Instructions */</p>
<hr />
<div>{{LanguageBox |msg=This page was translated from the German version. Click [[Hacklace|here]] to visit the original page.}}<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = A necklace with a 5x7 dotmatrix display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* You're searching for an accessory suitable for nerds, geeks and hackers? Try a hacklace!<br />
* You're searching for an individual gift? Try a hacklace!<br />
* You want to be the highlight on any party? A hacklace is your gadget with which you can gain attention!<br />
<br />
A hacklace is 5x7 dotmatrix display which is attached to a necklace. You can create your own animations and messages which one can display on the dotmatrix display. You are only limited by your own imagination.<br />
<br />
<br />
==Features==<br />
* Only 48mm x 15mm (1.89" x 0.59") in size.<br />
* Coin cell included<br />
* Symmetric component layout<br />
* Adjustable pin mapping to support dot-matrix display types<br />
* Supports ASCII including german umlauts and additional symbols<br />
* Propotional font and predefined animations included<br />
* Serial port (3,3 or 5V) to upload your own messages and animations which are then stored in the EEPROM.<br />
* Animations and messages can be created easily using a text-editor of your choice.<br />
* Ready to use. Your hacklace microcontroller comes with the latest firmware.<br />
* Speed, delay and modus can be set individually.<br />
* ISP-connector for flashing custom firmware.<br />
<br />
<br />
==Usage==<br />
Using the hacklace is very easy, because there is just one button which triggers the actions.<br />
<br />
By pressing this button for a short period of time, the hacklace switches to the next text/animation. By pressing the button longer, the hacklace goes into a deep sleep mode which consumes nearly no power. By pressing the button again, the hacklace resumes from deep sleep.<br />
<br />
==Prerequisites==<br />
Building the hacklace will help you learn how to solder. If you already have soldering experience and knowledge how to flash AVR mircocontrollers, it should be easy for you to build one. If you are not used to the tasks of soldering and flashing a microcontroller, we recommend to ask some RaumZeitLabor member to help you. This way you will gain the needed expertise!<br />
<br />
==Tools needed==<br />
To build a hacklace you'll need the following tools:<br />
<br />
* Soldering equipment (Soldering iron, solder, tweezers, ...)<br />
* ISP programmer for Atmel AVR-microcontroller<br />
* A computer<br />
* Optional: equipment for etching circuit boards (when you do not want to use one of our pre-produced circuit boards)<br />
<br />
Everything you need is readily available at the RaumZeitLabor. Ask a friendly hackerspace member to introduce you to the equipment.<br />
<br />
==Hardware==<br />
<br />
===Circuit Board===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Circuit board, etched manually and painted red]]<br />
The circuit board was designed to be easily etched. If you want to etch the circuit by yourself you will find the file [[Hacklace/en#Download|here]].<br />
<br />
After you etched the pcb you just need two drilling diameters. Use a 1.2mm (0.047") diameter for the LED-matrix pins and the tactile-switch pins. Apart from those drill holes, the remaining drill holes should have a diameter of 0.9mm (0.035"). The pads on the upper left and upper right side are not part of the circuit and can be drilled to the diameter of the cable which acts as the holder for the necklace.<br />
<br />
In case you do not have the equipment for etching circuit boards, you can buy a professionally manufactured circuit board [[Hacklace#Bezugsquellen|here]].<br />
<br />
===Assembly===<br />
<br />
====Hint on the display====<br />
Due to shortages in hardware supply, there are 3 different display types. Depending on the type, the display has to be inserted differently. This is also a configuration parameter in the firmware.<br />
<br />
# HDSP-5403 hp 008 L3 - The black dot on the side of the display has to be arranged diagonally to PIN 1 (rectangular pad). Seen from top, that's the bottom right edge. Note: Since 01/2013 this display type is obsolete and will no longer be delivered with our kits.<br />
# TC07 / TA07 - Pin 1 of the display (rectangular pad) is in the same row as pin 1 of the micro-controller (square pad). Depending on the display type (TA or TC) the corresponding firmware has to be flashed.<br />
# LM57 - Same as TC07 display. Pin 1 of the display has been manually marked with a felt tip marker.<br />
<br />
====Instructions====<br />
<br />
Important: The top of the PCB is the side without traces and text! That's the side which is visible while waring. The traces and silkscreen are located on the back side. The back side is where you'll be soldering the components.<br />
<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD Resistors]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Resistors and Capacitor]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Aligning the IC Pins]]<br />
<br />
The assembling is done as follows:<br />
# Firstly, the two SMD resistors ('''R2''', '''R3''') are soldered to the conductor path side. Due to the large 1206 type, this is comparatively easy. At first, cover one pad with solder, then hold the resistor to the pad with a pair of tweezers. As soon as the part fits correctly, do the same with the other connector.<br />
# Bend the pins of the through-hole resistor '''R1''' in the correct width. You can use a bending tool. Insert the resistor into the holes. Fixate the resistor with a piece of tape. Turn the PCB around and solder the pins. Cut the remainder of the pins with a sidecutter.<br />
# Repeat with the capacitor ('''C1''').<br />
# If you don't like the white case of the display, paint it black using a permanent marker.<br />
# ICs usually don't come bent to the 2.54mm grid common in through-hole technology. You need to bend them to that grid first by either using a bending tool or by hand (see photo). Additionally, it is recommended to pre-tin the pins of the display a bit with solder.<br />
# Now it's time for a tricky bit: The dot-matrix display and the IC need to be soldered in '''at the same time'''. Insert the display from the top and apply a bit of tape to hold it in place, but don't solder it in yet! The display is supposed to fit into the pads with the larger holes. You can recognize the first pad for the IC by it's squre shape (Pin 1). The first pin of the display is labeled with a small "1" or a dot. The pins of the display needs to be cut so that they'll stick out of the PCB by about 1mm. Insert the IC from the opposite side. This requires a bit of trial-and-error until all the pins fit.<br />
# Solder the pins of the display and the IC. Apply a bit of solder flux to achieve better bonding. As we're soldering directly on the pins themselves you should wait a while after soldering one pin so that the parts don't overheat while soldering (this could break the uC)<br />
# Insert the button and the pin header on the top and solder it from the bottom.<br />
# Solder the two wires (red = positive, black = negative) to their corresponding pads. Then cut the wires to the desired length. To reduce mechanical stress you should guide both cables through their cable holes in the top of the PCB.<br />
# Last Step! You need to solder the wires to the battery holder. You need to make sure that the polarity is correct, as the hacklace doesn't provide polarity protection. You may want to bend the pins of the battery holder so that you don't prick your neck.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Soldering of the IC and display (before, after)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Pin header and button]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Completed hacklace with wires and battery holder]]<br />
|}<br />
<br />
===Flash the firmware===<br />
To flash the firmware you'll need an AVR programmer (the [[Usbasp|USBAsp]] is such a programmer). Connect your programmer to the ISP interface on the hacklace. <br />
<br />
The fuses for the attiny4313 need to be adjusted so that the controller runs at 4 MHz from it's internal RC Oscillator. The fuses are: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Set the fuse bits using avrdude:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
Replace <PROGRAMMER> with your used programmer, e.g. '''usbasp'''<br />
<br />
Now program the firmware and the eeprom configuration data.<br />
<br />
Program flash and eeprom using avrdude:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
==Software==<br />
<br />
=== Compiling the firmware ===<br />
The firmware for the attiny4313 was developed using AVR-Studio 6.0 from Atmel (AVR Toolchain Version: 3.4.0.663 - GCC 4.6.2). The contained file "iotn4313.h" has an error. A corrected version of that file is available in the GIT-Repository. Place the corrected file under Windows to "C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
<br />
If you're compiling manually using the avr-gcc toolchain, you should pass the compiler flags "-Os" (to optimize code size only) as well as "-DF_CPU=4000000" (to set the target CPU frequency to 4MHz).<br />
<br />
===Display Memory===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
The hacklace uses 200 bytes of display memory. Each byte represents one column of the display. The hacklace uses a proportional font by default. As such, most characters have a width of 4 columns plus one empty column for spacing. Animations are composited of single frames, where each frame requires 5 bytes. The maximum animation size is 40 frames, so also text messages are limited to about 40 characters. <br />
<br />
===Configuration===<br />
You can store custom texts and animations via a serial interface. You'll need a 3.3 or 5V serial cable. Connect it to CON2 (Pin 1: GND, Pin 2: TxD, Pin 3: RxD). Serial configuration: 2400 Baud, 8 data bits, no parity, 1 stop bit [8N1]).<br />
<br />
The text file configures your own texts or animations. You can edit it with any text editor. Make sure you're using an 8 bit ASCII encoding; UTF-8 is not supported. The maximum length of the configuration file is 256 bytes due to the microcontroller's eeprom memory.<br />
<br />
You need to send a specific init sequence to avoid programming by accident. Send the following sequence to your hacklace:<br />
<br />
Escape-Character (ASCII Code 27, resets the hacklace)<br />
Capital H, Capital L<br />
<br />
Now you can transfer the configuraion file. It is recommended to reset the hacklace again after you've transferred the file. This enables write protection.<br />
<br />
===Configuration file format===<br />
One messge is either one text or one animation. You can cycle though the messages by pushing the button. Each line of the configuration file contains exactly one message. A message always begins with a mode byte, followed by text or the data of the animation. A mode byte of 0 designates the end of the message list.<br />
<br />
The mode byte is defined as follows:<br />
* Bit 7: forward (0) or backward (1) scrolling<br />
* Bit 6..4: Duration of the pause after the end of the message<br />
* Bit 3: Text (0) or Animation (1)<br />
* Bit 2..0: Scroll speed<br />
<br />
Don't set all bits to zero, as this designates the end of the message list.<br />
<br />
You can enter texts as plain text. You can use any printable 7-bit ASCII characters as well as the german umlauts ([[Medium:Hacklace_Font_5x7_extended.bmp|Hacklace charset]]).<br />
<br />
The hacklace firmware supports escape chars to make entering special chars, animations and byte values easier:<br />
* Prefix with a '^' to increase the char value by 63. Example: '^A' represents the first special character (129), '^B' the second (130).<br />
* Prefix with a '~' chooses an animation stored in flash. Example: '~A' chooses the first animation, '~B' the second one.<br />
* Prefix with a '$' to enter hexidecimal values. Example: '$10' or '$A1'. You need to enter exactly two values. Only capital letters are allowed. Use space or colon to exit the hex mode.<br />
* Use '^^', '~~' or '$$' to represent the literal value.<br />
<br />
You can program own animations by entering the direct mode using '$FF'. Any bytes now entered will be directly stored into flash. Each byte represents a display column, where bit 0 is the first line and bit 6 the last line. bit 7 is not used and should be set to 0. Exit the direct mode by sending a character of value 255.<br />
<br />
Configuration example:<br />
<br />
<code><br />
$45,Sample text<br />
$40, Very slow scrolling<br />
$47, now very fast<br />
$74,medium speed with pause<br />
$84,.bidirectional.<br />
$44,Umlauts äÄöÖüÜß<br />
$24,A heart ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
===Creating animations===<br />
'''You can use the hacklace animator tool to create own animations: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
You need to create your own header file if you wish to replace the animations. That header file contains your animation data as byte array. Include a #include command into "animations.h" which will include your own header file. You'll also need to append your animation to the list of animations (animation[]). The position inside that list defines which character is assigned to it. For example, '~A' is the first animation inside that list (see [[Hacklace/en#Configuration file format|Configuration File]]).<br />
<br />
You can use the [[Medium:Hacklace_Animationtemplate.bmp|Hacklace Template]] to make it easier to create animations. It is a greyscale image with 40 frames with 5x8 pixels each. You can simply draw your frames using a bitmap paint program. The last line (8) is not used. To turn on a pixel, draw using color code 0, to turn it off draw using color code 255. Greyscale values are ignored. Crop the image to the number of used frames. Use the script "[[Medium:make_data.m|make_data.m]]" to convert your image to a C header file. Enter the file name without extension, e.g. make_data('my_animation'). You'll need FreeMat, a free Matlab clone.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!File<br />
!Format<br />
!License<br />
|-<br />
|Schematic<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bill of Materials<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|PCB etching template <br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Assembly Plan (front and back)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Firmware (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display Kingbright TC07-11)<br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|EEPROM hex file<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Source code (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
All files are published under the respective Creative-Commons license.<br />
<br />
==Pictures==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Hacklace worn as necklace]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Hacklace worn as belt clip]]<br />
|}<br />
<br />
The belt clip was made by attaching the battery holder to a PCB and connected using soldering lugs.<br />
<br />
You can see the hacklace on a video on YouTube [http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
==Ordering Information==<br />
In Germany, you can order all needed parts from Reichelt or CSD-Electronics. A list of parts can be found [[Medium:Hacklace_Bauteileliste.pdf|here]].<br />
<br />
=== Kit ===<br />
You can purchase a kit for 10€ - please contact [[Benutzer:Fabster|Fabster]] or [[Benutzer:muzy|muzy]].<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|260px|Parts]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|PCB]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Completed Hacklace]]<br />
|-<br />
|}<br />
<br />
==Credits==<br />
Hacklace was inspired by the "TinyMatrix" project from TigerUp [https://sites.google.com/site/tinymatrix/]. <br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10490Hacklace2013-06-18T20:21:40Z<p>Fabster: /* Anleitung */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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 kann man jedes Kabel durch die zugehörige Bohrung in der oberen Ecke führen.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]<br />
[[Category:Raum-Kommerz-Labor]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10187Hacklace2013-06-04T07:51:39Z<p>Fabster: /* Konfiguration */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
Mit folgendem Befehl erhältst du ein Terminal, welches zum interaktiven Debuggen nützlich ist.<br />
<br />
<code><br />
# screen /dev/ttyUSB0 2400<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10184Hacklace2013-06-03T15:56:30Z<p>Fabster: /* Hacklace als serielles Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
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.<br />
<br />
<code><br />
# printf '\eHDCTest \0xFF\0x7F\0x01\0x02\0x04\0x08\0x10\0x20\0x40\0x7F\0xFF Ende\e'<br />
</code><br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10183Hacklace2013-06-03T15:46:59Z<p>Fabster: /* Download */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-Files zum Flashen des Controllers (Github)<br />
|[https://github.com/fabster/Hacklace/tree/master/Hexfiles]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Bei den Hexfiles gibt es zwei Varianten. Abhängig vom verwendeten Displaytyp muß das passende File ausgewählt werden.<br />
* Hacklace_Kingbright_TA.hex für "common anode"-Displays wie z. B. Kingbright TA07-11<br />
* Hacklace_Kingbright_TC.hex für "common cathode"-Displays wie z. B. Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck<br />
<br />
Das .eep-File dient zum Flashen des EEPROMS.<br />
<br />
Alle aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter der GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10180Hacklace2013-06-02T19:07:32Z<p>Fabster: /* Konfiguration */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHL$40,^R^R^R\n$0C,$FF $7F $6B $6B $6B $7F $FF,\n$45,fertig\n$00,\e' > /dev/ttyUSB0<br />
</code><br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10179Hacklace2013-06-02T14:45:58Z<p>Fabster: /* Hacklace als serielles Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
Mit dem [https://github.com/Hacklace/Animator/wiki/Download Hacklace-Animator] kannst du Animationen erstellen und das EEPROM deines Hacklaces flashen.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
Hier ein Beispiel für alle, die gerne mit der Kommandozeile unter UNIX arbeiten:<br />
<br />
<code><br />
# stty -F /dev/ttyUSB0 2400<br />
# stty -F /dev/ttyUSB0<br />
speed 2400 baud; line = 0;<br />
kill = ^H; min = 100; time = 2;<br />
-icrnl -imaxbel -opost -onlcr<br />
-isig -icanon -echo<br />
# printf '\eHDCHi World' > /dev/ttyUSB0<br />
</code><br />
<br />
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'.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11, LM57 und mit "BS" Seitenaufdruck) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace/en&diff=10130Hacklace/en2013-05-16T18:02:44Z<p>Fabster: /* Hint on the display */</p>
<hr />
<div>{{LanguageBox |msg=This page was translated from the German version. Click [[Hacklace|here]] to visit the original page.}}<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = A necklace with a 5x7 dotmatrix display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* You're searching for an accessory suitable for nerds, geeks and hackers? Try a hacklace!<br />
* You're searching for an individual gift? Try a hacklace!<br />
* You want to be the highlight on any party? A hacklace is your gadget with which you can gain attention!<br />
<br />
A hacklace is 5x7 dotmatrix display which is attached to a necklace. You can create your own animations and messages which one can display on the dotmatrix display. You are only limited by your own imagination.<br />
<br />
<br />
==Features==<br />
* Only 48mm x 15mm (1.89" x 0.59") in size.<br />
* Coin cell included<br />
* Symmetric component layout<br />
* Adjustable pin mapping to support dot-matrix display types<br />
* Supports ASCII including german umlauts and additional symbols<br />
* Propotional font and predefined animations included<br />
* Serial port (3,3 or 5V) to upload your own messages and animations which are then stored in the EEPROM.<br />
* Animations and messages can be created easily using a text-editor of your choice.<br />
* Ready to use. Your hacklace microcontroller comes with the latest firmware.<br />
* Speed, delay and modus can be set individually.<br />
* ISP-connector for flashing custom firmware.<br />
<br />
<br />
==Usage==<br />
Using the hacklace is very easy, because there is just one button which triggers the actions.<br />
<br />
By pressing this button for a short period of time, the hacklace switches to the next text/animation. By pressing the button longer, the hacklace goes into a deep sleep mode which consumes nearly no power. By pressing the button again, the hacklace resumes from deep sleep.<br />
<br />
==Prerequisites==<br />
Building the hacklace will help you learn how to solder. If you already have soldering experience and knowledge how to flash AVR mircocontrollers, it should be easy for you to build one. If you are not used to the tasks of soldering and flashing a microcontroller, we recommend to ask some RaumZeitLabor member to help you. This way you will gain the needed expertise!<br />
<br />
==Tools needed==<br />
To build a hacklace you'll need the following tools:<br />
<br />
* Soldering equipment (Soldering iron, solder, tweezers, ...)<br />
* ISP programmer for Atmel AVR-microcontroller<br />
* A computer<br />
* Optional: equipment for etching circuit boards (when you do not want to use one of our pre-produced circuit boards)<br />
<br />
Everything you need is readily available at the RaumZeitLabor. Ask a friendly hackerspace member to introduce you to the equipment.<br />
<br />
==Hardware==<br />
<br />
===Circuit Board===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Circuit board, etched manually and painted red]]<br />
The circuit board was designed to be easily etched. If you want to etch the circuit by yourself you will find the file [[Hacklace/en#Download|here]].<br />
<br />
After you etched the pcb you just need two drilling diameters. Use a 1.2mm (0.047") diameter for the LED-matrix pins and the tactile-switch pins. Apart from those drill holes, the remaining drill holes should have a diameter of 0.9mm (0.035"). The pads on the upper left and upper right side are not part of the circuit and can be drilled to the diameter of the cable which acts as the holder for the necklace.<br />
<br />
In case you do not have the equipment for etching circuit boards, you can buy a professionally manufactured circuit board [[Hacklace#Bezugsquellen|here]].<br />
<br />
===Assembly===<br />
<br />
====Hint on the display====<br />
Due to shortages in hardware supply, there are 3 different display types. Depending on the type, the display has to be inserted differently. This is also a configuration parameter in the firmware.<br />
<br />
# HDSP-5403 hp 008 L3 - The black dot on the side of the display has to be arranged diagonally to PIN 1 (rectangular pad). Seen from top, that's the bottom right edge. Note: Since 01/2013 this display type is obsolete and will no longer be delivered with our kits.<br />
# TC07 / TA07 - Pin 1 of the display (rectangular pad) is in the same row as pin 1 of the micro-controller (square pad). Depending on the display type (TA or TC) the corresponding firmware has to be flashed.<br />
# LM57 - Same as TC07 display. Pin 1 of the display has been manually marked with a felt tip marker.<br />
<br />
====Instructions====<br />
<br />
Important: The top of the PCB is the side without traces and text! That's the side which is visible while waring. The traces and silkscreen are located on the back side. The back side is where you'll be soldering the components.<br />
<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD Resistors]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Resistors and Capacitor]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Aligning the IC Pins]]<br />
<br />
The assembling is done as follows:<br />
# Firstly, the two SMD resistors ('''R2''', '''R3''') are soldered to the conductor path side. Due to the large 1206 type, this is comparatively easy. At first, cover one pad with solder, then hold the resistor to the pad with a pair of tweezers. As soon as the part fits correctly, do the same with the other connector.<br />
# Bend the pins of the through-hole resistor '''R1''' in the correct width. You can use a bending tool. Insert the resistor into the holes. Fixate the resistor with a piece of tape. Turn the PCB around and solder the pins. Cut the remainder of the pins with a sidecutter.<br />
# Repeat with the capacitor ('''C1''').<br />
# If you don't like the white case of the display, paint it black using a permanent marker.<br />
# ICs usually don't come bent to the 2.54mm grid common in through-hole technology. You need to bend them to that grid first by either using a bending tool or by hand (see photo). Additionally, it is recommended to pre-tin the pins of the display a bit with solder.<br />
# Now it's time for a tricky bit: The dot-matrix display and the IC need to be soldered in '''at the same time'''. Insert the display from the top and apply a bit of tape to hold it in place, but don't solder it in yet! The display is supposed to fit into the pads with the larger holes. You can recognize the first pad for the IC by it's squre shape (Pin 1). The first pin of the display is labeled with a small "1" or a dot. The pins of the display needs to be cut so that they'll stick out of the PCB by about 1mm. Insert the IC from the opposite side. This requires a bit of trial-and-error until all the pins fit.<br />
# Solder the pins of the display and the IC. Apply a bit of solder flux to achieve better bonding. As we're soldering directly on the pins themselves you should wait a while after soldering one pin so that the parts don't overheat while soldering (this could break the uC)<br />
# Insert the button and the pin header on the top and solder it from the bottom.<br />
# Solder the two wires (red = positive, black = negative) to their corresponding pads. To reduce mechanical stress you should guide both cables through their cable holes in the top of the PCB.<br />
# Last Step! You need to solder the wires to the battery holder. You need to make sure that the polarity is correct, as the hacklace doesn't provide polarity protection. You may want to bend the pins of the battery holder so that you don't prick your neck.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Soldering of the IC and display (before, after)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Pin header and button]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Completed hacklace with wires and battery holder]]<br />
|}<br />
<br />
===Flash the firmware===<br />
To flash the firmware you'll need an AVR programmer (the [[Usbasp|USBAsp]] is such a programmer). Connect your programmer to the ISP interface on the hacklace. <br />
<br />
The fuses for the attiny4313 need to be adjusted so that the controller runs at 4 MHz from it's internal RC Oscillator. The fuses are: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Set the fuse bits using avrdude:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
Replace <PROGRAMMER> with your used programmer, e.g. '''usbasp'''<br />
<br />
Now program the firmware and the eeprom configuration data.<br />
<br />
Program flash and eeprom using avrdude:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
==Software==<br />
<br />
=== Compiling the firmware ===<br />
The firmware for the attiny4313 was developed using AVR-Studio 6.0 from Atmel (AVR Toolchain Version: 3.4.0.663 - GCC 4.6.2). The contained file "iotn4313.h" has an error. A corrected version of that file is available in the GIT-Repository. Place the corrected file under Windows to "C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
<br />
If you're compiling manually using the avr-gcc toolchain, you should pass the compiler flags "-Os" (to optimize code size only) as well as "-DF_CPU=4000000" (to set the target CPU frequency to 4MHz).<br />
<br />
===Display Memory===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
The hacklace uses 200 bytes of display memory. Each byte represents one column of the display. The hacklace uses a proportional font by default. As such, most characters have a width of 4 columns plus one empty column for spacing. Animations are composited of single frames, where each frame requires 5 bytes. The maximum animation size is 40 frames, so also text messages are limited to about 40 characters. <br />
<br />
===Configuration===<br />
You can store custom texts and animations via a serial interface. You'll need a 3.3 or 5V serial cable. Connect it to CON2 (Pin 1: GND, Pin 2: TxD, Pin 3: RxD). Serial configuration: 2400 Baud, 8 data bits, no parity, 1 stop bit [8N1]).<br />
<br />
The text file configures your own texts or animations. You can edit it with any text editor. Make sure you're using an 8 bit ASCII encoding; UTF-8 is not supported. The maximum length of the configuration file is 256 bytes due to the microcontroller's eeprom memory.<br />
<br />
You need to send a specific init sequence to avoid programming by accident. Send the following sequence to your hacklace:<br />
<br />
Escape-Character (ASCII Code 27, resets the hacklace)<br />
Capital H, Capital L<br />
<br />
Now you can transfer the configuraion file. It is recommended to reset the hacklace again after you've transferred the file. This enables write protection.<br />
<br />
===Configuration file format===<br />
One messge is either one text or one animation. You can cycle though the messages by pushing the button. Each line of the configuration file contains exactly one message. A message always begins with a mode byte, followed by text or the data of the animation. A mode byte of 0 designates the end of the message list.<br />
<br />
The mode byte is defined as follows:<br />
* Bit 7: forward (0) or backward (1) scrolling<br />
* Bit 6..4: Duration of the pause after the end of the message<br />
* Bit 3: Text (0) or Animation (1)<br />
* Bit 2..0: Scroll speed<br />
<br />
Don't set all bits to zero, as this designates the end of the message list.<br />
<br />
You can enter texts as plain text. You can use any printable 7-bit ASCII characters as well as the german umlauts ([[Medium:Hacklace_Font_5x7_extended.bmp|Hacklace charset]]).<br />
<br />
The hacklace firmware supports escape chars to make entering special chars, animations and byte values easier:<br />
* Prefix with a '^' to increase the char value by 63. Example: '^A' represents the first special character (129), '^B' the second (130).<br />
* Prefix with a '~' chooses an animation stored in flash. Example: '~A' chooses the first animation, '~B' the second one.<br />
* Prefix with a '$' to enter hexidecimal values. Example: '$10' or '$A1'. You need to enter exactly two values. Only capital letters are allowed. Use space or colon to exit the hex mode.<br />
* Use '^^', '~~' or '$$' to represent the literal value.<br />
<br />
You can program own animations by entering the direct mode using '$FF'. Any bytes now entered will be directly stored into flash. Each byte represents a display column, where bit 0 is the first line and bit 6 the last line. bit 7 is not used and should be set to 0. Exit the direct mode by sending a character of value 255.<br />
<br />
Configuration example:<br />
<br />
<code><br />
$45,Sample text<br />
$40, Very slow scrolling<br />
$47, now very fast<br />
$74,medium speed with pause<br />
$84,.bidirectional.<br />
$44,Umlauts äÄöÖüÜß<br />
$24,A heart ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
===Creating animations===<br />
'''You can use the hacklace animator tool to create own animations: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
You need to create your own header file if you wish to replace the animations. That header file contains your animation data as byte array. Include a #include command into "animations.h" which will include your own header file. You'll also need to append your animation to the list of animations (animation[]). The position inside that list defines which character is assigned to it. For example, '~A' is the first animation inside that list (see [[Hacklace/en#Configuration file format|Configuration File]]).<br />
<br />
You can use the [[Medium:Hacklace_Animationtemplate.bmp|Hacklace Template]] to make it easier to create animations. It is a greyscale image with 40 frames with 5x8 pixels each. You can simply draw your frames using a bitmap paint program. The last line (8) is not used. To turn on a pixel, draw using color code 0, to turn it off draw using color code 255. Greyscale values are ignored. Crop the image to the number of used frames. Use the script "[[Medium:make_data.m|make_data.m]]" to convert your image to a C header file. Enter the file name without extension, e.g. make_data('my_animation'). You'll need FreeMat, a free Matlab clone.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!File<br />
!Format<br />
!License<br />
|-<br />
|Schematic<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bill of Materials<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|PCB etching template <br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Assembly Plan (front and back)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Firmware (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display Kingbright TC07-11)<br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Firmware (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|EEPROM hex file<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Source code (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
All files are published under the respective Creative-Commons license.<br />
<br />
==Pictures==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Hacklace worn as necklace]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Hacklace worn as belt clip]]<br />
|}<br />
<br />
The belt clip was made by attaching the battery holder to a PCB and connected using soldering lugs.<br />
<br />
You can see the hacklace on a video on YouTube [http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
==Ordering Information==<br />
In Germany, you can order all needed parts from Reichelt or CSD-Electronics. A list of parts can be found [[Medium:Hacklace_Bauteileliste.pdf|here]].<br />
<br />
=== Kit ===<br />
You can purchase a kit for 10€ - please contact [[Benutzer:Fabster|Fabster]] or [[Benutzer:muzy|muzy]].<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|260px|Parts]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|PCB]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Completed Hacklace]]<br />
|-<br />
|}<br />
<br />
==Credits==<br />
Hacklace was inspired by the "TinyMatrix" project from TigerUp [https://sites.google.com/site/tinymatrix/]. <br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10129Hacklace2013-05-16T17:52:36Z<p>Fabster: /* Hinweis zum Display */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
Mit dem [https://github.com/Hacklace/Animator/wiki/Download Hacklace-Animator] kannst du Animationen erstellen und das EEPROM deines Hacklaces flashen.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Mitgliedsversammlung&diff=10077Mitgliedsversammlung2013-05-08T08:21:31Z<p>Fabster: /* Themen/Anträge */</p>
<hr />
<div>{{EventInfoBox<br />
|name = Mitgliedsversammlung<br />
|status = stable<br />
|image = <br />
|description = Der Verein trifft offizielle™ Entscheidungen.<br />
|author = <br />
|username = <br />
|rhythm = jährlich<br />
|day = TBA<br />
|time = <br />
|preis = <br />
}}<br />
<br />
== Themen/Anträge ==<br />
<br />
=== Unvereinbarkeit mit Rechts ===<br />
<br />
Es steht wohl ausser Frage, dass das RaumZeitLabor mit rechter Politik und Rechtspopulismus, sowie der damit einhergehenden Diskrimierung von Menschengruppen (Rassimus, Sexismus, Homophobie, Antisemitismus, Ableismus, Transphobie, ...) nicht nur nichts zu tun haben will, sondern damit auch nicht vereinbar ist. <br />
<br />
Zwar ist das RZL als Verein unpolitisch, jedoch ist es (hoffentlich) Konsens, dass braunes Gedankengut bei uns keinen Platz und vor allem keine Plattform hat. <br />
<br />
Es ist wichtig, dies auch nach aussen zu kommunizieren, einerseits um zu zeigen, dass wir als Gemeinschaft jeden Menschen, ungeachtet der Abstammung, Geschlecht/Gender, Nationalität, Religion oder körperlich-geistigen Verfassung bei uns willkommen heissen, und andererseits, um denjenigen, die diesen Grundsätzen widersprechen, unmissverständlich klarzumachen, dass im RaumZeitLabor Intoleranz nicht toliert wird.<br />
<br />
Aus diesem Grund sollte der Verein die Unvereinbarkeit mit Rechts erklären, angelehnt an u.a. den [https://www.ccc.de/en/updates/2005/unvereinbarkeitserklaerung CCC] und die [https://wiki.piratenpartei.de/Pirantifa/Unvereinbarkeitserkl%C3%A4rung Piratenpartei]. Dies schliesst ein, dass Menschen und Organisationen, die faschistische Gewalt, Rassimus, oder sonstige Form von Diskriminierung, vertreten oder verharmlosen, der Zugang und die Mitgliedschaft im RaumZeitLabor verwehrt wird.<br />
<br />
* [[Benutzer:Slowpoke|Slowpoke]] ([[Benutzer Diskussion:Slowpoke|Diskussion]]) 18:26, 5. Mai 2013 (CEST)<br />
* [[Benutzer:Lutoma|Lutoma]] ([[Benutzer Diskussion:Lutoma|Diskussion]]) 18:54, 5. Mai 2013 (CEST)<br />
<br />
<br />
=== Politische Neutralität (Gegenantrag zu "Unvereinbarkeit mit Rechts") ===<br />
<br />
Statt bestimmte politische Richtungen auszuschließen (d. h. zu diskriminieren), sollte man besser die politische Neutralität des RaumZeitLabors herausstellen.<br />
<br />
Vorschlag zur Beschlußfassung:<br />
<br />
"Das RaumZeitLabor ist politisch neutral. Es befaßt sich mit technischen und gesellschaftlichen Themen ohne dabei eine konkrete politische Richtung zu vertreten oder zu favorisieren. Die Nutzung der Einrichtungen des RaumZeitLabors zur Verbreitung von politischen Inhalten oder zu anderen politischen Zwecken ist nicht erwünscht."<br />
<br />
Außerdem können wir grundsätzliche Werte des RZL festschreiben.<br />
<br />
Vorschlag zur Beschlußfassung:<br />
<br />
"Das RaumZeitLabor steht für Offenheit, Transparenz, Toleranz und den freien Austausch von Ideen."<br />
<br />
Das ist zwar recht allgemein gehalten und daher sicherlich interpretationsfähig, aber zum Umreißen der grundsätzlichen Richtung durchaus geeignet.</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=10074Hacklace2013-05-07T07:26:21Z<p>Fabster: /* Serielles Interface */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. 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 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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/"<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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).<br />
<br />
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.<br />
<br />
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.<br />
<br />
Mit dem [https://github.com/Hacklace/Animator/wiki/Download Hacklace-Animator] kannst du Animationen erstellen und das EEPROM deines Hacklaces flashen.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
<br />
'''Eine Animation erstellst du am einfachsten mit dem Hacklace-Animator: [https://github.com/Hacklace/Animator/wiki/Download https://github.com/Hacklace/Animator/wiki/Download]'''<br />
<br />
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]]).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|-<br />
|Hacklace Animator<br />
|[https://github.com/Hacklace/Animator/wiki/Download]<br />
|GPL<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz bzw. der Hacklace-Animator unter GPL.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
===Firmware compiliert nicht===<br />
Das kann einige Gründe haben.<br />
<pre><br />
du@deinekiste:~/Hacklace$ make<br />
avr-gcc -g -Wall -Os -mmcu=attiny4313 -DF_CPU=4000000 -c -o Hacklace.o Hacklace.c<br />
Hacklace.c: In function ‘GoToSleep’:<br />
Hacklace.c:241:2: error: ‘GIFR’ undeclared (first use in this function)<br />
Hacklace.c:241:2: note: each undeclared identifier is reported only once for each function it appears in<br />
Hacklace.c:241:13: error: ‘PCIF2’ undeclared (first use in this function)<br />
Hacklace.c:243:14: error: ‘PCIE2’ undeclared (first use in this function)<br />
make: *** [Hacklace.o] Error 1 <br />
</pre><br />
<br />
Sollte oben beschriebener Fehler auftreten hast du noch ein defektes iotn4313.h in deiner AVR Umgebung.<br />
<br />
Das gehört ersetzt. Siehe [[#Software|oben]].<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
Beispiel: theoretische Zeit = 5 ms, gemessene Zeit = 4.65 ms --> Korrekturfaktor = 1.075<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_Kingbright_TC.hex&diff=9094Datei:Hacklace Kingbright TC.hex2013-01-18T18:42:58Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace Kingbright TC.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_Kingbright_TA.hex&diff=9093Datei:Hacklace Kingbright TA.hex2013-01-18T18:42:47Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace Kingbright TA.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_HDSP5403.hex&diff=9092Datei:Hacklace HDSP5403.hex2013-01-18T18:42:33Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace HDSP5403.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=8939Hacklace2013-01-05T19:55:39Z<p>Fabster: /* Format des Konfigurationsfiles */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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, kein Handshake).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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,").<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
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]]).<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
Altern<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=8938Hacklace2013-01-05T19:45:53Z<p>Fabster: /* Probleme & Lösungen */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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, kein Handshake).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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.<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
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]]).<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
Altern<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
=== Zeilenumbrüche im Konfigurationsfile ===<br />
<br />
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.<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=8937Hacklace2013-01-05T19:38:22Z<p>Fabster: /* Format des Konfigurationsfiles */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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, kein Handshake).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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.<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
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]]).<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
Altern<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_Kingbright_TC.hex&diff=8936Datei:Hacklace Kingbright TC.hex2013-01-05T19:37:21Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace Kingbright TC.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_Kingbright_TA.hex&diff=8935Datei:Hacklace Kingbright TA.hex2013-01-05T19:37:07Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace Kingbright TA.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Datei:Hacklace_HDSP5403.hex&diff=8934Datei:Hacklace HDSP5403.hex2013-01-05T19:36:47Z<p>Fabster: Fabster lud eine neue Version von „Datei:Hacklace HDSP5403.hex“ hoch</p>
<hr />
<div></div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=8933Hacklace2013-01-05T17:30:05Z<p>Fabster: /* Serielles Interface */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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, kein Handshake).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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. Als Zeilenumbruch kann entweder <CR> (carriage return = chr(13)) oder <LF> (line feed = chr(10)) verwendet werden. Ein Modus-Byte von 0 zeigt das Ende der Messageliste an.<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
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]]).<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
Altern<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200 Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabsterhttps://wiki.raumzeitlabor.de/index.php?title=Hacklace&diff=8932Hacklace2013-01-05T17:29:47Z<p>Fabster: /* Serielles Interface */</p>
<hr />
<div>{{LanguageBox |msg=This page is available in English. Click [[Hacklace/en|here]] to visit the page.}}<br />
<br />
<br />
{{ProjektInfoBox<br />
|name = Hacklace<br />
|status = stable<br />
|image = Hacklace_schwarz.jpg<br />
|description = Eine Halskette mit 5x7-Dot-Matrix-Led-Display<br />
|author = [[user:fabster|fabster]], [[user:muzy|muzy]]<br />
|username = <br />
|version = Revision B<br />
|update = <br />
|platform = <br />
|license = Creative Commons (siehe unten)<br />
|download = [[Hacklace#Download|Download]]<br />
}}<br />
<br />
Hacklace - A Necklace for Hackers<br />
<br />
* Ein passendes Accessoire für Nerds, Geeks und Hacker? Wir haben es.<br />
* Du suchst nach einem unkonventionellen Geschenk mit individueller Botschaft? Dann ist Hacklace vielleicht die Lösung.<br />
* 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. <br />
<br />
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.<br />
<br />
<br />
==Features==<br />
* Nur 48 mm x 15 mm groß<br />
* Mobiler Betrieb durch Versorgung mit Knopfzelle<br />
* Optisch reizvoll durch perfekt symmetrische Anordnung aller sichtbaren Bauteile<br />
* Durch Ändern des Pin-Mappings an verschiedene Dot-Matrix-Typen anpaßbar<br />
* ASCII-Zeichensatz mit deutschen Umlauten<br />
* Proportional-Font<br />
* Originelle Sonderzeichen und Symbole<br />
* Zahlreiche vorgefertigte Animationen<br />
* Speichern von eigenen Texten und Animationen im EEPROM<br />
* Serielle Schnittstelle (3,3 V oder 5 V) zum einfachen Download eigener Messages<br />
* Texte und Animationen können als Textfile mit jedem beliebigen Editor erstellt werden<br />
* Zwei Scroll-Modi: Vorwärts und bidirektional<br />
* Scrollgeschwindigkeit und Pause einstellbar<br />
* ISP-Anschluß zum Programmieren eigener Firmware<br />
* Auch als universelles serielles Display verwendbar.<br />
<br />
<br />
==Bedienung==<br />
Da das Hacklace nur einen einzigen Knopf besitzt, ist die Bedienung sehr einfach.<br />
<br />
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. <br />
<br />
<br />
==Voraussetzungen / Schwierigkeitsgrad==<br />
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.<br />
<br />
<br />
==Ausrüstung und Werkzeug==<br />
Folgendes wird zum Zusammenbau benötigt:<br />
<br />
* Einfache Lötausrüstung (Lötkolben, Seitenschneider, Pinzette, "Dritte Hand" ...)<br />
* ISP-Programmiergerät für Atmel AVR-Mikrocontroller<br />
* Computer<br />
* Optional: Ausrüstung zur Herstellung einseitiger Platinen<br />
<br />
Alles ist im RaumZeitLabor vorhanden und steht dir zur Verfügung.<br />
<br />
<br />
==Hardware==<br />
<br />
===Platine===<br />
[[Datei:Hacklace_Platine.jpg|thumb|right|220px|Platine, selbstgeätzt und rot lackiert]]<br />
Die Platine wurde einseitig entworfen und das Layout so gestaltet, daß man die Platine leicht selber ätzen kann. <br />
Eine Belichtungsvorlage findet sich unter [[Hacklace#Download|Download]].<br />
<br />
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.<br />
<br />
Für alle, die nicht so gerne selber ätzen, ist eine professionell gefertigte Platine im Rahmen eines [[Hacklace#Bezugsquellen|Bausatzes]] verfügbar.<br />
<br />
===Aufbau===<br />
<br />
====Hinweis zum Display====<br />
Es gibt aufgrund der Hardwareverfügbarkeit 3 verschiedene Displaytypen in den Bausätzen.<br />
Das Display muss je nach Typ anders eingesetzt werden. Dies ist auch ein Konfigurationsparameter in der Firmware.<br />
<br />
# 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.<br />
# TC07/TA07 - Bitte das Display wie gewohnt einsetzen. PIN1 des Prozessors (viereckiges Pad) an PIN 1 des Displays. Je nach Displaytyp (TC vs. TA) muss die passende Firmware genutzt werden.<br />
# LM57 - wie TC07 Display.<br />
<br />
====Anleitung====<br />
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.<br />
[[Datei:Hacklace_Zusammenbau01.jpg|thumb|right|220px|SMD-Widerstände]]<br />
[[Datei:Hacklace_Zusammenbau02.jpg|thumb|right|220px|Widerstand und Kondensator]]<br />
[[Datei:Hacklace_Zusammenbau03.jpg|thumb|right|220px|Abrichten der Prozessorpins]]<br />
<br />
Der Aufbau geschieht wie folgt:<br />
# 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.<br />
# 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.<br />
# Mit dem Kondensator (C1) wird genauso verfahren.<br />
# Wer sich an den weißen Seiten des Displays stört, kann diese z. B. schwarz anmalen (Edding).<br />
# 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). Außerdem empfiehlt es sich, die Pins des Displays mit wenig Lötzinn leicht zu verzinnen.<br />
# 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. Der zugehörige Pin des Displays ist durch eine kleine "1" oder einen Punkt markiert. 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. Auch hier ist darauf zu achten, daß Pin 1 des Prozessors in das quadratische Pad kommt.<br />
# Anschließend werden Prozessor und Display gleichzeitig verlötet. Um eine gute Verbindung beider Bauteile zu erreichen, hilft die Verwendung eines Elektronik-Flußmittels. 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.<br />
# Jetzt können der Taster und die Stiftleisten von der Oberseite her eingesetzt und auf der Lötseite festgelötet werden.<br />
# 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.<br />
# 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.<br />
{| <br />
| [[Datei:Hacklace_Zusammenbau05.jpg|thumb|right|220px|Löten von Prozessor und Display (vorher, nachher)]]<br />
| [[Datei:Hacklace_Zusammenbau07.jpg|thumb|right|300px|Mit Pfostenleisten und Taster]]<br />
| [[Datei:Hacklace_Zusammenbau08.jpg|thumb|right|150px|Fertiges Hacklace mit Kabeln und Knopfzellenhalter]]<br />
|}<br />
<br />
===Flashen===<br />
Zum Flashen der Software benötigt man einen AVR-Programmer (zum Beispiel den [[Usbasp|USBAsp]]), der an der ISP-Schnittstelle angeschlossen wird.<br />
<br />
Die Fuses des ATtiny4313 müssen so eingestellt werden, daß der Controller mit seinem internen RC-Oszillator auf 4 MHz läuft.<br />
Die Fuses für den ATtiny4313 lauten: Low: 0xE2 High: 0xDF Extended: 0xFF<br />
<br />
Fusebits mit avrdude setzen:<br />
avrdude -v -c <PROGRAMMER> -p t4313 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br />
<br />
<PROGRAMMER> bitte durch den benutzten Programmer ersetzen, z.B.: usbasp<br />
<br />
Danach werden das Hex-File mit der Firmware ins Flash und die Default-Konfigurationsdaten ins EEPROM geschrieben.<br />
<br />
Flash und EEPROM mit avrdude programmieren:<br />
avrdude -c usbasp -p t4313 -u -U eeprom:w:Hacklace_Rev_B.eep<br />
avrdude -c usbasp -p t4313 -u -U flash:w:Hacklace_Kingbright_TA.hex<br />
<br />
<br />
==Software==<br />
<br />
=== Firmware compilieren ===<br />
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<br />
"C:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\avr\include\avr".<br />
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.<br />
<br />
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.<br />
<br />
===Displayspeicher===<br />
[[Datei:Hacklace_Display_Schema.png|thumb|right|300px]]<br />
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.<br />
<br />
===Konfiguration===<br />
Ü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, kein Handshake).<br />
<br />
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.<br />
<br />
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.<br />
<br />
===Format des Konfigurationsfiles===<br />
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. Als Zeilenumbruch kann entweder <CR> (carriage return = chr(13)) oder <LF> (line feed = chr(10)) verwendet werden. Ein Modus-Byte von 0 zeigt das Ende der Messageliste an.<br />
<br />
Das Modus-Byte hat folgenden Aufbau:<br />
* Bit 7 gibt an, ob nur vorwärts (= 0) oder vor und zurück (= 1) gescrollt werden soll.<br />
* Bits 6..4 legen die Dauer der Pause nach dem Erreichen des Endes der Message fest (größer = länger)<br />
* Bit 3 gibt an, ob es sich um einen Text (= 0) oder eine Animation (= 1) handelt.<br />
* Bits 2..0 bestimmen die Scroll- bzw. Animationsgeschwindigkeit (größer = schneller)<br />
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.<br />
<br />
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]]).<br />
<br />
Um die Eingabe von Sonderzeichen, Animationen und Bytewerten zu erleichtern, gibt es folgende Escape-Sequenzen.<br />
* Ein vorangestelltes '^' erhöht den Characterwert um 63, so daß die Zeichenfolge '^A' das erste Sonderzeichen (chr(129)), '^B' das zweite Sonderzeichen usw. erzeugt.<br />
* In ähnlicher Weise kann durch eine vorangestellte Tilde '~' eine im Flash gespeicherte Animation ausgewählt werden ('~A' erste Animation, '~B' zweite Animation usw.).<br />
* 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.<br />
Soll in einem Text eines der Escape-Zeichen ('^', '~' oder '$') verwendet werden, so muß man dieses verdoppeln. So erzeugt z. B. '$$' genau 1 Dollarzeicen.<br />
<br />
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).<br />
<br />
Hier nun ein Beispiel für ein Konfigurationsfile.<br />
<br />
<code><br />
$45,Beispieltext<br />
$40, Scrollen in Zeitlupe<br />
$47, und extrem schnell<br />
$74,moderat mit Pause<br />
$84,.bidirektional.<br />
$44,Umlaute äÄöÖüÜß<br />
$24,Ein Herz ^R<br />
$3B,~F<br />
$0C,$FF $55 $2A $55 $2A $55 $2A $55 $2A $55 $2A $FF,<br />
$00,<br />
</code><br />
<br />
Ein Default-Konfigurationsfile, mit dem sich der Ausgangszustand wieder herstellen läßt, befindet sich im Git-Repository [https://github.com/fabster/Hacklace].<br />
<br />
===Animationen erstellen===<br />
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]]).<br />
<br />
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.<br />
<br />
===Hacklace als serielles Display===<br />
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.<br />
<br />
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.<br />
<br />
==Download==<br />
{| class="wikitable" valign = "top"<br />
!Datei<br />
!Format<br />
!Lizenz<br />
|-<br />
|Schaltplan<br />
|[[Medium:Hacklace_Schematic_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bauteileliste<br />
|[[Medium:Hacklace_Bauteileliste.pdf|.pdf]]<br />
|CC0<br />
|-<br />
|Belichtungsvorlage<br />
|[[Medium:Hacklace_PCB_20x_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Bestückungsplan (Vorder- und Rückseite)<br />
|[[Medium:Hacklace_Assembly_Front_Side_Rev_B.pdf|.pdf]], [[Medium:Hacklace_Assembly_Copper_Side_Rev_B.pdf|.pdf]]<br />
|CC-BY-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TA07-11)<br />
|[[Medium:Hacklace_Kingbright_TA.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display Kingbright TC07-11 und LM57 Displays) <br />
|[[Medium:Hacklace_Kingbright_TC.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File zum Flashen des Controllers (Display HDSP-5403)<br />
|[[Medium:Hacklace_HDSP5403.hex|.hex]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Hex-File für das EEPROM<br />
|[[Medium:Hacklace_Rev_B.eep|.eep]]<br />
|CC-BY-NC-ND<br />
|-<br />
|Sourcecode (Github)<br />
|[https://github.com/fabster/Hacklace]<br />
|CC-BY-NC-SA<br />
|}<br />
<br />
Die aufgeführten Dateien stehen unter der jeweils angegebenen Creative-Commons-Lizenz.<br />
<br />
==Bilder==<br />
{| <br />
| [[Datei:Hacklace_Halskette.jpg|thumb|left|300px|Ausführung als Halskette]]<br />
| [[Datei:Hacklace_Skull_red.jpg|thumb|left|250px|Ausführung als Gürtelclip]]<br />
|}<br />
Bei dem Gürtelclip wurde der Knopfzellenhalter mit einem Stück Platine und zwei Lötnägeln auf der Rückseite angebracht.<br />
<br />
Wer das Hacklace in Aktion sehen möchte, findet ein cooles Video auf YouTube[http://www.youtube.com/watch?v=6ASvxaGiPwA].<br />
<br />
<br />
==Bezugsquellen==<br />
Die benötigten Bauteile können bei Reichelt bzw. CSD-Electronics bestellt werden. Ein Auflistung mit Bestellnummer findet sich [[Medium:Hacklace_Bauteileliste.pdf|hier]].<br />
Altern<br />
<br />
=== Bausatz ===<br />
Als bequeme Alternative bieten wir einen Bausatz mit allen Teilen und einer professionell gefertigten Platine an. Der Bausatz kostet 10,- Euro und kann über [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] erworben werden. Gerne helfen wir oder andere erfahrene Laboranten beim Löten, Zusammenbauen, Flashen und Programmieren.<br />
<br />
{| <br />
| [[Datei:Hacklace_Einzelteile.jpg|thumb|right|240px|Einzelteile]]<br />
| [[Datei:Hacklace_Platine_schwarz.jpg|thumb|right|120px|Professionell gefertigte Platine]]<br />
|-<br />
| [[Datei:Hacklace_Bausatz.jpg|thumb|right|240px|Bausatz]]<br />
| [[Datei:Hacklace_schwarz.jpg|thumb|right|240px|Fertig aufgebautes Hacklace]]<br />
|-<br />
|}<br />
<br />
=== Batteriehalter ===<br />
Um das Hacklace am Gürtel zu tragen, bieten wir für 5,- € einen Batteriehalter inklusive drei Alkaline-Batterien an. Dieser lässt sich nicht nur bequem tragen, sondern erhöht auch die Laufzeit und Helligkeit deines Hacklaces. Erhältlich bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]].<br />
{| <br />
| [[Datei:Hacklace_Battery_Pack_vorne.jpg|thumb|right|160px|Batteriehalter von vorne]]<br />
| [[Datei:Hacklace_Battery_Pack_hinten.jpg|thumb|right|140px|Versorgung mit 4,5 Volt über 3 Stück AAA-Zellen]]<br />
| [[Datei:Hacklace_Battery_Pack_schräg.jpg|thumb|right|120px|Der Abstand der Anschlußdrähte ist auf das Hacklace abgestimmt.]]<br />
| [[Datei:Hacklace_Battery_Pack_Gürtel.jpg|thumb|right|185px|Bequem am Gürtel zu tragen]]<br />
|}<br />
<br />
=== USB auf TTL Adapter ===<br />
Das Hacklace bietet eine serielle Schnittstelle zum aufspielen eigener Animationen. Einen USB auf TTL Adapter kannst du für 5€ bei [[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]] kaufen. Dieser Adapter unterstützt sowohl 3,3V als auch 5V und ist somit universell einsetzbar: z.B. um auf die Rescue-Konsole von Routern zu kommen.<br />
<br />
<br />
== Geld verdienen mit dem Hacklace ==<br />
Dein Hackerspace ist begeistert vom Hacklace? Du möchtest einen Hacklace-Workshop in deinem Hackerspace anbieten? Bestelle bei uns ([[Benutzer:Fabster|Fabster]] oder [[Benutzer:muzy|muzy]]) einfach die benötigte Anzahl von Bausätzen.<br />
Damit deinem Hackerspace das ganze auch zugute kommt, gibt es einen Rabatt bei größeren Mengen.<br />
<br />
{| class="wikitable" valign = "top"<br />
!Anzahl<br />
!Preis<br />
|-<br />
|align="right"| 0 - 9 Stück <br />
|10,00 pro Bausatz<br />
|-<br />
|align="right"| 10 - 19 Stück<br />
|9,00 pro Bausatz<br />
|-<br />
|align="right"| 20 - 49 Stück <br />
|8,50 pro Bausatz<br />
|-<br />
|align="right"| ab 50 Stück <br />
|8,00 pro Bausatz<br />
|}<br />
<br />
== Probleme & Lösungen ==<br />
<br />
=== Serielles Interface ===<br />
<br />
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.<br />
<br />
Wie groß die Abweichung des Prozessortakts vom Nominalwert (4 MHz) ist, läßt sich ermitteln, indem man den Spaltentakt der Anzeige mißt. Dazu wird mit einem Oszilloskop oder einem Frequenzzähler der Abstand der Pulse (steigende Flanke zu steigender Flanke) an einem der Column-Anschlüsse (z. B. am ISP-Anschluß zwischen Pin 1 = column 4 und Pin 6 = GND) gemessen. Theoretisch sollte alle 5 Millisekunden (= 200Hz) ein Puls erzeugt werden (Bei einer älteren Software-Version alle 6 Millisekunden). Wenn man die theoretische Zeit durch die gemessene Zeit (nicht Frequenz!) dividiert, erhält man einen Korrekturfaktor.<br />
<br />
Diesen Korrekturfaktor kann man als SER_CLK_CORRECTION im File "config.h" eintragen. 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 funktioniert.<br />
<br />
Wer über einen Programmer verfügt, mit dem sich der RC-Oszillator kalibrieren läßt, kann alternativ auch diesen Weg beschreiten und das OSCAL-Register mit einem passenden Wert laden. Den Korrekturfaktor SER_CLK_CORRECTION setzt man in diesem Fall auf 1.000.<br />
<br />
=== Elektrostatische Ladungen ===<br />
<br />
[[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]]<br />
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.<br />
<br />
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.<br />
<br />
<br />
== Fragen, Ideen etc. ==<br />
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.<br />
<br />
<br />
==Credits==<br />
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.<br />
<br />
<br />
[[Kategorie:Projekt]]</div>Fabster