Archive: Month 5, Year 2013

16 LEDs mit einem einzigen Output-Pin ansprechen

31.05.2013 yahe arduino hardware legacy

Endlich sind die ersten Vorbereitungen für das Auslesen einer echten Computertastatur abgeschlossen. Das Problem, das ich nun gelöst habe, ist, dass der Controller und die Tastenmatrix solch einer Tastatur über sehr viele Anschlüsse verfügen, sogar über so viele, dass sie den Rahmen dessen sprengen, was der Arduino zur Verfügung stellt. Um trotzdem alles anschließen zu können, habe ich mir eine Kleinigkeit überlegt. Mit Hilfe eines Demultiplexers bin ich in der Lage, den Input eines Pins auf mehrere Ausgänge zu verteilen. Bei einem NXP 74HCT4051 kann ich mit Hilfe von 3 Steuerleitungen ganze 8 LEDs ansprechen. Die Anzahl der Leitungen hat sich also schon mal um 5 reduziert.

Das war mir jedoch noch nicht genug. Deshalb habe ich zusätzlich einen Synchronzähler verwendet. Solch ein Binärzähler wie der NXP 74HCT193 hat im Grunde einen Eingang, über den man ihm einen Takt geben kann. Bei jedem Takt zählt er einen internen Counter um eins höher oder niedriger. Die aktuelle Zahl gibt er binär aus, im Falle des 74HCT193 mit vier Stellen. Die niedrigsten drei Bit kann man nun verwenden, um den Demultiplexer zu steuern. Doch ein Bit des Binärzählers bleibt noch übrig. Dank dieses höchsten Bits kann man nun einen zweiten Demultiplexer nehmen und mit dem Bit entweder den ersten Demultiplexer aktivieren oder den zweiten. Auf diese Weise kann man mit einem einzigen Vier-Bit-Zähler und zwei Demultiplexern dank nur 1 Taktleitung ganze 16 LEDs ansteuern.

16 LEDs dank ein paar ICs

Das Anschalten/Abschalten der ersten Demultiplexers erreichen wir, indem wir den Enable-Input (E) des Demultiplexers direkt mit dem höchsten Bit des Zählers verbinden. Ist das Bit auf 0 gesetzt, ist der Demultiplexer aktiv, ist das Bit auf 1 gesetzt, ist der Demultiplexer deaktiviert. Zum Anschalten/Abschalten des zweiten Multiplexers müssen wir jedoch ein wenig tricksen. Wir verwenden ein NXP 74HCT02 NOR-Gatter (oder wahlweise ein NXP 74HCT00 NAND-Gatter). Einen Input des NOR-Gatters verbinden mir Ground, den anderen Input hingegen mit dem höchsten Bit des Zählers. Erst den Output-Pin des NOT-Gatters verbinden wir mit dem Enable-Input (E) des zweiten Demultiplexers. Ist das Bit auf 0 gesetzt, liefert das NOR-Gatter den Output 1 und der zweite Multiplexer ist deaktiviert, ist das Bit auf 1 gesetzt, liefert das NOR-Gatter den Output 0 und der zweite Multiplexer ist aktiv.

Alle ICs in einer Reihe

Bei Vine habe ich mal ein ultrakurzes Video hochgeladen, bei dem einfach durch die einzelnen LEDs durchgeschaltet wird.

Als nächstes heißt es nun, Anschlüsse an die Tastaturmatrix und an den Controller zu basteln. Den notwendigen Kleber habe ich inzwischen erhalten. Ich werde zwei verschiedene Leitkleber ausprobieren, zum einen Polytec PU 1000 aus Deutschland (Kostenpunkt ca. 70€ inkl. MwSt und Versand) und zum anderen Wire Glue aus den USA (Kostenpunkt ca. 15€ inkl. MwSt und Versand).


Erster Blick in die Cherry G83-6105 Tastatur

25.05.2013 yahe hardware legacy

Die Tastatur, in die ich letztens geguckt hatte, war nur ein Bauernopfer, um mich an den Anblick einer Tastatur zu gewöhnen. Für meine calc.pw-Tastatur möchte ich eine Basis verwenden, die doch etwas weiter verbreitet ist. Herausgekommen bin ich bei der Cherry G83-6105. Ich mag die Tastaturen von Cherry generell sehr gern, da sie qualitativ hochwertiger sind.

Das Öffnen gestaltete sich ein bisschen schwierig. Cherry verwendet nicht nur Torx-Schrauben, sondern hat die Tastatur auch noch mit Laschen gegen das Öffnen durch fremde Hände gesichert, wobei sich eine davon unter dem Produktaufkleber befindet.

