Emulador de teclado PS/2 para ZX-Uno

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Emulador de teclado PS/2 para ZX-Uno

Mensajepor antoniovillena » 23 Mar 2015, 20:27

Editado. Este proyecto lo desarrolla Quest al 100%. Yo sólo he abierto el hilo. Se trata de un emulador de teclado para el ZX-Uno que a la vez le da alimentación, por lo que podemos disfrutar del ZX-Uno con sólo 2 cables (Compuesto y PS/2). Evidentemente hay que tener un PC o portátil al lado que hace la función de teclado.

Funciona perfectamente, los archivos están en el repositorio del ZX-Uno, carpeta hardware/otros/zxuno_uart2ps2.

Lo único que hay que soldar es el otro extremo de un cable PS/2 a una tira de 5 pines hembra, todo lo demás viene ya hecho de fábrica (excepto soldar las tiras de pines al arduino).

Pongo un par de fotos para que veáis el aspecto que tiene.

Imagen

IMG_20150323_200526.jpg
IMG_20150323_200526.jpg (146.56 KiB) Visto 6049 veces


IMG_20150324_195423.jpg
IMG_20150324_195423.jpg (151.23 KiB) Visto 5890 veces


IMG_20150324_210327.jpg
IMG_20150324_210327.jpg (292.63 KiB) Visto 5890 veces



Para el que se lo quiera hacer, pongo los enlaces donde se puede comprar el Arduino y el conversor USB-serie:

http://www.aliexpress.com/item//2021666535.html
http://www.aliexpress.com/item//32256355230.html

El conector PS/2 se puede desguazar, pero para los que no tengáis esa posibilidad aquí venden un cable con 2 conectores por menos de 3 euros, se puede partir y da para dos emuladores de teclado.

http://www.ebay.com/itm//261801227281

En total sale por 4 euros, yo creo que por ese precio merece la pena.

Código: Seleccionar todo

Botón   Make      Release
--------------------------
A       $41 (65)  $C1 (193)
B       $42 (66)  $C2 (194)
C       $43 (67)  $C3 (195)
D       $44 (68)  $C4 (196)
E       $45 (69)  $C5 (197)
F       $46 (70)  $C6 (198)
G       $47 (71)  $C7 (199)
H       $48 (72)  $C8 (200)
I       $49 (73)  $C9 (201)
J       $4A (74)  $CA (202)
K       $4B (75)  $CB (203)
L       $4C (76)  $CC (204)
M       $4D (77)  $CD (205)
N       $4E (78)  $CE (206)
O       $4F (79)  $CF (207)
P       $50 (80)  $D0 (208)
Q       $51 (81)  $D1 (209)
R       $52 (82)  $D2 (210)
S       $53 (83)  $D3 (211)
T       $54 (84)  $D4 (212)
U       $55 (85)  $D5 (213)
V       $56 (86)  $D6 (214)
W       $57 (87)  $D7 (215)
X       $58 (88)  $D8 (216)
Y       $59 (89)  $D9 (217)
Z       $5A (90)  $DA (218)
0       $30 (48)  $B0 (176)
1       $31 (49)  $B1 (177)
2       $32 (50)  $B2 (178)
3       $33 (51)  $B3 (179)
4       $34 (52)  $B4 (180)
5       $35 (53)  $B5 (181)
6       $36 (54)  $B6 (182)
7       $37 (55)  $B7 (183)
8       $38 (56)  $B8 (184)
9       $39 (57)  $B9 (185)
Esp     $20 (32)  $A0 (160)
Enter   $0D (13)  $8D (141)
Caps    $10 (16)  $90 (144)
Symbol  $11 (17)  $91 (145)
Última edición por antoniovillena el 25 Mar 2015, 18:51, editado 7 veces en total.

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor Quest » 23 Mar 2015, 21:17

Veo que has abierto ya el hilo :) He tenido mucho lío hasta ahora y no había podido hacerlo. Gracias.

