Repository navigation
Home
Notas sobre la ingeniería inversa realizada sobre un teclado DELL de 105 teclas
- Introducción
- Teclado Dell de 105 teclas, en Español
- Pruebas de lectura con la FPGA
- Teclado multimedia DELL
-
Objetivo: Entender cómo funciona un teclado al más bajo nivel, para poder realizar un controlador de teclado desde cero, con la FPGA. Por el mero hecho de aprender
-
Esta NO es una documentación exhaustiva. Simplemente se muestran algunos de los resultados conseguidos, y pasos intermedios, pero NO es una guía ni un tutorial de cómo realizarlo (se hará en el futuro)
Este es el teclado que se ha utilizado para las pruebas. Es un teclado USB de 105 teclas, de la marca DELL

Se quitan los tornillos de la parte inferior (tiene 14 en total) y haciendo presión se quita la parte superior del teclado. En la parte inferior es donde está todo lo que necesitamos. En ella, en la esquina superior derecha está atornillada la electrónica. La desatornillamos y la sacamos. Cortamos un trozo de la parte superior para dejar hueco para sacar los cables hacia el exterior. Nos queda así:

La parte importante es el conector del PCB flexible, que es el que contiene las conexiones eléctricas con las teclas. En esta imagen se muestra ampliado. En total tiene 29 contactos. El de la izquierda es GND, y NO lo usaremos. Los 8 siguientes se corresponden con las Filas y los 18 restantes con las columnas

