Página 1 de 1

Joy2PS2 Mini V3

Publicado: 17 Ene 2018, 10:54
por spark2k06
Os presento una nueva versión mejorada de Joy2PS2. Un formato mas pequeño, todo tecnología trhouth hole y con el chip atmega 168 en socket para un reemplazo fácil o para ampliar al 328 en caso de que el firmware en un momento dado se quede pequeño para la versión 168:

Imagen

Al disponer de cables PS/2 macho y hembra, es posible conectar varios en cascada para jugar a tantos jugadores como se quiera... en tal caso, cada cual debería llevar mapeado en su firmware una combinación de teclas distintas para no interferir con el resto de jugadores. En el futuro, y dependiendo de la aceptación y adopción que pudiera tener este invento, la configuración de los mapas podría llevarse a cabo mediante la EEPROM, y con un programa de linux/windows, poder definir las teclas para cada uno y guardarlo en su EEPROM, de manera que ésta sea cargada al conectarse.


Por otro lado, y aquí es donde se encuentra la verdadera mejora respecto a las versiones anteriores, el cable PS/2 hembra permite conectar un teclado PS/2 convencional al mismo tiempo sin ningún tipo de conflicto gracias al diodo que lleva integrado que, combinado con el transistor MOSFET es posible activar y desactivar la bidireccionalidad del mísmo por software. Para éste propósito he actualizado el firmware, de manera que justo en el momento de enviar un scancode por el puerto PS/2, se anula la bidireccionalidad... y una vez enviado se vuelve a permitir, con ésto no sólo consiguimos evitar que haya conflictos con un teclado externo, sino que éste seguirá pudiendo ser inicializado y por tanto será posible usarlo con el core de PC/XT del ZXUno. Si ésto sucede, estaría el problema de que el joystick no se habría cambiado al set 1 de scancodes, pues bien, también lo he resuelto aprovechando el combo del modo shift (BUTTON 1+LEFT), para que, ademas de deshabilitar la escucha de comandos (que así está por defecto para evitar conflictos a la inversa), el joystick cambie entre el set 1 y el set 2 de scancodes sin requerir inicialización para ello.

El firmware de este proyecto está pensado sobre todo para el uso con el ZXUno, gracias a la implementación diversos combos para controlarlo al completo, mas información aquí, sin embargo, como ya he ido mostrando en varios vídeos del foro ZXUno, éste puede ser usado sin problemas en dispositivos que acepten teclado PS/2 como puede ser un PC, o incluso también con USB sin ningún tipo latencia aparente, gracias a este adaptador de PS/2 a USB, también probado y funciona perfectamente incluso en la Mist.

Principales ventajas de usar Joy2PS2 en lugar joystick del ZXUno:

1. Emula el teclado y siempre puede mapearse como se necesite (de momento recompilando el firmware para ello, aunque la tipica de OPQA-SPC-M es la que está por defecto). Practicamente la totalidad de cores del ZXUno permiten el uso de teclado en los juegos, y los que faltaban, ya me encargué de modificarlos para que también se pudiera... porque mi objetivo inicial con este proyecto siempre fue poder usarlo con la mini bartop basada en ZXUno que me estoy construyendo.

2. Jugadores "ilimitados", mediante conexión en cascada de varios Joy2PS2... cada uno debe usar teclas distintas para no interferir en el resto de jugadores.

3. Pocos o ningún juego de Spectrum (que yo sepa) sólo permiten ser utilizados con Joystick de Spectrum, sin embargo sí sucede lo contrario en muchos, que sólo es posible con teclado... precisamente para lo que está preparado Joy2PS2.

4. Joy2PS2 no está limitado al protocolo atari sobre el conector DB9, sino que han sido implementados de forma transparente en el propio firmware muchos otros, como:

MSX (con alguna adaptación física para usar el último botón), Amstrad CPC, VIC 20, Sega Master System, Sega Megadrive de 3 o 6 botones (todos están mapeados), Amiga, ZX Spectrum, y en una próxima actualización, dependiendo de la aceptación y adopción, también NES Famicom DB9, porque requiere un esfuerzo extra para llevarlo a cabo.