Esta noche después de cenar lo reviso.

De todos modos el sistema de mapeo que has planteado no lo termino de ver. Sería mucho más cómodo (a mi modo de ver) y se parecería mucho más al teclado real, hacer el sencillo programa PC que envíe los scancodes puros PS/2 (el mapeo así se traslada a ese programa PC en vez de al arduino) y no dependes de pulsaciones dobles ni raras ni tienes que reetiquetar el teclado. Además no haría falta hacer traducción de makes y releases. Pero como tú veas. Haré unas pruebas esta noche.
^^ Tacho lo de arriba, no había leido bien tu post. Acabo de releerlo y según entiendo, planteas un mapeo "compatible" tanto con tu programita PC como con un emulador de terminal, correcto?

Para subir .hex hechos con AVR-GCC al arduino yo uso el programa XLoader.

-- Actualizado 24 Mar 2015, 14:17 --

Bueno, pues ya tengo listo un primer test.
He tenido que rehacer parte, porque lo que tenía no funcionaba bien con algunas combinaciones y además no implementaba make/release.

He subido al repositorio (hardware/otros/zxuno_uart2ps2) una pequeña prueba de concepto para ver si funciona en más PCs y ZX-unos que los míos, antes de terminar bien el mapeo, limpiar el código fuente, y subirlo.
Antonio, prueba por favor lo que he subido y si te funciona bien termino lo que falta y subo los fuentes.

La prueba consiste de:

- El .hex para subir al arduino. Tienes que conectar, del conector PS/2, DATA al pin 3 y CLK al pin 2. No conectes VCC y GND al ps/2 si vas a alimentarlo por el microUSB. Si lo vas a alimentar por el propio puerto ps/2 desde el propio arduino, conecta ambos cables pero evidentemente no le metas también el microUSB.

- Un pequeño programa en VB para Windows que envía los make/release propios basándose en eventos KeyDown/KeyUp. No son los de tu ejemplo de momento, son unos propios que suman 0x80 (128) a los makes para obtener los releases. De momento he hecho que funcionen casi todas las combinaciones especiales (master reset, nmi, etc..), las teclas de función, extendidas, etc (aun sin acabar al 100%)

- MSCOMM32.OCX por si no lo tienes instalado y registrado. Para x86 meterlo en /windows/system32 y registrarlo con regsvr32 con permisos de administrador. Para x64 meterlo en /windows/syswow64 y hacer lo mismo.

- Programa XLoader, para subir el .hex al arduino. Si tienes un pro/mini/nano o clones selecciona en device "Duemilanove/Nano(atmega328)"

Lo dicho, pruea a ver si te funciona todo y me comentas.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor antoniovillena » 24 Mar 2015, 15:21

Gracias. Lo pruebo esta noche. Tengo un pro mini como el de la foto, tendría que seguir dicho pineado. Si no es el mismo, por favor sube el .c para que pueda cambiarlo yo.

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor Quest » 24 Mar 2015, 15:30

Es el mismo. Sólo tienes que conectar, tal como he comentado, del conector ps/2, DATA al pin etiquetado como "3" en el arduino y CLK al pin etiquetado como "2".

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor antoniovillena » 24 Mar 2015, 15:42

Es que no tengo mucho material, sólo soldador y tira de pines hembra. Tendrás que esperarte al sábado para probar con ese pineado

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor Quest » 24 Mar 2015, 16:21

antoniovillena escribió:Es que no tengo mucho material, sólo soldador y tira de pines hembra. Tendrás que esperarte al sábado para probar con ese pineado


:?: :?: Si tienes soldador, ¿dónde está el problema?

No se si nos hemos entendido... sólo tienes que conectarlo como lo tienes en la foto pero en la tira de pines hembra donde tienes soldados 4 cables del conector PS/2, pues que cambies los 2 que te he dicho de tal modo que puedas pinchar la tira de pines en el arduino donde esos 2 cables queden en el pin 2 y en el pin 3. Los otros 2 (gnd y +5v) no te hacen falta soldarlos si vas a alimentar el zx-uno con el usb.

