Die erste eigeneTja, die Überschrift klingt komisch, hat mir aber besser gefallen als ‚Mein Solarium und ich‘. Obwohl letzteres auch gepasst hätte. :-)

Nachdem ich mich jetzt mehrere Jahre davor gedrückt und lieber mit Lochrastermaterial gebastelt habe, habe ich mich seit anderthalb Wochen intensiv mit dem Ätzen von Platinen beschäftigt. Erst so versucht, dann eine Ätzanlage gebaut. Gestern habe ich das erste Ergebnis zusammengelötet, und es hat auf Anhieb funktioniert.

Meine Erfahrungen damit habe ich auf der Schatenseite verewigt. Was die gezeigte Platine tut wird später in einem separaten Eintrag beschrieben, damit ist die dann auch als ‚Metaprojekt‘ fertig.

Wenn ich irgendwann mal was basteln möchte was mehr Rechenleistung braucht als ein ATmega bietet denke ich mal über eine ARM-CPU nach. Dachte ich. Gerade habe ich einiges über den Propeller von Parallax gelesen. Darauf gekommen bin ich über die YBox2 von Lady Ada.

Der Parallax ist ein Controller mit acht unabhängigen RISC-CPU-Kernen in 32 Bit. Klingt wie geschaffen für komplexe Projekte bei denen mehrere Sachen gleichzeitig stattfinden sollen. Im genannten Projekt wird der mit 80MHz getaktet, hat also auch genug Schwung um komplexere Sachen zu machen. Und teuer scheint der auch nicht zu sein: als Einzelstück 12,50 Euro klingt fair bei den Daten. Oh, und im Gegensatz zu ARMen gibt es den auch im ‚Lötbaren‘ Gehäuse, also in nicht-SMD-Form.

Doof ist nur, dass ein C-Compiler nur gegen Geld zu kriegen ist, während es eine Entwicklungsumgebung für eine proprietäre Sprache (Spin) kostenlos gibt.

Zwei wiedergeborene TastaturenIn den letzten Wochen habe ich mich wieder verstärkt um mein Projekt Dulcimer gekümmert. Seit Gestern habe ich ein neues benutzbares Hackbrett. Diesmal keine Model M, aber nichtsdestotrotz ein erlesenes Gerät. Ausführliches schreibe ich dann die Tage mal, wenn ich ein neues Paket online stelle. Wer sich für die Fortschritte interessiert kann auch einen Blick auf die Entwicklung werfen — das dürfte allerdings wohl eher was für den Connoisseur sein. :-)

USB-Tastaturen in speUnd ich habe Heute neue Rohlinge für solche Basteleien bekommen. Zwei Model M, eine von 1991 und eine von 1995. Ob ich letztere wirklich zerlegen sollte muss ich mir noch überlegen. Das scheint irgendwie ein Sondermodell zu sein. Das Kabel ist — untypisch für die Serie — fest angebaut, und was das eigentlich merkwürdige ist: die hat keine LEDs. Sieht man auch auf dem Foto. Eigentlich ideal für meine Bastelidee. Kann mir jemand sachdienliche Hinweise zu dem Ding geben?