He tenido la idea de usar la siguiente caja de un DB15 que venden en Aliexpress bastante económico, que viene bien para quienes no tenemos impresora 3D, aunque no he sido muy bueno calculando el lugar donde llevar a cabo el agujero para que salga el switch del keymapper como se puede observar:

Imagen

Quién se anime puede modificar el diseño para usar todo tecnología SMD y sacar una versión Nano que entre en esta otra caja.

Finalmente, todo conectado creo queda bastante bien:

Imagen

Si queréis ver bien en detalle tanto las virtudes como los defectos, aquí dejo las fotos en alta resolución

Los ficheros Eagle se encuentran la carpeta github que he preparado, facilito la lista BOM al final de este post por si alguien se anima a hacer alguna tirada... yo en esto prefiero mantenerme al margen para centrarme y llevar a buen puerto el proyecto Sugarless +2 en el que estoy metido.

El firmware debe ser cargado mediante un programador ICSP como el USBAsp, aquí lo tenéis a buen precio.

Nota. A la hora de programarlo, hay que desactivar el fusible CKDIV8, para que trabaje a 8Mhz en lugar de a 1Mhz, que es la configuración que viene por defecto de fábrica.

Pedido de 3 PCBs en OSHPark por 9,45$ y gastos de envío incluidos.

Listado BOM

Para la versión mini:

Atmega168 DIP x 10 = 1,86€/u

28 DIP Socket x 10 = 0,13€/u

Kit de Caja y conector DB15 breakout x 1 (solo se necesita la caja) = 2,36€/u

Diodo throuth hole x 10 = 0,06€/u

Transistor MOSFET BS170 x 10 (o cualquiera de nivel lógico) = 0,14/u

Para una posible versión nano:

Atmega168 SMD x 10 = 1,08€/u

Kit de Caja y conector DB9 breakout x 1 (solo se necesita la caja) = 2,42€/u.

Diodo SMD x 100 = 0,02€/u

Transistor MOSFET IRLML6344 x 10 (o cualquiera de nivel lógico, éste es válido pero demasiado bueno para su función en este proyecto) = 0,18/u

Elementos comunes para las versiones nano y mini:

Conversor PS/2 a USB = 1,31€/u

Conector DB9 x 10 = 0,29€/u

Switch button 6x6x18mm x 100 (si se encuentran algo mas cortos mejor, < 18mm) = 0,04€/u

1x40 rompibles para crear conectores ICSP x 133 = 0,02€/u

Cable PS/2 Macho - Hembra para cortar y soldar a la PCB x 1 = 2,44€/u

Re: Joy2PS2 Mini V3

Publicado: 17 Ene 2018, 14:25
por spark2k06
Ya he puesto el listado BOM al final del primer post.

Edito: Falta por poner el diodo y el transistor MOSFET, en cuanto pueda lo hago.

Re: Joy2PS2 Mini V3

Publicado: 17 Ene 2018, 18:16
por spark2k06
spark2k06 escribió: 17 Ene 2018, 14:25 Ya he puesto el listado BOM al final del primer post.

Edito: Falta por poner el diodo y el transistor MOSFET, en cuanto pueda lo hago.
Ya está todo.

Re: Joy2PS2 Mini V3

Publicado: 19 Ene 2018, 00:37
por Lord Raptor
Te felicito, muy buen trabajo !!
Nunca está de más este tipo de inventos.

Gracias por la investigación y desarrollo.

Re: Joy2PS2 Mini V3

Publicado: 19 Ene 2018, 01:16
por duca750
Grandisimo trabajo. Ya me hixe del zxuno y no lo he probado aun... Tengo delito.

Re: Joy2PS2 Mini V3