Se trata de un teclado matricial, cuyas 105 teclas están organizadas dentro de un matriz de 8 x 18. Mirando las conexiones de los dos PCBs flexibles que tiene, y usando un polímetro para medir la continuidad de las señales, se ha obtenido la disposición de las teclas en la matriz:
| Fila | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 | C18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Insert | F8 | F2 | ª | F1 | Inicio | ¿ | 6 | 5 | ? | Ctrl | Supr | Re Pag | F9 | ||||
| 2 | Impr pant | F12 | 9 | 3 | 1 | 2 | Fin | 8 | 7 | 4 | 0 | Av Pag | F11 | F10 | ||||
| 3 | Alt | 0 (Num) | F4 | ESC | < | Up | F6 | H | G | { | . (num) | F5 | ||||||
| 4 | 5 (num) | F7 | F3 | TAB | Bloq May | * | Y | T | [ | Shift | 6 (num) | 4(num) | DEL | |||||
| 5 | 2 (num) | L | D | A | S | Intro (Num) | K | J | F | Ñ | Win | 3(num) | 1 (num) | |||||
| 6 | Bloq Despl | 8 (num) | O | E | Q | W | + (num) | I | U | R | P | Menu | 9 (num) | 7 (num) | ||||
| 7 | / (num) | : | C | Z | X | Pausa | ; | M | V | } | Shift | Ctrl | Win | * (num) | Bloq num | Enter | ||
| 8 | Alt Gr | Right | Left | N | B | _ | - (num) | down | Space |
Cada tecla es un simple contacto que se cierra al presionar sobre él. Está implementado mediante 4 capas

Empezando por la parte inferior, las capas son:
- Capa 1: PCB flexible, transparente. Contiene el contacto inferior (Determina el número de columna)
- Capa 2: Acetato. Capa no conductora, que tiene agujeros en las zonas de los contactos
- Capa 3: PCB Flexible, transparente. Contiene el contacto inferior (Número de fila)
- Capa 4: Silicona flexible. Tiene partes planas y partes salientes en las zonas de los contactos. Estos tetones flexibles están huecos en el interior, y se deforman al pulsarse. Luego recuperan la forma original
- Capa 5: Es el chásis del teclado, de plástico rígido
- Capa 6: Teclas móviles, que pueden subir y bajar. Estan apoyadas sobre la silicona flexible
En este dibujo se muestra la sección cuando la tecla no está pulsada, y lo que ocurre cuándo se pulsa: El tetón de silicona se deforma y ejerce presión sobre el contacto superior del PCB flexible empujándolo a traváes del agujero del acetato hasta tocar con el contacto inferior

El principio de funcionamiento es el mismo que el de los pulsadores típicos: contacto de dos partes conductoras al apretar la tecla. Por tanto, se modela eléctricamente como un pulsador que tiene dos cables. Uno es el de la fila y el otro de la columna

Las teclas están colocadas en forma de matriz de 8 filas y 18 columnas

Para conectar los pines de los PCBs flexibles al exterior se ha utilizado el propio PCB que tenía originalmente al que se le han quitado todos los componentes discretos que tenía. Sobre las conexiones que había se han colocado tiras metálicas, que van pegadas sobre las originales:

Por la cara superior se ha pegado una tira de 28 pines macho acodados, y se han hecho las conexiones a las tiras metálicas anteriores. Con esto sacamos todas las filas y columnas hacia el exterior del teclado. Ahora ya podemos usar esos pines para conectar cables hembra y llevar las señales a la protoboard o directamente a la Icezum Alhambra

Y así es como queda el frontal del teclado

Las pruebas las haremos a diferentes nivel. En el nivel más bajo tenemos que las teclas son simples pulsadores
Haremos un circuito de pruebas para conectar dos teclas a la FPGA, como si fuesen pulsadores externos corrientes. Los conectaremos a las entradas D13 y D12, como se indica en el Tutorial 12: Interruptores y pulsadores externos
Cada tecla tiene dos cables, uno de la fila y otro de la columna (pero da igual la polaridad). Un cable lo conectamos a una resistencia de Pull-down menor de 2K y a la entrada de la FPGA. El otro cable lo conectamos a 5v
El montaje se muestra a continuación. Se ha utilizado una protoboard para las conexiones.Las teclas usasas son el F11 (fila 2, columna 17) y la tecla DEL (fila 4, columna 18)

El circuito en la FPGA usa dos pulsadores, uno para mover el LED hacia arriba y el otro hacia abajo. Esto se hace bien con los pulsadores SW1 y SW2, o bien con las teclas, que están conectadas en paralelo a los pulsadores anteriores. Además, se emite un pitido cuando se aprieta alguno de los pulsadores

Y en este vídeo se puede ver el sistema en funcionamiento. Primero se usan los pulsadores internos de la Icezum Alhambra, y luego se repite lo mismo pero con las teclas F11 y DEL del teclado tuneado
| Fila | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | xxx | Alt Gr | - (num) | Cursor <-- | xxx | Cursor --> | Cursor Dw | xxx | B | |
| 2 | xxx | xxx | * (num) | Pausa | Win R | / (num) | Bloq num | C | Shift R | V |
| 3 | xxx | Alt | . (num) | Cursor up | xxxx | 0 (num) | xxx | F4 | G | |
| 4 | xxx | Bloq Desp | 9 (num) | + (num) | xxx | 8 (num) | 7 (num) | E | R | |
| 5 | xxx | xxx | 6 (num) | xxx | xxx | 5 (num) | 4 (num) | F3 | Shift L | T |
| 6 | xxx | Impr pant | Av Pag | Fin | xxx | F12 (num) | F11 | 3 | 4 | |
| 7 | xxx | xxx | 3 (num) | Intro (num) | xxx | 2 (num) | 1 (num) | D | F | |
| 8 | xxx | xxx | Re Pag | Inicio | xxx | Insert | Supr | F2 | 5 |
| Fila | C11 | C12 | C13 | C14 | C15 | C16 | C17 | C18 | C19 | C20 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | N | xxx | _ | Space | xxxx | Teclado (esp) | ||||
| 2 | M | ; | : | } | Enter | X | Z | xxx | Ctrl R | Pantalla (esp) |
| 3 | H | F6 | xxx | { | F5 | < | ESC | xxx | ||
| 4 | U | I | O | P | xxx | W | Q | Menu | ||
| 5 | Y | * | F7 | [ | DEL | Bloq May | Tab | |||
| 6 | 7 | 8 | 9 | 0 | F10 | 2 | 1 | |||
| 7 | J | K | L | Ñ | xxx | S | A | Win L | ||
| 8 | 6 | ¿ | F8 | ? | F9 | F1 | ª | Ctrl L |
-
distribuidor sparkfun españa: https://www.electan.com/contact_us.php
-
https://www.sparkfun.com/products/7836 Goma con fondo contuctor, para hacer botones