… man kann noch so lange an einem Problem rum programmieren, einen kaputten Stecker kann man nicht wieder heil programmieren. Auch nicht wenn man da einen kompletten Samstag reinsteckt. :-(

Aber der One-Wire-Bus ist an der Stelle auch echt ein Arsch. Wer ihn nicht kennt: der Name ist etwas verwirrend. Zwei Drähte braucht man mindestens: einen für die Masse, einen für Daten. Eine Versorgungsspannung kann man wenn man möchte zusätzlich anlegen. Wenn man das nicht machen will kann man die Bausteine auf dem Bus — Temperaturfühler in meinem Fall — auch über die Datenleitung mit Saft versorgen. Eigentlich muss man dazu dann noch einen zusätzlichen FET benutzen.

Der Samstag hat mir aber gezeigt, dass es auch ohne den FET geht, wenn zum Beispiel der Pin für die Versorgungsspannung im Stecker kaputt ist. Und wenn man mehrere Sensoren auf dem Bus hat gibt es sehr merkwürdige Ergebnisse, empfehlenswert ist das also nicht. Das doofe ist: es gibt Ergebnisse. Wenn gar nichts geht kommt man schnell auf die Idee zu messen. Wenn aber der Bus die Geräte sieht, diesen aber keine Ergebnisse entlocken kann, ist das… irreführend. :-(

Naja: Gefahr erkannt, Gefahr gebannt. Heute habe ich mein aktuelles Mikrocontroller-Projekt in Betrieb genommen. Ein Gehäuse fehlt noch, dann mache ich ein paar Fotos und veröffentliche es. Vielleicht auch ohne Gehäuse, dann wird das diese Woche noch was.

I2C LED MatrixSchlag auf Schlag: Ich habe nicht vor, jetzt jede Woche ein neues Projekt auf die Seite zu stellen. Ideen hätte ich genug, aber nicht ansatzweise die Zeit um alles umzusetzen. Im Moment drängt es mich aber etwas, mein nächstes größeres Projekt fertig zu kriegen, unter anderem habe ich deshalb auch letzte Woche schnell die Tastatur fertig gemacht. Hier geht es um einen Teil des nächsten Projektes.

Vor einer ganzen Weile habe ich mal billig einen Posten Siebensegmentanzeigen gekauft. Die sollen jetzt mal zum Einsatz kommen. Grün, vierstellig, gemeinsame Anode (letzteres ist der Grund warum ich doch nicht auf Charlieplexing zurückgreifen kann). Die haben also 12 Pins an der Unterseite: acht Segmente und jeweils eine Anode pro Ziffer. Ich werde zwei davon brauchen. Die Segmentanschlüsse kann ich jeweils verbinden, die Anoden muss ich vom Controller aus einzeln ansteuern. Also acht Segmente plus acht Anoden, macht 16 Pins. So viel habe ich nicht frei.

Sicher könnte man da was mit anderen Bausteinen machen, ich habe mir meinen eigenen gebaut. Einen ATmega8 der per I2C zu steuern ist, und der diese Aufgabe spielend übernehmen kann. So brauche ich an meinem ‚Hauptprozessor‘ nur noch die zwei Pins für den I2C-Bus. Außerdem verlagert sich der Job, die LEDs zu Multiplexen in den anderen Controller. So muss ich beim Programmieren auch nicht auf das Timing achten damit die LEDs nicht flimmern.

Das ganze habe ich schön dokumentiert und freigegeben, unter dem nicht sehr originellen Namen I2C LED Matrix.

‚Matrix‘ deshalb weil man an den Baustein einfach eine Matrix aus 8×8 LEDs anschließen kann. Das müssen nicht unbedingt Siebensegmentanzeigen sein. Der Vorteil ist, dass man so beliebige Zeichen darstellen kann, Nachteil dieser Flexibilität ist allerdings auch dass man sich die Zeichen auf dem steuernden Controller erstmal definieren muss. Naja, schwer ist das aber auch nicht, ein Beispiel habe ich auf der Seite.

Vielleicht kann das ja jemand gebrauchen. Und bevor die Befürchtung aufkommt dass es hier jetzt nur noch uC-Basteleien gibt: ich fürchte bis das angekündigte größere Projekt fertig wird, wird einige Zeit ins Land gehen… hoffentlich nur ein paar Wochen, aber… wer weiß?

Wenn ich mal wieder ein Projekt habe in dem ich viele LEDs ansteuern möchte werde ich der Technik namens Charlieplexing ein paar Gedanken widmen. Nur beschaltet mit ein paar Widerständen kann ein Controller mit n Pins (n*(n-1)) LEDs schalten. Das wären (wenn man einen Quarz und Reset nicht belegen möchte) 210 mit einem ATtiny2313, 380 mit dem ATmega8 oder sogar 992 mit einem ATmega32 oder ATmega644…

Dieses Projekt war 2008 noch nicht im Blog, ich habe es 2015 aus dem alten CMS kopiert.

Das fertige Hackbrett -- äußerlich original, bis auf das Kabel

Das fertige Hackbrett — äußerlich original, bis auf das Kabel

Die Version, die sich in Frankreich aus dem Psalterium entwickelte, wurde auf französisch ‚doulcemér‘ genannt, dieser Name stammt vermutlich vom lateinischen ‚dulce melos‘, ’süßes Lied‘ oder ‚lieblicher Klang‘. In England heißt das Hackbrett heute noch ‚hammered dulcimer‘.

Wikipedia — ‚Hackbrett

Eine Tastatur kann eine sehr persönliche Sache sein. Insbesondere wenn es sich dabei um ein sehr gut gebautes Modell handelt, wie zum Beispiel eine IBM Model M. Das Design der Model M stammt von 1984, sie hat aber auch Heute noch eine grosse Fangemeinde. Sie hatte die üblichen Anschlüsse für alte Tastaturen: erst den 5poligen DIN-Stecker, später einen PS/2-Stecker. Zumindest meines Wissens nach wurde dieses Modell nie in einer USB-Variante herausgebracht.

Ein Bekannter wusste dass ich schon öfter Geräte mit USB-Anschluss gebastelt habe, und eines davon verhält sich sogar wie eine Tastatur (Es ist nicht wirklich eine Tastatur… aber das ist eine andere Geschichte… ;-) ). Er ist ein grosser Freund der Model M, also fragte er ob ich einer Tastatur mit kaputter Elektronik neues Leben einhauchen könnte. Dies ist das Ergebnis…

Hard- und Software

Ein erster Prototyp

Ein erster Prototyp

Der grösste Teil der Elektronik in einer Tastatur ist die Tastenmatrix. Man kann sich das so vorstellen dass die Tasten auf einem Raster aus horizontalen (Reihen) und vertikalen (Spalten) Leiterbahnen verteilt sind. Im Fall einer Model M haben wir es mit einer 8×16-Matrix zu tun. Acht Spalten in 16 Reihen, oder anders rum, je nachdem wie man sich das vorstellt. Jede Taste ist mit einer Reihe und einer Spalte verbunden. Wenn man drauf drückt wird die Verbindung an dieser Kreuzung hergestellt.

An dieser Matrix hängt ein Tastaturcontroller. Das ist ein Chip mit einer Reihe von I/O-Pins die den Zustand der Matrix überwachen. Am anderen Ende ist ein Interface mit dem der Chip dem Computer seine Befunde mitteilt. Ach ja, und nicht zu vergessen: der Chip hat auch drei Ausgänge zur Ansteuerung der LEDs für Num-, Caps- und Scroll-Lock.

In diesem Projekt habe ich den Tastaturcontroller und seine Schaltung durch einen ATmega32 und eine eigene Schaltung ersetzt. Der ATmega scannt die Matrix, steuert die LEDs und spricht mit dem Computer.

Für die angenehme Weiterentwicklung habe ich einen Boot-Loader in dem Chip untergebracht. Damit ist es möglich, der Tastatur eine neue Firmware zu verpassen ohne sie auseinander nehmen zu müssen. Und ohne einen speziellen Programmer zu brauchen.

Andere Hardware?

Original alt

Original alt

Wie geschrieben hängt der Controller in diesem Projekt nur an einer Tastaturmatrix. Diese Art von Matrix findet man in allen möglichen Tastaturen, von Tastentelefonen über klassische Computer wie den C=64 oder den Schneider CPC, Tastaturen wie die von Sun, mit Anschlüssen die nicht an PC passen, bis hin zu modernen Tastaturen die ein paar zusätzliche Features brauchen könnten.

Ein Layout habe ich zwar bislang nur für die IBM Model M gemacht, aber ich will zumindest noch eine Sun-Tastatur umbauen. Ich schätze dass ich dazu den Scan-Algorithmus umbauen muss, weil die Matrix bei Sun nicht in 16×8-Form angeordnet ist. Die Positionen der Tasten auf der Matrix werden wahrscheinlich auch anders sein, die werde ich rausfinden müssen. Und natürlich wird dann eine Platine mit anderem Layout fällig.

Features

Powered by Kicad

Powered by Kicad

Im Moment macht die Tastatur alles was man von einer Standard-Tastatur erwarten kann die man irgendwo aus dem Regal zieht. Aber da sich der ATmega32 in der Tastatur die meiste Zeit einfach nur langweilt sind einige zusätzliche Features denkbar. Man denke an ‚magische Tastendrücke‘ die einige versteckte Funktionen an- oder ausschalten können, so etwas wie:

  • komplette Sätze oder Phrasen auf einzelne Tastendrücke abschicken
  • ‚Autofeuer‘-Funktion auf Tasten die sowas normalerweise nicht haben, beispielsweise Alt+F4
  • Tastaturlayout umstellen ohne den Computer umzukonfigurieren
  • prellende Tasten ein- oder ausschalten, um Leute zu verwirren die den Computer benutzen wollen
  • zufälliges Auslösen von Caps-Lock
  • Die Pfeiltasten zu einem Mausersatz machen, ohne dafür spezielle Software zu brauchen

Mit ein paar Änderungen an der Hardware würden sogar noch deutlich mehr Möglichkeiten offen stehen:

  • die Oldtimer-Tastatur in eine supermoderne kabellose Bluetooth-Tastatur umbauen
  • Keylogger-Funktionen einbauen, zum Beispiel auf SD-Karte
  • einen USB-Hub in die Tastatur einbauen

Wer nur ein wenig so darüber denkt wie ich wird nicht lange brauchen um selbst auf nützliche — oder besser: unnütze — Ideen zu kommen. ;-)