Publicado: 19 Ene 2018, 05:55
por spark2k06
Gracias compañeros. A nivel de hardware realmente no tiene misterio alguno, la potencia se encuentra en el firmware. Con esta última actualización que permite controlar la bidireccionalidad del protocolo PS/2 en un teclado externo, podríamos afirmar que a nivel de usuario la experiencia de uso es casi perfecta. Están cubiertos todos los aspectos, incluso quién quiera usarlo en USB con un simple adaptador PS/2 a USB como he comentado, puede hacerlo.

He tratado de ofrecer todas las facilidades en el diseño a nivel económico, tecnológico y práctico para que esté al alcance de cualquiera... de manera que ya sólo queda disfrutarlo :mrgreen:

Re: Joy2PS2 Mini V3

Publicado: 28 Ene 2018, 16:39
por spark2k06
Añado serigrafías en la PCB para facilitar su uso directamente dentro de cajas arcade. De esta manera puede prescindirse del conector físico DB9, soldando los cables del mando arcade y botones directamente en cada pin, y aprovecho para añadir serigrafía de los botones extra en los pines correspondientes del atmega. El diseño propiamente dicho no cambia, sólo añado serigrafias.

Proyecto actualizado en OSHPark para quien quiera hacer un pedido de 3 PCBs con este nuevo diseño directamente desde ahí por 9,45$ y gastos de envío incluidos:

Imagen

Si se quiere usar en cajas con dos mandos arcade se necesitan montar 2 PCBs, y basta con puentear todos los pines de PS2_FEMALE del Jugador 1 con el PS2_MALE del Jugador 2, y usar el PS2_MALE del Jugador 1 para conectar al ZXUno o dispositivo con entrada PS/2 donde quiera ser utilizado (o bien, a un conversor PS/2 a USB para ser utilizado en dispositivos con entrada USB)

Re: Joy2PS2 Mini V3

Publicado: 07 Ene 2019, 11:58
por spark2k06
Reaprovecho este hilo para anunciar una nueva release de Joy2PS2 aquí.
  • Implementación del protocolo de NES Famicom.
Ahora es posible conectar mandos compatibles con Famicom en los puertos DB9, para lo cual será necesario añadir un adaptador como éste:

Imagen

De esta manera es posible combinar mandos Atari y Famicom. Para que el firmware los detecte como Famicom, estos pueden ser conectados antes de conectar Joy2PS2, y conectar este último manteniendo pulsado el botón de Select... o bien, una vez conectados, pasar a modo SHIFT y salir del mismo (con el boton de Keymapper) manteniendo pulsado antes el botón de Select. Si tras salir del modo SHIFT no se ha detectado el protocolo famicom, el puerto o los puertos serán utilizados como Atari/Megadrive, por lo que un mando Famicom en estos no funcionaría, y viceversa, una vez detectado famicom, un mando Atari/Megadrive no funciona en estos puertos... para que funcionen se entra y se sale del modo SHIFT sin hacer nada mas.

A continuación una fotografía de dos mandos, Atari y Famicom funcionando simultáneamente:

Imagen

Y un vídeo de ejemplo:



Si alguien quiere usar este tipo mandos con Joy2PS2 y necesita el adaptador, puede hacer un pedido en oshpark, conseguir un par de conectores macho y hembra y soldarlos a la placa.

Próximamente realizaré los cambios necesarios en el firmware del proyecto Sugarless +2 para añadir también compatibilidad con mandos Famicom en su puerto de Joy2PS2.

Re: Joy2PS2 Mini V3

Publicado: 11 Ene 2019, 07:01
por spark2k06
Preparando el firmware para el sugarless +2, me ha sucedido algo que no esperaba... sin querer he puesto el gamepad famicom sin el adaptador, directo al puerto db9, y funciona! El adaptador no es necesario :-). Os cuento, famicom usa el pin 6 en lugar del 5 para alimentarse con +5v, así que éste es un simple puente para pasar el pin 5 al 6. Pues resulta que el pin 6 para atari lo dejo en pullup, y la corriente proporcionada por el arduino es suficiente para la alimentación del gamepad famicom, con que actualiceis el firmware de joy2ps2 es suficiente para que podáis usarlo.