Forum: Mikrocontroller und Digitale Elektronik IBM Thinkpad keyboard with trackpoint -> wireless


von Klaus A. (klaus-albers)


Angehängte Dateien:

Lesenswert?

Hallo,

nachdem ich hier schon unzählige Anregungen bekommen habe, werde ich 
hier mal die Fortschritte eines aktuellen Spassprojektes dokumentieren, 
dessen Ergebnis vermutlich eine Menge Leute interessiert.

Als enthusiastischer Thinkpad Fan warte ich schon seit Jahren darauf, 
daß IBM/Lenovo endlich eine Tastatur mit Trackpoint UND Funkübertragung 
anbietet. Da aber nichts passiert, muss das Ding eben selbst gebaut 
werden. Idee: Defektes Thinkpad, Display und jeglichen Inhalt bis auf's 
Keyboard entfernen, wireless interface für die Tastatur (PC seitig -> 
PS/2).

Als Hauptproblem habe ich bislang den Trackpoint als Mausersatz 
betrachtet, aber das hat sich vor ein paar Minuten erledigt :-) Habe aus 
einem alten T42 den Trackpoint ausgebaut. Ein Datenblatt für einen 
Treiberchip von Philips hatte ich schon gefunden (Anhang). Die 
Trackpointplatine hat 10 Anschlüsse, die wie folgt mit dem Chip 
verbunden sind:

Pad Pin     Funktion
-------------------------------
1   5       RST
2   1       RXD
3   2       TXD
4   4       INT1/CLK
5   8/3     GND
6   14/22   VCC/AVCC
7   24      INT0/CLK
8   27      Middle key
9   27      Middle Key
10  27      Middle key

Pad 1 ist das am Platinenrand. Reset (Pad 1) habe ich gemäß Datenblatt 
auf Masse gelegt, RXD/INT1 per 10k auf VCC und TXD/INT0 per 4.7k auf 
VCC. Schließt man ein PS/2 Kabel aus einer alten Tastatur an 
VCC/GND/TXD/INT0 an funktioniert der Trackpoint wie gewünscht als PS/2 
Maus.


Tastatur: Bei Laptoptastaturen scheinen grundsätzlich die Anschlüsse der 
Tastaturmatrix (siehe Wikipedia) herausgeführt zu sein, sie haben also 
keinen Decoder eingebaut, der die Scancodes generiert. Die Kabelbelegung 
(Zeilen- und Spaltenleitungen der Matrix) muss man wohl per Multimeter 
finden (vielleicht hat das schon mal jemand gemacht?). Ich würde die 
Leitungen dann auf einen Decoder-IC aus einer alten Tastatur legen und 
den die Scancodes generieren und die Tasten entprellen lassen. Die Codes 
werden mit höchster Wahrscheinlichkeit nicht den gewünschten Tasten 
entsprechen. Daher soll ein AVR die Codes vom Decoder per SPI 
entgegennehmen, per Look-up-table konvertieren und die richtige Taste an 
den PC rausgeben. Sobald das klappt, hätte man schon mal eine 
kabelgebundene Lösung.

Funkübertragung: Ich hab hier noch 4 RFM12 Transceiver rumliegen, die 
würde ich gerne für die Funkübertragung nehmen. Um nicht 2 Funkstrecken 
(Maus/Tastatur) zu bauen, würde ich die Mausdaten vermutlich mit dem 
Tastatur-Koverter-AVR entgegennehmen. Dann sollen die Daten mit 
Priorität auf der Tastatur per Funk an einen AVR am PC geschickt werden, 
der dann die entsprechenden PS/2 Daten in den entsprechenden PS/2 
Eingang füttert.

Soweit der Plan, wenn jemand bei der Umsetzung der Funkübertragung 
helfen mag, nur zu :-) PS/2 Daten per AVR habe ich mittels Bascom schon 
mal probiert, das war relativ easy going.

Melde mich, sobald ich mit dem Keyboard weiter bin.

Cheers

Klaus

von ... .. (docean) Benutzerseite


Lesenswert?

Sowas kommt im Wiki auch gut...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Immerhin gibt es seit einiger Zeit die Kombination 
Lenovo-/IBM-Notebook-Tastatur mit Maustitte als USB-Gerät: 
http://www.heise.de/preisvergleich/a87716.html

Vielleicht ist das ja ein Ansatz für Deinen Wireless-Wunsch.