Innenleben der Cherry G83-6105 Innenleben der Cherry G83-6105 Innenleben der Cherry G83-6105

Die höhere Qualität macht sich bemerkbar. Der Controller ist kleiner, statt einzelner Noppen für die Tasten findet sich eine vollständige Noppenmatte (die im Gegensatz zu einzelnen Noppen nicht verrutschen kann) und auch generell macht die Tastatur einen wertigeren Eindruck (z.B. besitzt das USB-Kabel eine Steckverbindung und ist nicht einfach an die Platine angelötet).

Die nächsten Schritte sehen nun wie folgt aus: Zuerst einmal werde ich die aufgedruckte Matrix dekodieren, um zu wissen, welche Pins geschaltet sein müssen, um eine spezifische Taste zu erkennen. Danach werde ich den Arduino mit dem Controller der Tastatur sprechen lassen. Das Anlöten von Kontakten sollte dort einfacher sein als bei der Tastaturmatrix. Mit dieser Konstruktion sollte es dann möglich sein, dass der Arduino als Tastatur mit einem angeschlossenen Computer sprechen kann. Dadurch kann man für dieses Projekt auch den Arduino Uno verwenden. Abschließend hoffe ich dann, einen Weg zu finden, die Tastaturmatrix mit dem Arduino zu verbinden.


Reverse-Engineering einer Computertastatur

23.05.2013 yahe hardware legacy

Nachdem ich gestern calc.pw vorgestellt habe, möchte ich euch gern einweihen, wie es mit dem Projekt langfristig weitergehen soll. Ich möchte, dass calc.pw Bestandteil einer normalen Computertastatur wird. Um erste Erfahrungen zu sammeln, habe ich damit begonnen, eine alte Computertastatur auseinander gebaut, um mir anzusehen, wie es da drin überhaupt aussieht.

Komponenten einer Computertastatur Komponenten einer Computertastatur

Darin gefunden habe ich zum einen die Tastenmechanik (für uns erst einmal uninteressant), eine Tastenmatrix und einen kleinen Controller mit Kontaktflächen. Die letzten beiden sind das wirklich interessante. Die Tastenmatrix besteht aus 3 Lagen Plastik: eine Lage für die Erdung (GND), eine Zwischenschicht (damit die Leiterbahnen sich nicht berühren und Kurzschlüsse verursachen). sowie eine Lage für den Stromanschluss (VCC). Nur an den Stellen, an denen sich Tasten befinden, hat die Zwischenschicht eine Öffnung. Drückt man an dieser Stelle eine Taste, werden die GND-Matte und die VCC-Matte an dieser Stelle aneinander gedrückt. Schon fließt Strom, was vom Controller ausgewertet werden kann.

ein einzelner Tastendruck ein einzelner Tastendruck

Dadurch, dass es nicht nur eine GND-Leiterbahn und eine VCC-Leiterbahn gibt, sondern mehrere, kann der Tastaturcontroller jede einzelne Taste auf ihren Status hin abprüfen. So ergibt sich eine einfache Matrix, die z.B. sagt "Ist GND-Leitung X aktiv und ist VCC-Leitung Y aktiv und fließt Strom, dann handelt es sich um die A-Taste". Das ganze kann man auch mit einfachen Drähten simulieren.

Tastendruck am Controller simulieren

So weit, so einfach. Würde man also einen eigenen Controller entwickeln wollen, müsste man sich angucken, welche Leiterkombination auf der Tastenmatrix welche Taste darstellt. Anschließend würde man einfach durch alle Leiterkombinationen durchgehen und prüfen, ob tatsächlich Strom fließt. Leider gibt es an einer ganz anderen Stelle ein Problem. Denn irgendwie muss ich die Tastaturmatrix mit meinem Microcontroller verbinden, um sie ansprechen zu können. Mein Versuch, einfach Kabel anzulöten, schlug leider gründlich fehl. Dadurch, dass es sich um einfaches Plastik handelt, schmilzt es unter der Hitze einfach und zerstört dabei die aufgedruckte Leiterbahn.

geschmolzene Leiterbahn

Aus diesem Grund habe ich mich auf die Suche nach Alternativen gemacht. Gefunden habe ich elektrisch leitende Klebstoffe, auch bekannt als Leitkleber. Darüber hinaus bin ich auf das Produkt Polytec PU 1000 aufmerksam geworden. Dabei handelt es sich um einen Einkomponentenklebstoff auf Polyurethan-Basis, der bei Zimmertemperatur aushärtet. Ich habe jetzt einfach mal beim Hersteller angefragt, ob das Produkt mein Problem lösen könnte und wo ich das Zeug herkriege.


