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
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.
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 :-)
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.
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.
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
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.
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.
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
pdf wird bei mir nicht angezeigt, versuch's nochmal
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 :-)
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.