Benutzung

Die fertige Tastatur wird einfach an USB angeschlossen. Alle LEDs blinken kurz auf um zu zeigen dass das Gerät initialisiert ist.

Dann kann die Tastatur wie immer benutzt werden. Wenn zusätzliche Features eingebaut werden wird es zusätzliche Bedienungsanleitungen geben.

Nachteile

Ich weiss nicht wie die Hersteller von Tastaturen mit dem Problem der Geister-Tasten umgehen. Ich habe keine speziellen Massnahmen zu deren Verhinderung getroffen. Ich hoffe einfach mal, dass die Ingenieure bei IBM die Tasten in einer Weise auf der Matrix verteilt haben die das Problem minimiert. Aufgetreten sind solche Probleme bei mir bislang zwar nicht, aber ich wollte darauf hinweisen dass ich keine Gegenmassnahmen getroffen habe.

Danke!

Moderner Oldtimer

Moderner Oldtimer

Ich danke wieder mal Objective Development für die Möglichkeit, den USB-Treiber in meinem Projekt benutzen zu können.

Ich habe mich sehr stark von Spaceman Spiff’s c64key inspirieren lassen. Diese Software basiert auf seinen Ideen.

Dann geht Dank an xleave, der mir die Platine geätzt hat (von den vielen blöden Elektronikfragen mal ganz abgesehen die er schon von mir vor den Latz gekriegt hat…).

Und ich danke natürlich FaUl vom Chaostreff Dortmund für die Idee zu dem Projekt.

Lizenz

Meine Arbeit, also alles außer dem USB-Treiber, fällt unter die GNU General Public License (GPL). Eine Kopie der GPL liegt dem Projekt bei. Der USB-Treiber untersteht einer gesonderten Lizenz von Objective Development. In firmware/usbdrv/License.txt befinden sich weitere Informationen dazu.

Download

Siehe auch…

  • clickykeyboards.com – eine Seite zur IBM Model M
  • RUMP – praktisch das gleiche Projekt, eine parallele Entwicklung
  • Geekhack – Lochraster-Version, basiert auf Dulcimer