Keyboard-Tastatur per GPIO anschließen

  • Hallo,

    ich habe vor, aus einem Raspberry Pi einen Synthesizer zu bauen. Da ich vor Jahren eine alte Keyboard-Tastatur ersteigert habe, dachte ich daran sie für das Projekt zu verwenden. Die Tastatur stammt direkt aus einem Keyboard, hat also keinen USB-Anschluss. Was ich habe, ist ein Plan über die Verdrahtung (siehe Anhang):

    Ehrlich gesagt werde ich mangels tiefgehender Elektrotechnikkenntnisse nicht ganz schlau aus dem Plan. Meint ihr, dass es möglich ist, die Tastatur über GPIO an den Raspberry Pi anzuschließen und über Software Midi-Signale zu generieren?


    Vielen Dank im Vorraus!

  • Ich bin mir nicht ganz sicher ob der Pi genug Eingänge hat. Hab seit einer Weile nicht mehr mit ihm gearbeitet. Also das Prinzip ist jede der Tasten durch die Kombination aus A || B || C || D und den Leitungen 1-12 eindeutig identifiziert werden.

    Falls meine Elektronikkenntnisse noch halbwegs was taugen, sollte wenn du z.B. die Taste A1 drückst an dem Pin A eine "0" bzw. "Low" anliegen und am ersten Pin. die mit den Dioden verbunden sind sollte eine "1" bzw. "High" ankommen. Könnt auch umgekehrt sein bin mir aktuellt nicht mehr so sicher. Das ganze ist quasi wie eine 4x12 Matrix aufgebaut.

    Hoff ich konnte dir ein wenig helfen.

    Einmal editiert, zuletzt von Jindo (18. Februar 2014 um 21:23)

  • Das ist eine Matrix-Tastatur.

    Sie hat 4 Eingaenge: A B C D

    Diese Eingaenge sind immer mit einer ganzen Gruppe
    von Schaltern verbunden.

    Die Tastatur abzufragen geht so:

    - A ansteuern
    - Checken ob die Spannung bei einem der Ausgaenge wieder ansteht

    - B ansteuern
    - Checken ob die Spannung bei einem der Ausgaenge wieder ansteht

    - C ansteuern
    - Checken ob die Spannung bei einem der Ausgaenge wieder ansteht

    - D ansteuern
    - Checken ob die Spannung bei einem der Ausgaenge wieder ansteht

    Wenn nirgenwo etwas ansteht, ist kein Schalter gedrueckt.

    Wenn irgendwo etwas ansteht, ist beim Kreuzungspunkt vom entsprechenden
    Eingang und dem Ausgang die Taste gedrueckt.

    Fuer jede Taste gibt es also eine bestimmte Kombination von Eingang der
    angesteuert wird und einem Ausgang wo die Spannung wieder ansteht.

    Alle Tasten ohne weitere Hardware auszulesen wird nicht moeglich sein,
    weil der PI nicht so viele Ein und Ausgaenge hat.

    An die Eingaenge kommt je ein GPIO, der aktive muss +3.3V liefern.

    An die Ausgaenge sollte ein Pull-Down Widerstand von ein paar Kiloohm
    angeschlossen werden. Bei einer gedrueckten Taste wird ein Eingang
    High.

  • Super, danke für die schnellen und ausführlichen Antworten! Ich werde mich dann mal nach einem passenden Erweiterungsmodul umsehen.

    So, wie ich euch verstehe, kann ich über die Ein- und Ausgänge bloß feststellen, welche Taste gedrückt ist. Was ich mich jetzt noch frage:
    - Mehrere Tasten gleichzeitig drücken und erkennen sollte so auch möglich sein, oder?
    - Kann man auch so etwas wie eine Anschlagdynamik damit realisieren?

  • Ok, nun lag das Projekt bei mir einige Zeit brach, aber jetzt kann ich es fortführen. Es sind mit der Zeit auch noch weitere Fragen aufgekommen:

    Tell: Am Ende bringst du glaube ich Ein- und Ausgänge von Tastatur und RPi durcheinander, oder? Und was meinst du mit "der aktive muss +3.3V liefern"?

    Also ich habe es so verstanden, dass alle GPIO-Pins grob gesagt 0V als LOW betrachten und +3.3V als HIGH. 4 GPIOs des RPis verwende ich dann als Ausgänge, um ein HIGH an die 4 Eingänge A, B, C, D der Tastatur zu legen. Dann kann ich weitere 12 GPIOs des RPis als Eingänge verwenden, die ich mit den 12 Ausgängen der Tastatur verbinde, um entsprechend deiner Beschreibung die gedrückten Tasten zu ermitteln.
    Für mich sind damit 4 + 12 = 16 GPIOs des RPis belegt. Soviel hat er doch, warum kommst du auf mehr?

    Tell:

    Zitat

    An die Ausgaenge sollte ein Pull-Down Widerstand von ein paar Kiloohm
    angeschlossen werden. Bei einer gedrueckten Taste wird ein Eingang
    High.


    Hier meinst du mit den Ausgängen die des RPis, oder? Also die 4 die an A-D der Tastatur gehen?
    Wir berechne ich mir die genaue Ohmzahl der Widerstände?


    Zu meinen Fragen aus dem letzten Post:
    - Wäre es möglich, dass ich anstelle von logischem LOW und HIGH auch ein PWM Signal an meinen 12 RPi-Eingängen ablesen kann, um die "Anschlagdynamik" bzw. "Drucktiefe" der gedrückten Taste zu ermitteln? Kann ich sowas von der Tastatur erwarten, oder wäre das komplizierter zu realisieren? Ich meine unter der Tastatur sind für jede Taste Dioden angebracht, das überprüfe ich aber nochmal.

  • Ich hab nachgezaehlt: 4 Ausgaenge und 12 Eingaenge -> 16 GPIO. Vermutlich habe ich
    beim letzten mal die Pins auf dem Stecker gezaehlt, sorry.

    Jetzt gilt es sorgfaeltig abzuzaehlen, ob der Pi so viele freie GPIOs hat. Das wird wohl knapp !

    Fuer einen ersten Versuch reicht es aber sicher:

    * Vier GPIOs als Ausgaenge schalten. Die kommen an die Steckerpins A - D
    * So viele GPIOs wie noch verfuegbar sind als Eingang schalten. Die kommen
    an den zweiten Stecker, beginnend beim zweiten Pin. Von jedem einen
    Widerstand nach GND. Wie gross der Widerstand ist, spielt keine Rolle,
    er dient bloss als Pull-Down. Ich wuerde so 4.7KOhm nehmen, aber
    10KOhm ist genau so gut.

    Und jetzt zur Software:

    EINEN Ausgang auf High stellen (3.3V) und pruefen ob ein Eingang ebenfalls High ist.
    Wenn ein Eingang High ist, dann ist die Taste auf dem Schnittpunkt vom Ausgang
    und dem Eingang gedrueckt.

    Wenn kein Eingang High ist, den ersten wieder auf Low (0V) und den naechsten auf
    High, Eingaenge pruefen ...

    => Also immer EINEN Ausgang einschalten und pruefen ob ein Eingang aktiv ist

    - - - -

    Nach dem Schema sind das reine Schalter. Ich glaube nicht, dass man damit die
    Anschlagdynamik erkennt. (Auf jeden Fall wuesste ich nicht wie)

  • Tell: Besten Dank! Noch eine Frage:

    Zitat

    Die kommen an den zweiten Stecker, beginnend beim zweiten Pin

    Stimmt, auf dem Bild ist es so eingezeichnet. Hast du eine Erklärung dafür? Wofür ist der erste Pin?

    Mathias: Ich war jetzt davon ausgegangen, dass das Modell B+ auf jeden Fall genügend freie GPIOs mitbringt. Du bist doch in Besitz von einem, hat das Modell nicht 14 GPIOs mehr als sein Vorgänger?

  • morph*

    Ich häng hier nun auch gerade bei der Frage mit dem RPI und dem Software-Synthesizer.

    Ist es da nicht einfacher sich ein USB-Keyboard (30 - 70 Euro) zu kaufen und das ganze evtl. mit den Software-Synthesizern via Debian per JACK laufen zu lassen?

    Wenn man LMMS zum Laufen bekommt sollte das Komponieren von neuen Songs doch nicht so schwer sein.
    :denker:

Jetzt mitmachen!

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