t.board – Makroboard für Teamspeak 3

Kaum habe ich eine neue Tastatur fällt mir etwas nerviges auf – Sie hat weder Makrotasten noch ausgiebig Platz für Media-Feature Keys.

Soll weiter allerdings kein Problem sein, ich bastel mir einfach eine eigene. Kurz gedacht war mir klar, 8 Tasten und einen Drehimpulsgeber, natürlich für die Lautstärkeeinstellung, muss das Teil haben. Damit es schön blinkt und mich blendet müssen natürlich RGB-Leds rein. Und weil ich eh noch 1000 WS2812 hier liegen habe, verbaue ich doch einfach welche davon.

In kicad habe ich flott einen Schaltplan gemalt und ein nocht nicht ganz fertiges Layout zusammen gebastelt. Man sieht ziemlich eindeutig, das ich Cherry-MX Tasten verwenden möchte. Allerdings habe ich für die sparsamen nachbauer auch einfache Tactile-Switches vorgesehen. Die sind einfach mit den Cherry-Switches verbunden.

An der Oberseite findet ein Arduino Micro platz. Der unterstützt nativ den USB-HID Modus, das erleichtert das programmieren um einiges. Rechts sitzen einige Erweiterungssteckplätze und Debugverbindungen. J3 ist für ein ESP Modul aufgelegt, das könnte einfach eingelötet werden und mit dem passenden Quellcode wird das t.board wireless. Weiter sind für Akkus etc. zwei Schraubenlöcher und der Erweiterungsplatz J1 vorgesehen, der neben Versorungsspannung auch einige GPIOs offen hält. Auf J2 ist ein IIC Interface aufgelegt, um auch digitale Erweiterungen zu ermöglichen und keine Verbindungen am Arduino zu verschwenden.

Als Verbindung zum PC wird die MicroUSB-Buchse vom Arduino selbst benutzt, die im Gehäuse einfach ausgespart werden wird.

Durch die Cherry-MX Switches ist es möglich, einfach Cherry-MX Keycaps zu benutzen, ebenfalls lassen sich die Kappen mit dem 3D-Drucker einfach reproduzieren und mit Icons versehen.

Weil mir das debuggen mit fertig geätzen Platinen inzwischen allerdings zu teuer wird, habe ich mal wieder einen Prototypen auf Lochraster gebaut. Bietet sich hier auch ganz gut an. Ich habe beim Prototypen nicht auf die Pinfolge der Platine geachtet für die Schalter, weshalb ich etwas wirre kombinationen hier gebastelt habe. Ebenfalls habe ich aktuell keinen Drehincrementalgeber, der einen integrierten Knopf hat, weshalb ich mir einfach mit einem ohne Knopf und einem Taster beholfen habe

Auf dem Foto funktioniert die Kiste soweit schon. Ein Algorithmus für Beschleunigung und damit verbunden mehr Anschlägen für Volume Up und Volume Down am Incrementalgeber muss noch her, bis man auf die 100% gedreht hat geht einiges an Zeit ins Land. Ansonsten funktioniert die Firmware ganz gut.

Ich habe probiert auf von Windows vorgegebene Funktionen zu achten und den Quellcode nicht zu sehr zu überladen. Meine Gedanken dahinter waren, dass der Quellcode nur zu den Ticks, in den der Prozessor die HID Geräte abfrägt, auch Daten schickt (das sind wohl 125Hz). Zum Call wird eine routine abgefragt, die die registrierten Knopfdrücke an den Computer sendet. Die Routine läuft im Loop und wird nicht durch Timer gesteuert, es kann passieren, dass sie übergangen wird. Das ist allerdings nicht weiter schlimm, mit der Tastatur werden keine kritischen Aufgaben ausgeführt.

In einer weiteren Routine werden die Tastendrücke verarbeitet. Diese wird ebenfalls im main-loop aufgerufen, hier allerdings in jedem Durchlauf. Die poll-Routine für die Tasten ist so programmiert, dass sie ohne delay-funktionen, also ohne den Prozessor unnötig auszubremsen, die Taster entprellt und anschließend als Array mit registrierten Drücken global speichert.

Der Quellcode ist als open source auf github verfügbar, Platinenlayout, Desktopprogramm zum einrichten der Tasten sowie das Gehäuse und keycaps werden folgen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.