LaborTageBadge2013

Aus LaborWiki
Version vom 19. Oktober 2013, 19:17 Uhr von Suschman (Diskussion | Beiträge) (initial copy and edit)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
           
LaborTageBadge2013

Release status: Beta [box doku]

220px
Description Badge der Labortage 2013
Author(s)  Suschman, bg
Last Version  0.9
Platform  AVR (ATtiny85)
License  GPL
Download  Software: GIT

Hardware: SVN

"Beta" is not in the list (experimental, beta, stable, obsolete, unknown) of allowed values for the "Pr status" property.




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

Badge2011Schematic.png Badge2011Silk.png Badge2011TopRender.jpg Labtagebadge3d.png

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 SMD 0805 2,2 kOhm SMD-0805 2,2K
R2-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

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.