Joy2PS2 Mini V3
Publicado: 17 Ene 2018, 10:54
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:
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:
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:
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
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:
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:
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