Eine riesige Anzahl von Tasten auf einem Raspberry Pi

Ich arbeite mit einem Freund (er hat die Vision, baut die Struktur, ich arbeite an der Elektronik) an einem großen Projekt, bei dem ein Raster von Bildern auf Knopfdruck von einer LED beleuchtet wird. Er plant, 1000 Bilder mit jeweils eigenen Schaltflächen zu haben. Ich plane, das gesamte Projekt auf einem Raspberry Pi auszuführen. Die LEDs gehen durch SPI. Ich habe Probleme herauszufinden, wie ich eine so große Anzahl von Tasten anschließen und überwachen kann (ich habe viel mit LEDs gearbeitet, aber wenig Erfahrung mit der Überwachung mehrerer Eingänge). Ich habe mir ein paar Optionen ausgedacht und frage mich, welche die beste ist, wenn dies überhaupt machbar ist:

  1. Eine Reihe von Tastaturscanner-ICs (wie der TCA8418 oder LM8330), die mit einem I2C-Multiplexer verbunden sind, der mit dem RaspberryPi verbunden ist. Ich weiß nicht, ob dies eine angemessene Reaktionszeit hätte oder ob bestimmte Bereiche der Tastatur nicht reagieren würden, während andere aktiv wären.
  2. Mehrere kleinere Arduinos überwachen eine kleine Anzahl von Tasten, die Informationen an den Pi zurückgeben. Wir könnten mehr simultane Pressen handhaben, aber es scheint die teuerste Option zu sein.

Kann eine dieser Optionen auf einem einzelnen RaspberryPi mit guten Reaktionszeiten ausgeführt werden? In diesem Szenario ist es weniger wichtig, mehrere Druckvorgänge zu registrieren, als etwas zu haben, das schnell auf jeden einzelnen Druckvorgang reagiert.

Zur Verdeutlichung: Ich habe nicht viel Erfahrung damit, große Schaltungen selbst zu entwerfen oder mit ICs zu arbeiten. Ich weiß bereits, dass Leute Fragen zur Unterstützung von etwa 100 Schaltflächen gestellt haben, ich habe nur nichts in dieser Größenordnung gesehen. Ich weiß, dass es theoretisch möglich ist, jetzt möchte ich wissen, ob es praktisch ist.

Antworten (2)

Es könnte sicherlich funktionieren, I2C kann ziemlich schnell laufen. Stellen Sie einfach sicher, dass die von Ihnen verwendeten ICs einen Adressraum unterstützen, der breit genug ist, um auf demselben Bus zu sitzen. Das Schöne an I2C ist, dass es Multimaster ist, wenn Sie einen IC finden, der Ihren Hauptcontroller wissen lassen kann, wenn eine Taste gedrückt wurde, sollte das gut funktionieren. Selbst wenn Sie auf Abfragen zurückgreifen müssen, sollte der Himbeer-Pi in der Lage sein, diese Last problemlos zu bewältigen.

Die Reaktionszeiten können Sie grob berechnen, indem Sie die Zeitdiagramme im Datenblatt durchgehen und ein wenig experimentieren. Beginnen Sie damit, wie lange Sie brauchen, um die Daten überhaupt zu erfassen. Sofern es nicht irgendwo einen schrecklichen Engpass gibt, sollte es schnell genug für Ihre beabsichtigte Funktion laufen.

Raspberry Pi (der Broadcom-Chip) unterstützt kein Multimaster-I2C. Es unterstützt jedoch Clock-Stretching.
Wusste nicht, dass ... das ist ein seltsames Versehen.
Es ist ein Versehen auf Ihrer Seite, aber eine Designentscheidung für das RPi
Fair genug. Es scheint nur seltsam, eine grundlegende Funktionalität für ein Standardprotokoll nicht zu integrieren. Was könnte man gewinnen, wenn man diese Funktionalität weglässt?

Es hängt zu einem großen Teil davon ab, wie weit Ihre Tasten voneinander entfernt sind, es hängt auch von der potenziellen Notwendigkeit ab, mehrere gleichzeitig aktivierte Tasten zu unterstützen.

Ich würde vorschlagen, dass Sie einen einfachen PC-Tastatur-Controller verwenden könnten (Tastaturen sind wirklich billig), er unterstützt etwa 104 Tasten (Tasten) und bietet N-Key-Rollover, sodass Sie viele Tasten gleichzeitig sehen können. Wenn Sie einen Tastatur-Controller verwenden, können Sie ihn über USB anschließen, mehrere über einen Hub verbinden (ein 8-Port-Hub würde Ihnen etwa 800 Tasten geben) und die Software für ein Tastaturgerät ist einfach zu schreiben.
Wenn Sie Tastaturen mit USB-Buchsen erhalten, haben sie bereits einen internen Hub, sodass Sie sie auch auf diese Weise serialisieren können.

Bei vielen Tastaturen befindet sich der Controller auf einem kleinen separaten Motherboard, das von der Tastenmatrix getrennt ist, was die Dinge schön und einfach macht. Ich habe viele Tastaturen zerschnitten, nur um die Funktionstasten für verschiedene Projekte zu bekommen, und es funktioniert gut.