Tastaturplatine mit RPi3 verbinden

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo miteinander,

    ich wollte mich hier mal erkundigen, ob schon jemand Erfahrung damit gemacht hat, eine Platine einer herkömmlichen PC-Tastatur (USB oder PS/2) mit dem Raspberry Pi 3 zu verbinden?
    Ich möchte nämlich gerne mein RPi3 in ein Gameboy Classic Gehäuse packen und das ganze dann neben "Universal-Konsolenemulator" auch als kleinen PC nutzen (deswegen kein RetroPie). Um natürlich einiges an Konsolen emulieren und vernünftig spielen zu können, braucht der GB Classic selbstverständlich auch mehr Knöpfe (geplant sind momentan 4 zusätzliche, mit so einer Platine ist aber noch genug Luft nach oben für weitere), die ich mit Hilfe einer Keyboard-Platine betreiben möchte. Für den normalen PC-Gebrauch mit dem RPi3 brauch ich dann natürlich eine vollständige Tastatur, die ich allerdings zum Spielen nicht immer an einem USB Port anstecken möchte, genauso wenig wie einen USB Controller.

    Zur Umsetzung fallen mir persönlich zwei Möglichkeiten ein: Direkt auf einen USB Anschluss gehen oder auf die GPIO Pins.
    Wobei ich persönlich die GPIO Pins bevorzuge, da ich mit dem Gedanken spiele, zwei der zusätzlichen Knöpfe und einen (noch nicht fest eingeplanten) Gamepad Joystick als PC-Maus für meinen RPi3 zu verwenden. Dazu werde ich dann wohl oder übel ein paar Files schreiben dürfen.

    Mein bisheriges Setup:
    - Raspberry Pi 3 mit Jessy based Image (Adafruit) für PiTFT 3.5" Touchscreen (letzte Woche geupdated/upgraded und Neuinstallation des Adafruit Kernels)
    - Adafruit PiTFT 3.5" Touchscreen
    - vollständig ausgelesene Keyboardplatine (USB, 5V 25mA)

    Die Funktion einer PC Tastatur ist mir ausreichend bekannt. Neben den zusätzlichen 4 Knöpfen, besitzt so ein GB Classic noch ein Steuerkreuz, einen A- und B-Knopf, sowie Start und Select. Damit komme ich auf 12 verschiedene Signale, die ich bei der Platine mit einer 4x3 Matrix umsetzen kann. Bestimmte Tasten werden nicht benötigt, da ich die Steuerung in den meisten Emulatoren ja manuell neu einstellen und damit meine Knöpfe entsprechend setzen kann. Die Verbindung von Platine und Knöpfe sollte kein Problem darstellen.

    Zum Anschluss an das RPi3: Von der Platine gehen 5 Kabel weg zum USB Stecker, die auf der Platine mit V, C, D und G gekennzeichnet sind. Dabei hängen auf G zwei Kabel. Ein Standard USB 2.0 hat 4 Pins: VBUS (+5V), Data-, Data+ und Masse (GND). Nach der Kennzeichnung würde ich darauf schließen, dass V = VBUS, C und D = Data- und Data+ und G = GND darstellen soll. Warum jedoch zwei Kabel (Blau und Grau) auf G hängen, weiß ich nicht.

    Meine Fragen hierzu wären folgende:
    - Ist ein funktionierender Anschluss einer Tastaturplatine an den GPIOs grundsätzlich möglich (1 Kabel auf 5V, 2 Kabel auf freie GPIOs, 1 bzw. 2 Kabel auf GND)? Gibt es hierzu schon Erfahrungen von einigen Usern?
    - Ist so ein Anschluss aus der Sicht von erfahrenen Usern für mein Vorhaben sinnvoll oder sollte lieber direkt auf die USB Pins des RPi3 gelötet werden?
    - Ist eine Emulation einer PC-Maus mit Hilfe zweier (willkürlicher) Tasten für Links- und Rechtsklick, sowie eines Joysticks für die Bewegung des Cursos über die GPIOs möglich?

    Sollten Bilder bzw. weitere Informationen zum besseren Verständnis meines Anliegens benötigt werden, reiche ich gerne welche nach!
    Damit bedanke ich mich schon mal fürs Durchlesen und auch für erste Antworten. Vielen Dank!

    MfG dropkickz

  • GPIOs vertragen nur 3,3 V, sonst wird der Pi gegrillt.

    Jede Tastatur hat einen Controllerchip, der aus der Tastaturmatrix einen Keycode zu jeder Taste generiert.
    Weder aus einer USB Tastatur, noch aus einer PS2 Tastatur kommen 3,3 Volt raus, sondern mehr. Nur die Keycodes können von /dev/AMA0, bzw. /dev/S0 von einer PS2 Tastarut verwendet werden, wenn der Pegel auf 3,3 V vor den GPIOs umgewandelt wird. Bei einer USB-Tastatur kann der Keycode sllenfals vor dem USB Kontroller abgegriffen und "gewandelt" werden.

    Ohne Controllerchip aus einer Tastatur (samt Pegelwandlung) gehts über die RX/TX GPIOs nichts. Für rauf/runter/links/rechts müsstest Du sonst 4 GPIO Pins opfern und die Cursorgeschwindigleit samt Richtung selbst programmieren.

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (21. März 2017 um 14:49)

    • Offizieller Beitrag

    Es gibt auch was bei github zum Thema gpio zu Tastaturemulation....Nen Pi3 in ein Classicgehäuse mit Display? Ich war froh als der Zero mit samt dem notwendigen anderen Kram da drin war.

  • Hallo RTFM, hallo dbv,
    vielen Dank für eure Rückmeldung zum Thema!

    RTFM:
    Ich hoffe, du meinst mit Controllerchip das, von dem ich von Platine spreche (hab dazu mal ein Foto angehängt). Die Keycodes habe ich, wie schon erwähnt ausgelesen und weiß, bei welchen Kontakten ich für welche Taste eine Verbindung herstellen muss.
    Das RPi3 hat laut Aufzeichnungen bei den GPIOs neben dem 3V3 auch einen 5V Pin, daher dachte ich, dass das Anklemmen kein Problem darstellen sollte. Die Eingabe (Keycodes) des Chips sollte aber ausgelesen werden können meinst du?
    Dein letzter Satz bezieht sich auf mein Anliegen eine Maus zu emulieren, nehme ich mal an? Und auch das sollte deiner Aussage nach grundsätzlich möglich sein.

    dbv:
    Danke für den Tipp, werde mich auf GitHub auch nochmal umsehen!
    Ich weiß, es könnte eng werden, aber ich bin sehr zuversichtlich, dass ich für alles genügend Platz finde :)

  • Wenn Du noch mehr Platz brauchst, dann besorge Dir eine Standard Cherry Tastatur vom Computerschrott. Die haben i.d.R. einen SMD Chip welchen man mit dem zum IC passenden Quarz, auf eine kleine Platine löten kann, damit verringert sich der Platzbedarf der Platine erheblich. Als Alternative könnte man auch einen I2C I/O Portexpander verwenden um die Tasten an den RPi zu bekommen, dann müsste man sich aber noch etwas überlegen, wie das Betriebssystem die Tastenbedienung auswerten kann. Dass sollte bei der Verwendung einer USB Tastatur, aber kein Problem sein.

    Einmal editiert, zuletzt von Fliegenhals (21. März 2017 um 16:43)

  • Danke Fliegenhals, RTFM und dbv für eure Rückmeldungen!

    Fliegenhals:
    Also Platzprobleme sehe ich bis jetzt noch keine wesentlichen, werde mir den Portextender aber auf jeden Fall noch im Hinterkopf behalten. Bei der jetzigen Planung würden für die Platine wahrscheinlich 7 GPIOs (4x3 Matrix) plus GND und 3V3 bzw. 5V anfallen, die hätte ich locker noch zur Verfügung - der Bildschirm braucht nämlich nicht ganz so viele.

    dbv:
    Vielen Dank, damit kann ich auch schon was anfangen! Ein Bild kann ich dir gerne zukommen lassen, sobald das Projekt fertig ist - wird aber noch etwas dauern, da ich noch die Frage nach der Sinnhaftigkeit eines Akkubetriebes und dessen Laufzeit noch klären muss. Werde mich dazu wahrscheinlich die Tage auch an diese Community wenden.

    Was ich bezüglich des Platzes allerdings noch anstrebe, wäre ein Austausch der Double USB Buchsen mit Single USB Buchsen (mir sollten zwei USB Anschlüsse reichen). Damit würde ich mir etwas an Höhe einsparen und ich hätte am RPi3 so gesehen 2mal 4 Lötstellen der 4 USB Pins frei, auf welche ich direkt mit den Kabeln der Keyboardplatine gehen könnte. Sollte ja theoreitsch hinhauen (sofern ich die Kabeln nicht untereinander vertausche). Damit wäre die "USB-Tastatur" im Grunde ganz normal am USB angeschlossen - nur dann eben dauerhaft ohne Steckverbindung mit Männchen und Weibchen, was ich ohnehin beabsichtige. Das sollte alles auch nochmal um einiges einfacher gestalten. Anbei nochmal ein Foto diesbezüglich mit den Lötstellen, von denen ich spreche.

    MfG dropkickz

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!