Ein USB-Host für HID dürfte mit Vinculum realisierbar sein, fehlt "nur" 
noch die drahtlose Übertragung und Umwandlung in USB-HID. Oder gleich 
eine drahtlose Übertragung mit Bluetooth, dann aber muss das 
entsprechende BT-HID-Profil verwendet werden.

von Klaus A. (klaus-albers)


Lesenswert?

Die USB Tastaturen kenne ich. Ich muss allerdings gestehen, daß ich mich 
an USB-Implementierungen bislang nicht herangetraut habe. Serielle 
Byteübertragungen ohne Protokollkrams kann man ja noch am Oszi mitlesen, 
ohne einen Anfängerkurs bei Kenau Reeves zu belegen :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da hast Du natürlich recht.

Beim Anschluss einer Notebook-Tastatur an einen aus einer normalen 
Tastatur ausgeschlachteten Controller musst Du beachten, daß nicht jede 
Tastenkombination gleichartig behandelt wird - für manche 
Tastenkombinationen wird ein mehrfaches Drücken erkannt, bei anderen 
aber nicht:
Tasten wie Ctrl/Alt/Shift/Windows/Fn werden anders behandelt als normale 
Buchstaben; eine Tastatur muss nicht unterstützen, daß "A"+"B"+"C" 
gleichzeitig gedrückt werden, aber "Ctrl+Alt+Del" muss gehen. Und das 
schlägt sich in der Tastaturmatrix und deren Decodierung nieder. Daher 
reicht ein simpler Übersetzer nicht, die Tastaturmatrizen sollten schon 
weitestgehend ähnlich sein.

von Klaus A. (klaus-albers)


Lesenswert?

Guter Hinweis, danke. Wenn sich die Matrizen zu sehr unterscheiden, 
müsste ich notfalls einen ATmega als Decoder an die Tastatur hängen. 
Halte ich zwar nicht für kompliziert aber den Aufwand würde ich mir 
gerne ersparen. Mache mich jetzt mal an das flat cable der Tastatur, mal 
schauen ob sich das Multimeter zu Geräuschen hinreißen läßt.

von Klaus A. (klaus-albers)


Lesenswert?

Die Ansteuerung des Keyboards ist anscheinend deutlich aufwendiger. Die 
Tastatur scheint aus 2 Plastikflächen mit aufgedruckten Leiterbahnen zu 
bestehen. Die Tastaur drückt die Flächen einfach mit einem 
Kunststoff-"dome" aufeinander, um den Kontakt herzustellen, wobei die 
Taste durch eine Hebelmechanik geführt wird. Jetzt das Problem: Beide 
Plastikflächen haben je 20 Anschlusspads, die doppelseitig durch 
Quetschen mit den Pads auf dem flat cable kontaktiert werden. Macht 40 
Anschlüsse :-( Ich werde morgen mal Fotos machen und sie reinstellen.

Bislang habe ich das Multimeter durch Testen am Stecker an der 
Mainboardseite des flat cable noch nicht zum Quietschen gebracht. 
Vorgehensweise: Ein Anschluss des MM auf einen beliebigen Kontakt, 
Tastatur so fest auf den Tisch pressen, daß möglichst viele Tasten 
gedrückt werden, mit dem 2. Anschlusskabel die anderen Kontakte 
abfahren. Da hätte sich eigentlich was tun müssen (?).

Um mich aufzuheitern werde ich morgen abend mal den Trackpoint mittels 
AVR auslesen und mich mit den RFM12's auseinandersetzen, dann hat man 
schon mal einen drahtlosen Trackpoint :-).

Cheers

Klaus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es wurden durchaus auch kapazitive Tastaturen hergestellt (die "guten 
alten" schussfesten Desktop-Tastaturen von IBM aus den 80ern waren 
beispielsweise welche), vielleicht ist Deine ja auch eine.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Evtl. ist es einfacher, die inzwischen verfügbare Trackpoint-Tastatur 
mit einer fertigen wireless USB-Lösung zu kombinieren. Man könnte sich 
also z.B. aus
http://catalog.belkin.com/IWCatProductPage.process?Product_Id=398632
oder
http://www.iogear.com/product/GUWH104KIT/
und
http://www.heise.de/preisvergleich/a177052.html
und eine Akkupack für die Tastatur und den HUB etwas "zurechtdremeln".
Sicher nicht die Billiglösung aber wohl deutlich zeitsparender, als 
alles selbst zu bauen.
Zum Selbstbau könnte als aus o.g. Tastatur, 2 Funkmodulen a la den 
genannten RFM12, einem Mikrocontroller mit USB-Device (PS/2 liegt im 
sterben) und einem mit USB-Host-Funktion (evtl. AT90 USB mit OTG und 
Dean Cameras Library) etwas selbst zusammenzubasteln und -programmieren. 
Aber eher was für lange Winterabende.

