Neue Schriftart, neue Logos: 5blocks

Vor 5 Jahren musste schnell ein Logo her - nach ein bisschen Recherche entschied ich mich dafür, eine eher verspielte, "gekritzelt" wirkende Schriftart namens "Pigae" zu verwenden - das WeizenSpr.eu Logo war geboren!

WeizenSpr.eu Logo seit 5 Jahren

WeizenSpr.eu Logo seit 5 Jahren

In den letzten Tagen kam mir die Idee, für meine Webseiten einheitliche Logos einzuführen, um die Zusammengehörigkeit der Projekte zu unterstreichen. Um den ganzen eine eigene Note zu verpassen, wollte ich die Schriftart jedoch selbst gestalten. Sie sollte einer klaren Symmetrie unterliegen und leicht reproduzierbar sein - mitunter sogar händisch. Das Ergebnis: 5blocks.

5blocks Font

5blocks Font

Das Grundprinzip ist relativ einfach: Jeder Buchstabe bestehlt in der Regel aus einer 5x5 großen Box aus Pixeln. Nach unten ausbrechende Buchstaben (f, g, j, p, q), nach oben ausbrechende Buchstaben (b, d, f, h, i, j, k, l, t) und seitlich ausbrechende Buchstaben (m, w) haben dafür nochmal jeweils zwei angrenzende Pixel Platz. Nach Möglichkeit verlaufen Linien über die gesamte Breite der Box. Schräge Linien bestehen aus 1,5 Pixel hohen Elementen. Voila!

Da sich das ganze relativ einfach als Vektorgrafik realisieren lässt, brauche ich jedes Logo nur noch einmal zu erstellen und kann diese dann beliebig skalieren. Ich finde, meine Logos sahen noch nie so gut aus. :D

5blocks Logos

5blocks Logos

5blocks Logos

5blocks Logos

Eine Besonderheit in den Logos ist der Punkt. Meine Projektnamen basieren auf den Domainnamen des jeweiligen Projektes. Um zu visualieren, dass der Punkt der Domain ein integraler Bestandteil des Projektnamens ist, habe ich ihn kurzerhand in den ersten Buchstaben der jeweiligen Top-Level-Domain integriert. So unterbricht er nicht den Lesefluss, ist aber trotzdem vorhanden. :)

Ich hoffe, euch gefallen die neuen Logos. :)

Artige Grüße, Kenny

5 Jahre WeizenSpr.eu

Kaum zu glauben, aber es ist inzwischen 5 Jahre her, dass ich am 02.02.2009 den ersten Artikel hier im Blog veröffentlicht habe. Seitdem hat sich nicht nur WeizenSpr.eu verändert, sondern auch mein Leben.

Der Blog lief anfangs auf einem Shared Hosting Server eines kleinen Unternehmens, bevor ich ihn zum Shared Hosting von Hetzner umzog. Von da an zog er erst zu einem virtuellen Server, dann zu einem schwachen dedizierten Server und abschließend zum derzeitigen dedizierten Server mit 16GB RAM, Quad-Core und 3TB RAID-1.

Ähnlich verlief es auch in meinem Leben. Vom dualen Studium in Mannheim und meinem Eintritt in die Piratenpartei zog ich nach Berlin, um dort meinen ersten Job anzutreten und die Gründung der Hellersdorfer Ortsgruppe der Piratenpartei anzustoßen. Inzwischen habe ich meinen Arbeitgeber gewechselt und bin wieder aus der Piratenpartei ausgetreten - die tollen Kontakte dort sind geblieben. Inzwischen beschäftige ich mich weniger Politik und dafür mehr mit der Entwicklung von Sicherheitshardware. Über letzteres gibt es auch einige Artikel hier im Blog zu lesen.

Ich bin gespannt, was die nächsten 5 Jahre bringen werden. Vielleicht wird bloggen ja wieder so cool, wie es zu der Zeit war, als ich damit anfing. Leider sind viele Blogger zum reinen Mikroblogging gewechselt. Dabei könnte Deutschland noch spannende Blogs mit persönlicher Note gebrauchen.

An dieser Stelle vor allem einen Dank an meine Leser. Einige von euch begleiten mich seit den Anfängen, andere sind mit der stärkeren Fokussierung auf Technikthemen dazu gekommen. Ich freue mich immer wieder, wenn Leute mich wegen Artikeln anschreiben und tiefgründigere Fragen oder Anmerkungen zu ihnen haben. Das ist der Grund, weshalb ich blogge: Erfahrungsaustausch. :)

Also dann! Bis demnächst!

Bloggende Grüße, Kenny

Arduino als Tastaturcontroller verwenden

