¿Puedo hacer un teclado USB completo con Makey Makey + Raspberry Pi

15

Recientemente compré el Makey Makey (basado en Arduino Leonardo / ATMega32u4), con la esperanza de construir un teclado USB completo estilo steampunk a partir de algunas partes metálicas. Antes de que llegara, volví a leer los detalles y me di cuenta de que solo tenía 18 entradas posibles, por lo que 85+ teclas no funcionarían. ¿Alguien tiene ideas de cómo podría crear una bestia así, posiblemente con una Raspberry Pi? (que se conecta con bastante facilidad, de publicaciones anteriores )

sventechie
fuente
Eso es asombroso.
Jivings
1
En lugar de una entrada para cada tecla, puede usar una matriz y usar las 18 entradas para manejar 81 teclas (una matriz de 9x9), por lo que sé, el RPi tiene menos entradas que el arduino, así que no creo que ayude.
Craig
@Craig, entonces te refieres a combinar entradas como esta: arduino.cc/playground/Main/KeypadTutorial
sventechie
@sventech sí. No estoy familiarizado con el makey makey, así que no sé cómo interactuará su conmutación de alta resistencia con la matriz.
Craig

Respuestas:

6

Si solo quiere hacer un teclado, sin usar su Makey Makey, puede hacerlo usando la funcionalidad GPIO de la Raspberry Pi. Pero como comentamos antes, la Raspberry Pi no tiene suficientes pines disponibles para hacer un teclado que sea realmente útil.

Sin embargo, si está dispuesto a agregar 2 circuitos integrados, puede hacerse un teclado con tantas teclas que tendrá un problema para encontrar una función para cada tecla.

Mi sugerencia es conectar 2 I2C IC al bus I2C en la Raspberry Pi, y usarlos para crear su propia matriz de escaneo.

Si usa un PCF8574, tiene 8 pines de E / S disponibles, si obtiene un PCF8575, incluso tiene 16 pines de E / S disponibles. Al combinarlos, puede obtener una matriz de escaneo de:

  • 64 teclas: (2x PCF8574)
  • 128 teclas: (1x PCF8574 y 1x PCF8575)
  • 256 teclas: (2x PCF8575)

Debe usar siempre uno de ellos como salida y uno como entrada. En la salida, deja que un bit "camine" del bit 0 al bit n (7 o 15), estas son las columnas de la matriz. Por otro lado, lee constantemente el valor de la entrada y estas son las filas de la matriz. La combinación de qué bit de salida está activo y qué bit de entrada es '1' es la tecla que se presiona.

principio de la matriz de escaneo

En realidad, crear la matriz es la mayor parte del trabajo, y mientras lo hace, no olvide agregar un diodo después de cada interruptor que coloque en la matriz, este diodo (un 1N4148 normal funcionará bien) debe colocarse con el ánodo al interruptor y el cátodo a la línea de la fila. La caída de voltaje de 0.6V sobre este diodo no debería ser un problema, el 2.7V restante (3.3V-0.6V) debería ser un '1' lógico.

matriz práctica de escaneo

La razón de este camión lleno de diodos es que evitará cosas como el efecto fantasma y el enmascaramiento de las llaves. El efecto fantasma es el efecto de que si presiona más de tres teclas al mismo tiempo, es posible que se interprete como una tecla totalmente diferente porque más filas tendrán un '1' lógico. El enmascaramiento es el efecto de que, si tiene varias teclas presionadas y suelta una tecla, esto (en algunas situaciones) no se detectará porque la fila de esa tecla sigue siendo un '1' lógico.

ejemplo fantasma

La imagen muestra un ejemplo de efecto fantasma, se presionan los botones A, B, D y además de la Fila 1 (para el botón A) también la Fila 2 (para el botón C) es alta, en este momento la Columna 1 está activa, lo cual no es correcto.

Después de toda la aventura de hardware, debe escribir o adaptar un controlador de kernel para usar realmente el teclado en Linux. Un buen punto de partida podría ser este enlace: Controlador para las teclas en el expansor IOC TCA6416 I2C , esta es una idea similar, pero solo utiliza un teclado de 16 teclas.

Espero que esto te ayude un poco.

ikku
fuente
3

Si desea hacer un teclado completo para escribir, probablemente sería mejor con el IC fuera de un teclado USB. O conserve la PCB en sí misma enterrada en lo profundo de su sistema donde no se puede ver y conecte los cables a sus conmutadores, o fabrique algo personalizado con la misma matriz.

Si realmente necesita cambiar la matriz eléctrica, es posible que necesite hacer su propio diseño desde cero, pero de lo contrario no es realmente necesario.

Incluso con una placa personalizada, puede terminar con algo que enumera y funciona como un teclado USB, eliminando la necesidad de controladores personalizados.

Chris Stratton
fuente