En las fotos que pones, en la 1ª no se ven las serigrafías de los pines (por el ángulo de la foto imagino), y en la 2ª pues es imposible saber por el color de los cables qué 2 son DATA y CLK. Así que no puedo adivinar tu montaje (tampoco se muy bien de dónde te sacaste ese pineado, lo pusiste al azar?)

Prueba y me cuentas. Perdona que no pueda subir el fuente ahora mismo, no lo tengo aquí. Será por la noche.

EDITO: retiro la imagen que esta mal.
Última edición por Quest el 24 Mar 2015, 20:33, editado 1 vez en total.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor antoniovillena » 24 Mar 2015, 18:02

Vale entonces la he conectado yo mal, perdona. Los pines son gnd, rst, vcc, a3 y a2. No te preocupes yo sigo en el trabajo. Hasta la noche no podré probarlo

-- Actualizado 24 Mar 2015, 20:08 --

Bueno, ya he llegado a casa. Voy a rectificar mi error y tachar la imagen que está mal, poniendo aquí la correcta. El pin del extremo es CLK.

arduino_mini_pinout.png
arduino_mini_pinout.png (75.7 KiB) Visto 5935 veces


IMG_20150324_195423.jpg
IMG_20150324_195423.jpg (151.23 KiB) Visto 5935 veces

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor Quest » 24 Mar 2015, 20:17

No.
Tu hazme caso:

- DATA conéctalo en "2" no en "AD3"
- CLK conéctalo en "3" no en "AD2"
- +5V y GND *NO los conectes*: El ZX-UNO es el HOST, es el que provee los +5V al teclado (en este caso el teclado es el arduino). Pero como el arduino YA ESTÁ alimentado por el conversor USB-Serie (fijate que están conectados al header del conversor VCC y GND), le estarías metiendo *2 veces* la alimentación, por un lado la que el ZX-UNO le mandaría (a través del conector Ps/2) y por el otro la que el ordenador le mandaría a través del conversor USB-Serie.

Insisto. Hazlo como te digo y te funcionará perfecto. Sólo son 10 segundos de cambio de soldaduras en la tira de pines.

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor antoniovillena » 24 Mar 2015, 20:26

Lo haré como dices pero esto me obliga a tener que alimentar el ZX-Uno por separado y no puedo usar una fuente aparte, sino que tendrá que ser un puerto USB del mismo PC para que tengan la misma masa.

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: Emulador de teclado PS/2 para ZX-Uno

Mensajepor Quest » 24 Mar 2015, 20:31

antoniovillena escribió:Lo haré como dices pero esto me obliga a tener que alimentar el ZX-Uno por separado y no puedo usar una fuente aparte, sino que tendrá que ser un puerto USB del mismo PC para que tengan la misma masa.


Ah, entonces no hay problema. Puedes ponerlo como lo tengo yo, yo alimento al ZX-UNO a través del puerto ps/2, no a través de una fuente aparte ni del usb del ordenador. Yo tengo conectados los cables de +5v y GND del cable ps/2 al arduino y el puerto USB del ordenador es el que provee de corriente, a través del conversor USB->serie al arduino y por tanto al ZX-UNO.

Dejalo como lo tienes, no lo toques (dejalo con el AD3 y AD2 todo tal cual), que ya hago los cambios yo en un rato. A no ser que no quieras esperar, que entonces puedes dividir la tira de pines con unas tijeras en 2 partes, y asi la parte donde esta data y clk la puedes poner en el otro lado (2 y 3). Por cierto la imagen que puse la puse al revés! lo siento, data es al 2 y clk al 3 :oops:
Última edición por Quest el 24 Mar 2015, 20:32, editado 1 vez en total.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados