LaborTageBadge2013
LaborTageBadge2013 Release status: Beta [box doku] | |
---|---|
Description | Badge der Labortage 2013 |
Author(s) | Suschman, bg |
Last Version | 0.9 |
Platform | AVR (ATtiny85) |
License | GPL |
Download | Software: GIT Hardware: SVN |
„Beta“ befindet sich nicht in der Liste (experimental, beta, stable, obsolete, unknown) zulässiger Werte für das Attribut „Pr status“.
About
Das "Ticket" der Labortage 2013 ist dieses mal ein HOTP Password Generator für Zwei-Faktor Authentifizierung nach RFC4226, der auch als kleines USB-AVR Devkit herhalten kann. Eventuell später weitere Firmware mit anderen Funktionen :).
Genießt das Logo der Labortage 2013 auf der einen Seite, und bestückt euch euren eigenen HOTP Generator auf der anderen.
Funktion
Der AVR kommuniziert mit dem PC über USB mit Hilfe der vUSB library. Er ist mit dem Micronucleus USB Bootloader vorprogrammiert. Nach der Initialisierung mit einem Seed und einem Counter, generiert er bei jedem Tastendruck ein OTP passwort, was er als USB-Tastatur direkt eingibt.
Schaltung
Platine
Die Platine ist zweilagig mit Lötstoplack, Bestückungsdruck und HAL-Zinn. Auf der einen Seite befindet sich die Schaltung, auf der anderen das Logo der Labortage. Die Platine wurde mit freundlicher Unterstützung von Basista Leiterplatten gefertigt.
Stückliste
Name | Part | Reichelt |
C1 | SMD 0805 100nF | X7R-G0805 100N |
R1-R2 | SMD 0805 2,2 kOhm | SMD-0805 2,2K |
R3 | SMD 0805 68 Ohm | SMD-0805 68 |
AVR | ATtiny85 SO8 | ATTINY 85-20SU |
D1,D2 | MiniMelf 3,6V Zenerdioden | Z3,6V SMD |
USB | USB A Buchse | USB A |
SW | Kurzhubtaster SMD | TASTER 9314 |
R4,R5,R6,LED1 und der 5-Polige Stecker sind Optional, wenn man mit dem Board noch anderes basteln möchte :).
Aufbau
Der Aufbau erfordert durch die relativ dichte Bestückung in SMD und mit 0805 Bauteilen etwas Erfahrung im Löten von SMD. Wenn ihr es euch nicht zutraut, sucht euch einen Bastler der für etwas Mate Hand anlegt ;).
Bestückt wird zuerst C1, R1, R2, R3. Dann die beiden Dioden D1 und D2, dabei auf die Polarität achten (Der (blaue) Strick muss bei beiden zur mitte der Platine Zeigen.
todo ------
Nun die LED, deren abgeschrägte Kante auf Pad1 richtung Aussenkante-Stitleiste zeigt. Der AVR hat einen Punkt zur Markierung der mit dem Bestückungsdruck übereinstimmen muss. Zum Schluss kommen der Taster und die Mini USB Buchse. Diese deren Masseanschlüsse festbraten, und dann vorsichtig mit minimal Lötzinn die eigentlichen Pins verlöten. Die Stiftleiste wird nicht bestückt, ausser ihr last die LED weg und möchtet eine andere abgesetzt anschliessen, z.B den Diodermod.
Arbeitet sorgfältig und macht immer mal wieder eine Sichtprüfung auf Kurzschlüsse und schlechte Lötstellen.
Software
Der AVR ist im Bauteilesatz der Labortage vorprogrammiert, das Binary für den PC muss unter Linux noch mit libusb übersetzt werden. Für Windows kann es prinzipiell auch übersetzt werden, dies ist aber nicht getestet.
Bauen für Linux
Debian/Ubuntu wird angenommen:
sudo aptitude install build-essential git libusb-dev git clone http://www.das-labor.org/usergit/labortage2011badge/ cd ./labortage2011badge/commandline make
./badge-tool usage: ./badge-tool [<option>] <command> <parameter string> where <option> is one of the following: -p --pad[=<pad value>] ............................ pad writing data with <pad value> (default 0) to specified length -f --file <name> .................................. use file <name> for reading or writing data --i-am-sure ....................................... do not ask safety question -l --loop <value> ................................. execute action <value> times <command> is one of the following -s --set-rgb <red>:<green>:<blue> ................. set color -g --get-rgb ...................................... read color from device and print -j --fade-rgb <rd>:<gd>:<bd>:<cnt> ................ change color by <rd>, <rg> and<cnt> times (all 8ms) -r --read-mem <addr>:<length> ..................... read RAM -w --write-mem <addr>:<length>[:data] ............. write RAM -z --read-flash <addr>:<length> ................... read flash -q --reset[=<delay>] .............................. reset the controller with delay in range 0..9 -b --read-button .................................. read status of button -k --wait-for-button[=(on|off)] ................... wait for button press (default: on) -t --read-temperature ............................. read temperature sensor and output raw value Please note: If you use optional parameters you have to use two different ways to specify the parameter, depending on if you use short or long options. Short options: You have to put the parameter directly behind the option letter. Exp: -koff Long options: You have to seperate the option from the parameter with '='. Exp: --pad=0xAA
Wenn die LED zu dunkel ist: der Parameter für -s ist 16 Bit Dezimal, also bis 65535.
Wenn noch jemand einen Bausatz hat und keinen programmierten Prozessor, der melde sich bei Suschman, ich schicke ihn dann zu.
Funktionen
Helligkeitswerte sind 16-Bit lang, d.h. maximale Helligkeit entspricht 65535 oder 0xffff. Bei sehr niedrigen Werten, kann es jedoch sein, dass das Tastverhältnis so ungünstig ist, dass ein Flackern wahrgenommen werden kann.
Set Color
-s --set-rgb <red>:<green>:<blue>
Setzt die Farbe auf die RGB-Werte <red>:<green>:<blue>
Fade
-j --fade-rgb <rd>:<gd>:<bd>:<cnt>
Das Badge kann selbstständig linear (ohne Gammakorrektur) faden. Die ersten drei Parameter geben den Wert an, um den die Farbe alle 8ms (wirklich 8ms?) geändert wird. Der vierte Parameter gibt an wie viele Zyklen gemacht werden, bis das Faden aufhört. Gefadet werden kann in beide Richtungen, um den Farbwert zu verringern muss die 16-Bit 2-er-Komplement Darstellung angegeben werden (also 0xffff für -1 0xfffe für -2 ... 0x8000 für -32768).
Berechtigungen
Wenn sich das Programm nur als root nutzen lässt, kann dass an einer fehlenden udev-rule liegen. Abhilfe kann eine Regel wie die folgende schaffen:
BUS=="usb",OWNER="root",GROUP="dialout"
In der Datei /etc/udev/rules.d/20-usb.rules . Euer user sollte dann natürlich in der Gruppe dialout sein. Ihr könnt natürlich auch eine beliebige andere Gruppe oder Eigentümer wählen.
Zu beachten ist, dass bei dem obigen Beispiel ALLE USB Geräte unter dem Zugriff der entsprechenden Gruppe und Eigentümer steht. Alternativ kann per
SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", GROUP="user"
nur der Zugriff auf das Labor-Badge der Gruppe erlaubt werden. Ach ja, und wer will, kann die Zeile mit einem freundlichen
RUN+="...../labortage2011badge/commandline/badge-tool -s 65535:32535:0"
beenden (... mit dem korrekten Pfad ersetzen) und kann damit die initiale Farbe des badges steuern.