von klaus-albers (Gast)


Angehängte Dateien:

Lesenswert?

So, ist zwar schon länger her, aber habe mich endlich daran gemacht und 
die Keyboardmatrix ermittelt. Vorgehen:

- Flexcablebuchse vom Mainboard abgelötet und auf ein Schmartboard 
gesetzt
- 5 mal 8er Portkabel für uC drangelötet (5*8=40)
- mit uC in Mehrfachschleifen alle Kabelkombinationen bei Tastendruck 
durchtesten lassen und die beiden verbundenen Kabel anzeigen lassen
- Mappen der Portkabel auf die Leitungen des Flexcables

Der Kontaktwiderstand der Tasten liegt bei rund 80 Ohm.


Angehängt die Keyboardmatrix. Zur Nummerierung: Wenn man das Flexcable 
aus der Tastatur nimmt, sieht man, daß das Flexcable zwischen zwei 
Folien eingepresst war. Die 1 entspricht der linken Seite (über der 5) 
der oberen Folie. Rechts auf der oberen Folie ist die 20. Darunter auf 
der rechten Seite unten geht's weiter mit 21 bis zur 40 links auf der 
unteren Folie. Ein Mapping auf die Anschlüsse des Keyboardconnectors 
reiche ich nach.

Als nächstes kommt jetzt die Frage, ob sich die Matrix mit einem 
Standardkeyboardcontroller kombinieren lässt. Vermutlich nicht (aufgrund 
der Scancodemodifikation durch Strg etc.). Falls nicht: Ein AVR kann 
das, die Anzahl der relevanten Kabel beträgt 25 (26 mit FN).


So far

Klaus

von klaus-albers (Gast)


Angehängte Dateien:

Lesenswert?

pdf wird bei mir nicht angezeigt, versuch's nochmal

von klaus-albers (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Matrix inklusive z :-) Das Foto stammt von einem Ami-Keyboard, 
daher sind die Tasten ein wenig anders angeordnet.

Die für die Tastatur benötigten Kabel (ohne FN-Taste und Powerbutton) 
sind

1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,27,29,30,31,32,33,35,36

Macht 24 Kabel, also 3 Ports am uC.

Die Zeilen sind: 27,29,30,31,32,33,35,36
Die Spalten sind: 1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17

Das sind leider mehr Spalten als bei der typischen 8*13 Keyboardmatrix. 
Wird also vermutlich nicht mit einem Standardkeyboardcontroller 
funktionieren.

Habe ein erstes Bascomprogramm geschrieben, daß die Tasten dekodiert, 
geht relativ problemlos. Das Programm scannt nicht eine Matrix ab 
sondern prüft der Reihe nach alle 91 vorhandenen Kabelkombinationen. Die 
Kabelkombination zu jeder Taste steht in einem Datenfeld in der Form

data 3,1,2,1  'testet C1/B1

Die ersten beiden Zahlen bestimmen das auf Masse zu ziehende Kabel, die 
zweiten beiden Zahlen den auf Masse zu prüfenden Eingang. Die jeweils 
erste Zahl bestimmt den Port (A=1,B=2,...), die zweite den Pin (0-7). 
Wenn ein Tastendruck erkannt wird, wird der Scancode oder der String der 
Taste (je nachdem ob PS/2 Ausgabe oder RS232 Ausgabe gewünscht ist) aus 
einem weiteren Feld ermittelt und rausgeschickt.

Im Prinzip sind damit die wesentlichen Hürden für eine KABELGEBUNDENE 
IBM Notebooktastatur mit Trackpoint per PS/2 Kabel genommen. Jetzt muss 
sowohl das PS/2 Signal der Maus als auch das der Tastatur per Funk an 
den PC weitergereicht werden, am liebsten mit einer einzigen 
Funkverbindung. Beide müssen bi-direktional laufen.  Bluetooth wäre 
natürlich perfekt, zum Beispiel mittels serial port profile. Aber wie 
macht man dann dem PC klar, daß die Daten als Maus/Keyboard Daten zu 
interpretieren sind? Treiber schreiben bringe ich nicht :-)