Manchmal dauert es eine ganze Weile, bis man die richtige Idee für die Lösung eines Problems hat - in diesem Fall habe ich für die richtige Idee fast ein halbes Jahr gebraucht. Und zwar ging es darum, wie ich es hinbekommen könne, das Tastaturfeld einer gekauften Tastatur mit einem Arduino zu verbinden. Hierzu hatte ich im letzten Jahr mehrere Tastaturen auseinander genommen, nur um herauszufinden, dass diese immer eine Tastaturmatrix aus Plastik enthielten - ein Material, mit dem man als Privatperson kaum praktisch arbeiten kann.

Doch manchmal sieht man den Wald vor lauter Bäumen nicht. Es gibt Tastaturen, mit denen man nicht solche großen Probleme hat - und zwar mechanische Tastaturen, wie die Cherry G80-3000. Diese ist mit normalen, mechanischen Tasten versehen, die auf eine Platine gelötet sind. Damit kann man wunderbar arbeiten! :D

IMG_8023 IMG_8024 IMG_8025
IMG_8026 IMG_8027 IMG_8042

Cherry G80-3000

Man muss jedoch aufpassen, dass man beim Ablöten des standardmäßigen Controllers nichts kaputt macht. Falls das doch geschehen sollte, kann man es aber auch relativ einfach wieder reparieren - man zieht einfach eine Verbindung zu einer der zugehörigen Tasten. Schon kann man bereits die ersten Tests beim Auslesen der Tastatur machen. :)

IMG_8043 IMG_8048 IMG_8079

Tastatur reparieren und auslesen

Im ersten Schritt reicht es, die Anschlüsse mit einem Multimeter zu verbinden und zu prüfen, ob eine durchgehende Leitung vorhanden ist. Dies sollte dann der Fall sein, wenn die passende Taste gedrückt wird. Hat man dies erfolgreich hinter sich gebracht, kann man damit anfangen, durchzuprobieren, welche Anschlüsse für welche Taste stehen. Ein Video davon, wie das Auslesen mit einem Multimeter aussieht, habe ich hier mal bereitgestellt:

Tastatur mit Multimeter auslesen

Es dauert ein kleines bisschen, bis man weiß, welche Tasten mit welchen Anschlüssen verbunden sind, doch die Arbeit lohnt sich! Bereits die ersten praktischen Tests sehen schon sehr cool aus. Zum Beispiel kann man die gedrückten Tasten auslesen und mit Hilfe eines Arduino Leonardo eine USB-Tastatur emulieren. Nunja, von Emulieren kann hier ja eigentlich keine Rede mehr sein. So sieht das ganze dann im Video aus:

Arduino Leonardo als Tastaturcontroller

Ein Problem, das man lösen muss, ist, dass man nicht alle Pins des Arduino Leonardo mit der Tastaturansteuerung blockieren will. Man muss also irgendwie die ganzen Pins des Tastaturlayouts zusammenschrumpfen. Genauer gesagt verwendet die Cherry G80-3000 genau 18 Leitungen als Eingang und 8 Leitungen als Ausgang. Damit lassen sich theoretisch 144 verschiedene Tasten ansteuern - dabei hat die Tastatur nur 105 Tasten. Leider habe ich keine Ahnung, weshalb man solch ein merkwürdiges Design gewählt hat. Wahrscheinlich will man dadurch gewisse - häufiger vorkommende - Tastenkombinationen ermöglichen, ohne gleich Dioden für alle Tasten verbauen zu müssen.

Jedenfalls kann man hierfür mein LED-Beispiel von früher etwas abwandeln, um die 26 Steuerleitungen ansprechen zu können. Ich habe das Konstrukt "Tastaturtreiber" getauft. Es besteht im Grunde aus 4-Bit-Zählern, Demultiplexern und ein wenig NAND-Logik. Als Resultat reichen nun 4 Leitungen aus, um die Tastatur vollständig auslesen zu können:

G80-3000 Tastaturtreiber-Layout

G80-3000 Tastaturtreiber-Layout

Das ganze lässt sich sogar - wenn auch etwas unübersichtlich - auf einer 5x10cm Streifenrasterplatine unterbringen. Der initiale Aufwand lohnt sich, sobald man etwas mehr mit dem ganzen Setup herumexperimentieren will. Denn ein Aufbau auf einem Steckboard ist einfach wesentlich instabiler.

IMG_8142 IMG_8143 IMG_8144
IMG_8145 IMG_8146 IMG_8148
IMG_8149

G80-3000 Tastaturtreiber