calc.pw: Der Open-Source Hardware-Passwortberechner

22.05.2013 yahe arduino calcpw code hardware legacy security

Es ist vollbracht! In den letzten Wochen und Monaten habe ich einige Zeit mit der Arduino-Plattform verbracht und mich Stück für Stück in unterschiedliche Themenbereiche eingearbeitet. Ziel war es, calc.pw zu entwickeln.

calc.pw Aufbauschema

calc.pw ist ein Passwortberechner. Man gibt ein Masterpasswort ein und kann mit diesem und einer dienstabhängigen Information ein Passwort für diesen Dienst erzeugen. Das gleiche Masterpasswort kombiniert mit der gleichen dienstabhängigen Information führt wieder zum gleichen Passwort. Damit entfällt die schwierige Aufgabe, sich kryptische Passworte merken zu müssen.

calc.pw Verwendung calc.pw Verwendung calc.pw Verwendung calc.pw Verwendung

Im Gegensatz zu Passworttresoren bietet calc.pw den Vorteil, dass das Masterpasswort ausschließlich in einer externen Hardware vorgehalten wird und damit nicht durch Schadsoftware auf dem PC abgefangen werden kann. Zudem besteht nicht das Risiko, sämtliche Passwörter zu verlieren, weil die Datenbank mit den Passwörtern abhanden kommt. Das einzige, was man sich merken muss, ist das Masterpasswort. Die dienstabhängigen Informationen kann man einfach direkt aus dem Namen des jeweiligen Dienstes ableiten.

Um die Verwendung von calc.pw möglichst einfach zu machen, wird es zwischen Tastatur und Computer gesteckt. Während der normalen Verwendung leitet calc.pw die Tastenanschläge an den Computer durch. Erst durch Drücken der Tastenkombination STRG+ESC wechselt man in den Modus zur Passwortberechnung. Nach Eingabe der Information und Drücken von ENTER oder STRG+ESC wird das Passwort erzeugt und man gelangt automatisch wieder in den Passthrough-Modus, in dem die Tastenanschläge durchgeleitet werden.

calc.pw Passthrough-Modus


Arduino: Spaß mit Sensoren

08.05.2013 yahe arduino code hardware legacy

Nachdem ich ganz am Anfang meiner Arduino-Reise mal ein paar lustige Experimente gemacht hatte, habe ich mich in letzter Zeit sehr auf mein ernstes Projekt konzentriert. Das habe ich heute mal ein wenig aufgelockert. Im Zuge meines Besuches bei der AfRA Berlin hatten wir diskutiert, wie man die Anwesenheit von Personen in einem Raum ermitteln könne. Hierbei sind wir einige theoretische Möglichkeiten durchgegangen. Die Idee war, mit einem Bewegungssensor zu ermitteln, ob jemand im Raum ist und mit einem Ultraschallsensor zu messen, wo er sich ungefähr befindet. Diese wollte ich nun einmal gerne testen.

Arduino-Alarmanlage und -Ultraschall-Theremin

Ausgestattet mit besagtem Bewegungsmelder, Ultraschallsensor und einem Piezoelement war ich in der Lage, eine relativ simple Alarmanlage zu basteln. Diese prüft per Bewegungssensor, ob sich etwas in der Nähe bewegt und misst anschließend mit dem Ultraschallsensor, ob sich die Entfernung des Gegenstandes geändert hat. Falls ja, wird über das Piezo-Element ein Alarmton ausgegeben.

Der ein oder andere wird sich evtl. noch an das Lichttheremin erinnern. Dieses verwendete einen Photoresistor und ein Piezoelement, um anhand der Helligkeit einen Ton wiederzugeben. Dieses konnte man mit der Hand steuern. Je näher sie am Photoresistor war, umso dunkler wurde es und desto tiefer wurde der Ton. Wurde die Hand weggenommen, wurde es heller und der Ton somit höher. Hierfür benötigte man jedoch eine eine möglichst gleichmäßige Lichtquelle von oben. Dank des Ultraschallsensors können wir das Theremin nochmal ohne Lichtquelle als Ultraschall-Theremin UltraTheremine implementieren.


Search

Links

RSS feed

Categories

administration (40)
arduino (12)
calcpw (2)
code (33)
hardware (16)
java (2)
legacy (113)
linux (27)
publicity (6)
review (2)
security (58)
thoughts (21)
windows (17)
wordpress (19)