von klaus-albers (Gast)


Angehängte Dateien:

Lesenswert?

Hat vielleicht jemand eine Idee, wie der Flexcable-Connector vom Foto 
heißt oder wo man sowas herbekommt? Ist die Buchse vom Mainboard des 
Thinkpads.

Das Schmartboard hat 0.65 mm Pitch, da passt sie nicht perfekt drauf, 
sind vermutlich 0.635 mm Pitch.

Hat vielleicht jemand noch eine alte Thinkpadtastatur? T21 würde auch 
gehen. Ein paar Euros würde ich dafür noch rausrücken :-)


Cheers

Klaus

von Klaus Albers (Gast)


Lesenswert?

Pad Pin     Funktion
-------------------------------
1   5       RST
2   1       RXD
3   2       TXD
4   4       INT1/CLK
5   8/3     GND
6   14/22   VCC/AVCC
7   24      INT0/CLK
8   25      Left key
9   26      Right key
10  27      Middle key

von Klaus Albers (Gast)


Lesenswert?

Alright, hier der aktuelle Status. Eine generelle Funkübertragung mit 
RFM12 Modulen steht jetzt, vielen Dank an

http://www.dh2faa.de/mctrl2.html

Nach ein wenig Mühe klappt es jetzt auch, dem Trackpoint einen PC 
vorzuspielen, so daß die "Mausdaten" der Trackpoint-PS/2-Schnittstelle 
von einem AVR eingelesen werden können.

Damit sind eigentlich alle wichtigen Einzelschritte vollzogen. Der Plan 
für's Finale:

- Ein Mega16 als Tastaturdekoder
- ein weiterer Mega16 übernimmt die Kommunikation mit dem Tastatur-AVR, 
dem Trackpoint und dem Sender-RFM12; die Daten von Tastatur und 
Trackpoint werden mit Priorität auf dem einen oder anderen Gerät gefunkt 
(weiss noch nicht welches wichtiger ist)
- ein ATtiny mit RFM12 als Empfänger, der die Daten in die Maus/Tastatur 
PS/2 Schnittstellen am Rechner stopft
- evtl. Implementation eines RC5 Senders mit ein paar Zusatzknöpfen auf 
dem Tastaturgehäuse, um Grundfunktionen der Anlage zu steuern, wäre ja 
relativ leicht mit einzubauen

Cheers

Klaus

von klaus-albers (Gast)


Lesenswert?

Funkübertragung des Trackpoints zum PC läuft. Ein am Trackpoint 
angeschlossener AVR initialisiert den Trackpoint und empängt die 3-byte 
Pakete. Dabei gibt es einen Timeout-Zähler, der bei Empfang des ersten 
Bytes gestartet wird. Werden innerhalb der Time-out Zeit nicht 3 Bytes 
empfangen, wird wieder bei Byte 1 angefangen. So wird verhindert, daß 
die Synchronisation mit den 3er Paketen verloren geht. Korrekt 
empfangene 3er Pakete werden per RFM12 zu einem zweiten AVR übertragen, 
der ebenfalls mittels Timeout ausschließlich 3-Byte-Pakete akzeptiert. 
Die Bytes werden interpretiert und als Mausdaten per PS/2 an den PC 
weitergereicht.

Der Trackpoint verfügt über Funktionen, die über die einer gewöhnlichen 
PS/2 Maus hinausgehen. Hier die Dokumente mit dem erweiterten 
Trackpointbefehlssatz:

http://wwwcssrv.almaden.ibm.com/trackpoint/download.html

Werde für meinen Geschmack die Empfindlichkeit hochsetzen müssen, ist 
aber noch nicht ausprobiert. Die gewöhnlichen Mausbefehle für resolution 
und sample rate haben keinen Effekt.

Werde die Tage mal die aktuellen Versionen der Programme für Sender und 
Empfänger posten.

Wenn irgendjemand aus PS/2 Daten ein USB HID Gerät zaubern kann, bitte 
Tipps geben!


Buenas noches

Klaus

von klaus-albers (Gast)


Angehängte Dateien:

Lesenswert?

Hier die ersten lauffähigen Bascom Programme für die Funkübertragung 
eines Trackpoints zum PC mittels je eines Mega16.

Schönes Wochenende

Klaus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.