Nun, da das alles funktioniert, wird es Zeit für die nächsten Schritte. Ich werde mich in den kommenden Wochen auf zwei Themen konzentrieren - das ist zum einen das Aufbauen einer komplett eigenen Tastatur mit Hilfe von Cherry-Schaltern und zum anderen das Ansprechen von Bluetooth-Modulen. Diese sollen später das Arduino Leonardo als Schnittstelle zum Computer/Smartphone/Tablet ersetzen. Glücklicherweise beherrschen auch solche Bluetooth-Module das Emulieren von Tastaturen. :)

IMG_8150 IMG_8077

nächste Schritte

Sooo... ich hoffe, dieser etwas längliche Abriss über meine Arbeiten der letzten Zeit haben euch gefallen. Bei Fragen, Anregungen oder Kritik einfach melden. :)

Mechanische Grüße, Kenny

calc.pw beim 30C3

Hallo und herzlich willkommen in 2014! Wieder einmal ist ein Jahr vorbei und wieder einmal starten wir mit neuen Vorsätzen in neuen Zeitabschnitt. Doch auch das Ende des letzten Jahres hatte es in sich: Ich durfte auf dem 30C3 einen Vortrag zu calc.pw halten. :)

Screenshot vom 30C3

Im Vortrag selbst habe ich die Idee hinter calc.pw vorgestellt, was ich mir für eine Lösung ausgedacht habe, welchen Problemen ich bei der Implementierung begegnet bin, wie ich diese gelöst habe und welche Pläne ich für die kommende Zeit habe (ich bin derzeit übrigens mitten in den Vorbereitungen für den nächsten, größeren Schritt).

Kongressraum congress_front

Kongressraum

Wer sich das ganze ansehen mag, kann entweder direkt auf Youtube gehen, sich die MP4-Datei direkt beim CCC herunterladen oder sich das ganze eingebettet ansehen:



Chaotische Grüße, Kenny

Software-Reset aus dem Arduino Leonardo herauspatchen

Der Arduino Leonardo, der nun seit etwa einem Jahr auf dem Markt ist, besitzt dank seines ATmega 32u4 direkt die Möglichkeit, eine USB-Verbindung mit dem PC aufzubauen - auf dem Arduino Uno war dafür ein separater Mikrocontroller zuständig. Durch diese Änderung hat sich jedoch auch die Art, wie Resets über den USB-Anschluss angestoßen werden, geändert. Dieser Reset ist inzwischen eine reine Software-Routine und kann entsprechend - falls nötig - herausgepatcht werden.

Der Software-Reset wird ausgeführt, indem vom PC aus eine serielle Verbindung mit 1200 Baud aufgebaut und wieder geschlossen wird. Die auf dem Arduino Leonardo laufende Software interpretiert dies als Wunsch, einen Reset durchzuführen. Dieser kann im Anschluss zum Beispiel genutzt werden, um einen neuen Sketch auf das Gerät zu laden. In Fällen, in denen mit Hilfe der Arduinos jedoch z.B. eine Kleinserie gefertigt wird, kann der Wunsch bestehen, das einfache Aufspielen von neuen Sketches zu unterbinden.

Hierfür sollte man bei seinem Arduino-IDE Installationsverzeichnis einmal in die Datei /hardware/arduino/cores/arduino/CDC.cpp blicken. In dieser findet sich die Funktion CDC_Setup(), die folgenden Passus enthält:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// auto-reset into the bootloader is triggered when the port, already
// open at 1200 bps, is closed.  this is the signal to start the watchdog
// with a relatively long period so it can finish housekeeping tasks
// like servicing endpoints before the sketch ends
if (1200 == _usbLineInfo.dwDTERate) {
     // We check DTR state to determine if host port is open (bit 0 of lineState).
    if ((_usbLineInfo.lineState & 0x01) == 0) {
        *(uint16_t *)0x0800 = 0x7777;
        wdt_enable(WDTO_120MS);
    } else {
        // Most OSs do some intermediate steps when configuring ports and DTR can
        // twiggle more than once before stabilizing.
        // To avoid spurious resets we set the watchdog to 250ms and eventually
        // cancel if DTR goes back high.
       
        wdt_disable();
        wdt_reset();
        *(uint16_t *)0x0800 = 0x0;
    }
}

Um den Software-Reset zu deaktivieren, muss dieser Code einfach vollständig auskommentiert werden. Anschließend ist ein Reset nur noch durch Betätigung des Reset-Buttons oder durch manuelles Verbinden des RESET-Pins mit einem GND-Pin möglich.

Resettende Grüße, Kenny

P.S.: Natürlich ist es auch möglich, den Software-Reset wieder zu aktivieren. Dazu muss der vormals auskommentierte Quelltextblock wieder einkommentiert werden und einmal ein Sketch durch einen rechtzeitigen manuellen Reset geflasht werden.

Seite 3 von 77« Erste...234...Letzte »