HIDeKey

Als Abschlussprojekt und Vorbereitung auf meine Betreuertätigkeit für die Mikrocontroller-AG des MMI’s habe ich mich näher mit dem USB-Bus und dem darauf aufbauenden HID-Protokoll befasst.

HIDeKey ist ein kleiner USB-Stick, der als HID-Tastatur vom Rechner erkannt wird und beliebge Zeichenketten und Tastenkombinationen an den Host-Rechner senden kann.

Mein Ziel war es ein kleinen Hardware-Dongle zu entwickeln welcher Passwörter, TANs und Onetime-Tokens direkt an jeden beliebigen Rechner senden kann. Meine Passwörter sind im verschlüsselt EEPROM des Mikrocontrollers gespeichert. Beim Drücken, des Tasters auf dem Stick, wird das Passwort eingegeben.

Als Hardware nutze ich die zuvor vorgestellten USBasp Programmieradapter aus China, deren Firmware ich durch eine eigene ersetzt habe. Mit einem zusätzlichen Taster lässt sich so über ein kleines Menü zwischen 10 User-Passwort-Kombination wählen.

Neue Passwörter können mit einem kleinen Konsolen-Programm direkt über den Rechner einprogrammiert werden.

HIDeKey soll auch zur Generierung von One Time Passwords (OTP) genutzt werden können. Da er sich wie ein gewöhnliche USB-Tastatur verhält, kann er auch unterwegs am Schlüsselbund in Internet-Cafes und Rechner-Pools genutzt werden.

Sourcecode & Schaltpläne etc. gibt es wieder per git. In meinem Wiki ist auch noch etwas Dokumentation gesammelt.

HIDeKey ist wie die meisten meiner Prrojekte als OpenSource veröffentlicht. Ich freue mich über jede Verbesserung, Erweiterung oder andere Beiträge zu diesem Projekt 🙂

Das 3€ ATmega Developement Board

Für gerade mal 2,95€ bieten chinesische Händler einen Klon des In-System-Programmers USBasp von Thomas Fischl auf eBay an. Das Board wurde ursprünglich zum Programmieren von AVR Mikrocontrollern entwickelt und basiert selbst auf einem ATmega8 Controller. Das Board bietet folgende Features, die auch für andere Zwecke genutzt werden können:

  • Software USB mit V-USB
  • Stromversorgung über Rechner
  • wahlweise 5V oder 3.3V
  • 2 LEDs
  • 1. Jumper
  • 6 IO-Pins (inkl. UART)

Dieses Angebot ist preislich unschlagbar. Es gibt kein anderes megaAVR Board, das inkl. Versandkosten für unter 3 € zu haben ist. Auch ein Selbstbau mit den günstigsten Bauteilen ist bei kleineren Stückzahlen (< 50) weit teurer. Fertige Leerplatinen sind aber auch über eBay verfügbar.

Der günstige Preis hat aber auch einen Nachteil: Mitunter muss man einen Monat warten, bis der Stick im eigenen Briefkasten liegt. Dafür gibt es i.d.R. keine Probleme beim Zoll 😉

Das 3€ ATmega Developement Board weiterlesen

RWTH uC Tetris

Neben der Informatik Vorlesung besuchte ich dieses Semester die Mikrocontroller AG. In dieser freiwilligen Veranstaltung lernten wir den aus der Vorlesung bekannten Mikrocontroller, ATMega zu benutzen.

Zusammen mit meinen Gruppenmitgliedern Annika, Maiwand & Christian bauten wir ein 8×16 LED-Dot Matrix Display auf dem wir Tetris spielen konnten:

RWTH uC Tetris weiterlesen

transcode

Ich sitze im Zug nach Hause. Komme von der letzten Vorlesung des 2. Semesters: Informatik. Eigentlich bin ich auf dem Weg in die Semester-„Ferien“, ständen da nicht für den nächsten Monat noch 4 Klausuren in meinem Kalender 😉

Informatik, Grundlagen des Digitalrechners. Klingt eigentlich recht trocken. Trotzdem ist es klar mein Favorit unter den Fächern dieses Semesters.
Als Ergänzung zur Vorlesung richtete unser Professor einen kleinen Wettbewerb aus.
Mein Beitrag zum Students Englightment Award ist ein Compiler Frontend für den GNU Compiler der Atmel AVRs.

Teil der Vorlesung war die Einführung des Mikrocontrollers ATMega8 von Atmel und dessen Programmierung mit Assembler. Dabei lernten wir zuerst die Schaltungstechnischen Grundlagen und die Minimierung von Schaltnetzen. Anschließend sind wir auf den Aufbau der Zentralen Recheneinheit eingegangen (Steuerwerk, ALU etc..).

transcode kompiliert/assembliert ANSI C und Assembler in Maschinencode und umgekehrt. Dabei wird mit Hilfe von Debugging Informationen ein Bezug zwischen Zeilen im C-Code und den Mnemonics hergestellt. Durch Auswählen von Zeilen werden Bezüge direkt durch Hervorhebungen dargestellt. Für die Darstellung des Maschinencodes lässt sich zwischen binär, dezimal & hexadezimaler Form wählen.

transcode weiterlesen

TetraBot, die Erste

Nun bisher habe ich euch noch nicht viel über mein derzeitiges Projekt verraten. Es handelt sich um einen ca. 0,8 kg schweren Roboter, der vier Modellbauservos als Antrieb nutzt. Immer nur 3 seiner 4 Räder werden gleichzeitig für Antrieb genutzt, das vierte Rad ist Reserve und wird später eventuell für die Radarnavigation benutzt.

Seine gleichmäßige, geometrische Form, die einem Tetraeder ähnelt, gab ihm den Namen Tetrabot.

Auch die Elektronik soll redundant ausgelegt werden. Jede seiner vier “Tentakeln” wird durch einen Atmel AVR Mikrocontroller gesteuert. Zusätzlich bekommt jedes Bein noch eine spezielle Aufgabe:

  1. Kommunikation
  2. Navigation
  3. Stromversorgung
  4. Sensorik

Ein Bein besteht aus:

  • 2 AAA Ni-MH Akkus
  • Atmel AVR ATMega Mikrocontroller
  • Taster
  • LED’s
  • Umgebungslichtsensor
  • Servo + Omniwheel
  • Gabellichtschranke
  • Ultraschall Sensor

Hinzu kommen für die einzelnen Aufgabenbereiche individuelle Elemente:

  • IR Sender + Empfänger
  • Bluetooth
  • Temperatursensor
  • Mikrofon

Untereinander sollen die Beine über den I²C Bus verbunden werden und sich so im “multiple master” Modus gleichberechtigt austauschen.

Fast ein halbes Jahr ist jetzt seit meinen ersten Gedanken vergangen. Mittlerweile ist die Planung fast abgeschlossen.

Das Grundgerüst + Akkus und Antrieb des Roboters sind schon fertig. Trotzdem liegt noch viel Arbeit vor mir ;). Ich rechne erst nach meinem Abitur mit der Fertigstellung… Hoffentlich habe ich während meines Zivildienst dann mehr Zeit.

Hier meine ersten Ergebnisse:

Das war es mal fürs erste… Die entgültige Form und Funktionweise des Roboters behalte ich noch ein paar Monate für mich. Es jetzt zu beschreiben wäre sinnlos. Bilder sagen ja sowieso mehr als 1000 Worte…