cómo utilzar el puerto paralelo como decodificador de botones

Upload: lester-david-morales-hernandez

Post on 20-Jul-2015

281 views

Category:

Documents


6 download

TRANSCRIPT

Cmo utilzar el puerto paralelo como decodificador de botones (key encoder)Cuando conectamos nuestro ordenador a la maca en lugar de utilizar la placa base original (entre otras cosas para usar MAME) necesitamos que los botones y palancas del panel de control de la maca se comuniquen con nuestro PC. En el mercado existen soluciones comerciales tales como la tarjeta IPAC / JPAC distribuidas por Ultimarc. Esta tarjeta se conectan por un lado al conector JAMMA que trae la maca, y por otro se saca un cable hasta el puerto PS/2 del PC. De esta manera al pulsar los botones de la maca o mover las palancas, la tarjeta JPAC recibe esos impulsos, los convierte en seales elctricas como si provenieran de un teclado, y las manda al puerto PS/2 del PC. De esta manera el PC recibe pulsaciones de tecla, aunque en realidad provienen del panel control de la maca. Esto es lo que se conoce con el nombre de Key Encoder. El problema est en que estas soluciones comerciales suelen ser caras. Aqu os presentamos un mtodo casero para construirnos un Key Encoder al que por un lado recibe todos los cables que salen del panel de control de la maca (botones y palancas) y por el otro se enchufa al puerto paralelo (el de la impresora) del PC, en lugar de al puerto PS/2 como en el caso del JPAC.

Ventajas del sistemaBajo coste: No se necesitan sino componentes electrnicos simples como son los diodos y un cable de impresora. Se puede construir todo el interfaz por unos 10?, aunque si disponemos ya de algn cable paralelo por casa (cosa comn pues las impresoras que se conectaban al puerto lpt han quedado desfasadas), el interfaz queda casi gratis. Reconocido por windows como joystick: As que podemos usar el panel de control en todos los emuladores y adems en casi todos los juegos de pc sin ningn programa extra o configuracin extraa. Posibilidad de uso de Joytokey al ser reconocido como un joystick: Lo que nos abre la posibilidad de configuraciones casi ilimitadas, por ejemplo asignarle Alt F4 a un solo botn para cerrar los emuladores ms rebeldes y mover el ratn con nuestro joystick. Elevado nmero de botones: 60!, as que es perfecto para paneles de control de cuatro jugadores. Funcionamiento perfecto sin 'ghosting' ni 'blocking': Nunca tendremos una mala respuesta por rpido que manejemos los botones ni aunque presionemos muchos a la vez. Adems, el interfaz es reconoce las pulsaciones a muy alta velocidad, tericamente hasta unas 66.000 pulsaciones por segundo. Construccin muy sencilla: No necesita de conocimientos de electrnica ni componentes complicados. Incluso no es necesaria ninguna soldadura. NOVEDAD: El interfaz por puerto paralelo es compatible con Windows (98 en adelante), Linux (gracias al driver programado por D_Skywalk) y MS-DOS (Gracias al driver programado por Manofwar).

Inconvenientes Hay que tener un poco de cuidado al ir construyendo el montaje para que todo funcione bien, qu menos! Las placas base modernas estn dejando de traer puerto paralelo, as que en un futuro habra que comprar alguna tarjeta de expansin o similar. El driver oficial ppjoy tiene un par de fallos que hacen que la configuracin sea un poco ms liosa de lo que debera. Adems, dicho driver ya no ser continuado por su autor. Estando prevenidos no supone ningn problema.

Ante todo agradecer a todos los marcianos que han estado trabajando estas semanas desinteresadamente en la investigacin y construccin de este sistema y que me han hecho posible recopilar todos sus conocimientos, imgenes, comentarios, etc para poder llegar a hacer este tutorial que espero sea del agrado de todos, y que se convierta en definitiva en un mtodo sencillo (en pocas horas te lo puedes construir y sin necesidad de conocimientos de electrnica), barato (menos de 3 euros) y eficaz (permite 60 botones!!!) para conectar un PC a una mquina recreativa.

Teora

Antes que nada vamos a ver en qu se basa este sistema. El puerto paralelo se implementa mediante un conector llamado DB25, que tiene 25 pines numerados.

Segn el protocolo de este puerto, los pines 10, 11, 12, 13 y 15 son capaces de enviar datos (corriente elctrica) y vienen indicados de color rojo en el esquema; mientras, los pines del 1 al 9, y los pines 14, 16 y 17 son para leer datos (si les llega corriente elctrica) y vienen de color azul en el esquema. El resto de pines, es decir, los pines 18 a 25, no tienen utilidad para nosotros (de color verde en el esquema).

Este sistema de seleccin de canal nos va a permitir lo siguiente: conectar 5 datos al canal 1, 5 datos al canal 2, as hasta el canal 12, con lo que si las matemticas no nos fallan, podemos realizar hasta 12x5 conexiones, es decir 60. Teniendo en mente las 60 conexiones posibles que permite el puerto paralelo, podemos empezar a hacer todo tipo de combinaciones. Slo hay que tener en cuenta que cada palanca consume 4 conexiones (una para cada direccin) y cada botn una. El monedero tambin actuara como una conexin ms. As podemos tener p.ej. 1 palanca y 8 botones para cuatro jugadores: 4 + 8 = 12 conexiones por jugador, 12 * 4 jugadores = 48 conexiones. Le podemos aadir el start de cada jugador, y algunos botones ms de mantenimiento (p.ej. Escape para salir del juego, P para pausar el juego, Tabulador para entrar en opciones,...). 60 conexiones dan para muchas posibilidades. Por cierto, ten en cuenta que este esquema que est a la izquierda es una vista anterior del conector DB25, mientras que la imagen anterior es una vista posterior. De ah a que aparezcan los pines numerados a la inversa. Para entender ms fcilmente el sistema de los 5 datos por canal y los 12 canales, podemos imaginarnos una estructura matricial. En las filas van los 12 canales, y en las columnas los 5 datos de cada canal:Pin 10 (E) Pin 11 (E) Pin 12 (E) Pin 13 (E) Pin 15 (E) Pin2(R) Pin3(R)

Pin4(R) Pin5(R) Pin6(R) Pin7(R) Pin8(R) Pin9(R) Pin1(R) Pin14(R) Pin16(R) Pin17(R)

(E) significa que por ese cable se envan datos. (R) significa que por ese cable se leen datos.

El sistema funciona como el juego de los barquitos de toda la vida, se enva una seal (corriente elctrica) por uno de los cables (E) y se comprueba en cul de los cables (R) se recibe la misma. Y listos, ya se sabe qu botn se ha pulsado... tocado y hundido! Una vez que tengamos claro cuntos jugadores podrn usar nuestra maca y cuntos botones tendr cada uno, solo queda distribuir sus pulsaciones en la matriz del interfaz por puerto paralelo. En este ejemplo, vamos a disear un panel para 4 jugadores, con 8 botones para el jugador 1, 8 para el 2, 4 para el 3, 4 para el 4, y start y coin (moneda) para cada uno de los 4. Rellenamos siguiendo cierto orden:Pin10(E) Pin11(E) Pin12(E) Pin2(R) Pin3(R) Pin4(R) Pin5(R) Pin6(R) Pin7(R) Pin8(R) Pin9(R) Pin1(R) 2-arriba 2-abajo 2-izquierda 2-derecha 2-boton_1 1-arriba 1-abajo Pin13(E) Pin15(E)

1-izquierda 1-derecha 1-boton_1

1-boton_2 1-boton_3 1-boton_4 1-boton_5 1-boton_6 1-boton_7 1-boton_8 1-start 3-arriba 3-abajo 1-moneda

3-izquierda 3-derecha 3-boton_1 3-moneda

3-boton_2 3-boton_3 3-boton_4 3-start

2-boton_2 2-boton_3 2-boton_4 2-boton_5 2-boton_6 2-boton_7 2-boton_8 2-start 4-abajo 2-moneda

Pin14(R) 4-arriba

4-izquierda 4-derecha 4-boton_1 4-moneda

Pin16(R) 4-boton_2 4-boton_3 4-boton_4 4-start Pin17(R)

Ya tenemos el diseo lgico de nuestro panel de control. Ahora tenemos que entrar en el diseo fsico del asunto. Slo hay que tener en cuenta dos puntos: 1. Todos los botones de una fila comparten el cable de recepcin de datos (R), que llamaremos (mal llamado) 'Tierra'. En nuestro ejemplo, las cuatro direcciones del juegador 1 y su primer botn comparten esa 'Tierra'. Es decir, slo necesitamos un cable que vaya desde el interfaz al primer micro-interruptor de '1-arriba', de ah se alarga hasta '1-abajo', etc... 2. Los cables de envo de datos (E) se dividen para ir a parar a los distintos micro-interruptores utilizando diodos. Estos diodos (tipo 1N4148 o similar) son IMPRESCINDIBLES para evitar el 'ghosting'.

El diseo de esta estructura quedara como sigue:

En este ejemplo, para conectar la direccin 'arriba' del jugador uno, utilizaramos las conexiones superiores de la izquierda. Un cable saldra del lugar marcado como ARRIBA y el segundo desde la conexin ligeramente superior que pone 2. Dichos cables los conectaramos al micro-interruptor del modo habitual, uno a la patilla inferior del micro (normalmente llamada tierra del interruptor, masa o comn) y el otro a la patilla marcada como 'NO' ('Normally Open' o normlmente abierto en castellano). Y por ltimo, el diseo real realizado sobre una base de cartn para pruebas, con regletas (sin soldaduras!, ms fcil imposible):

En la parte superior podemos observar el cableado que termina en el conector DB25 del puerto paralelo. Todo esto puede parecer as un poco complicado y engorroso, pero nada ms lejos de la realidad. Para facilitar las cosas, vamos a mostrar un caso prctico paso a paso, construyendo un panel para un jugador slamente.

PrcticaDisearemos un panel para un jugador que constar de :

Una palanca 6 botones 1 botn de start 1 botn para monedas (coin) 1 botn para ESCAPE 1 botn para ENTER 1 botn para PAUSA 1 botn para TABULADOR 1 botn para RESET

Por tanto necesitamos 4 conexiones para la palnca, ms 13 para botones. 17 en total. Lo primero es rellenar la matriz:Pin10(E) Pin2(R) Pin3(R) Pin4(R) 1-arriba 1-boton_2 1-start Pin11(E) Pin12(E) 1-abajo Pin13(E) Pin15(E)

1-izquierda 1-derecha 1-boton_1

1-boton_3 1-boton_4 1-boton_5 1-boton_6 1-moneda ESCAPE ENTER PAUSA

Pin5(R) Pin6(R) Pin7(R) Pin8(R) Pin9(R) Pin1(R) Pin14(R) Pin16(R) Pin17(R)

TABULADOR RESET

Siguiendo las reglas bsicas, tendremos que:

Unir todos las lecturas (R) de cada micro-interruptor del mismo canal. En este caso, uniramos 1arriba + 1-abajo + 1-izquierda + 1-derecha + 1-boton_1. Haramos lo mismo para las lecturas (R) 3, 4 y 5. Es decir, que desde nuestro interfaz hasta el panel de control iran tres cables de lectura de datos, tambin mal llamadas 'Tierras'. Dividir los cables de envo de datos (E) utilizando diodos para que lleguen a todos los microinterruptores. En este caso: o Los cables 10 y 11 se dividen en 4 o Los cables 12, 13 y 15 se dividen en 3

Mirando la zona inferior de la imagen vemos el canal de recepcin (R) 2 en celeste, el (R) 3 en fuxia y el (R) 4 en amarillo. En la siguiente foto vemos la construccin de este cableado. Se observa perfctamente el uso de las 'Tierras' comunes si nos fijamos, por ejemplo en el cable amarillo.

Ya solo queda conectar esos cables 21 cables (17 seales ya divididas y 4 'Tierras') al interfaz propiamente dicho. Como cada uno tiene un color diferente, no habr ninguna problema de confundir los cables.

Al final de la cadena vemos el cable paralelo (conector DB25), esperando a ser conectado al PC para comenzar a jugar... pero antes debemos colocar los 17 diodos.

Y aqu vemos a Lord Hiryu, que fue el primer marciano en experimentar el invento con cara de decir 'Bien, esto funciona!!!'. Ese botelln de cerveza y ese bote de ketchup no pueden faltar en la dieta de todo marciano que se precie

Pinchamos el conector DB25 en el puerto paralelo, y ya slo nos queda configurar con una utilidad de Windows las asociaciones de cada botn. As va quedando la cosa:

Configuracin de botones en windowsBueno, una vez que tenemos todo el tema del cableado resuelto, nos queda lo ms sencillo, que es instalar una utilidad llamada PPJoy (Parallel Port Joystick), con la que se le dice la funcin de cada botn que hemos diseado en la matriz. Tras descomprimir lo descargado en una carpeta y ejecutar SETUP.exe quedar instalada la aplicacin (Aceptar todos los mensajes como siempre). Lo primero que vamos a hacer es hacer clic en el icono 'Configure Joysticks' recin creado, y configuraremos los joysticks. Se abrir una pantalla, y haremos clic en Add para aadir un joystick. Seleccionamos en los mens desplegables los siguiente valores, y entonces pulsamos en el botn Add. Una vez creado el joystick, lo seleccionamos y pinchamos sobre el botn mapeado de direcciones y botones.

'Mapping' para empezar el

Ahora viene lo importante del asunto, la definicin del nmero de ejes y botones que queremos en nuetro joystick y el escaneo de las pulsaciones. En nuestro caso, necesitamos dos ejes (eje_x y eje_y) y trece botones. El nmero de 'POV_HATS', para un panel de control siempre lo dejaremos en cero ya que los 'pov_hats' son los sub-joysticks. Por ejemplo los podemos encontrar en los joysticks para simuladores de vuelo encargados de controlar el sistema de armamento y en el mando 'dual-shock' de Playstation 2. Lo primero que nos pedir el programa es que escaneemos los ejes que hayamos asignado. Para ello, presionamos el botn 'Scan' que tenemos al lado de cada direccin (4) con lo que se nos abrir una ventana que pondr: 'Reading Joystick Input. Please press/move desired control'. Al presionar la direccin deseada, dicha ventana deber cerrarse automticamente y al lado de la direccin mapeada deber aparecer el cdigo del botn o direccin presionada, por ejemplo 'Digital 2'.

Una vez terminemos con los ejes, le daremos a hayamos definido.

'Next' y continuaremos mapeando tantos botones como

Al acabar el proceso, podemos cerrar la utilidad de configuracin del joystick que hemos creado y, a todos los efectos, windows reconocer el joystick perfectamente. Para comprobar que todo ha ido bien, nos vamos al panel de control de windows y comprobamos dentro de dispositivos de juegos que todo funciona.

Por fin, tenemos el joystick totalmente funcional. A partir de aqu, ya solo nos quedar configurar los emuladores como deseemos. Incluso podemos utilizar joytokey en combinacin con nuestro joystick por puerto paralelo. Esto nos brinda la posibilidad de controlar cualquier emulador y aplicacin con nuestro joystick arcade.

Particularidades en la instalacin del driverTanto el interfaz por puerto paralelo como el driver ppjoy han sido ampliamente testeados y funcionan perfectamente. Sin embargo, el driver contiene una serie de fallos menores que hacen que su configuracin sea un poco complicada si no somos conscientes de ellos. El driver no se contina desarrollando y tampoco se va a liberar su cdigo fuente por lo que en principio, estos errores no sern corregidos.

FALLO 1: Mapeo invertido de eje_yEn geometra cartesiana en dos dimensiones (X,Y), lo normal es que el eje X sea la direccin horizontal y el eje Y la direccin vertical. Adems, el eje Y negativo es hacia abajo, positivo hacia arriba, el eje X negativo es hacia la izquierda y positivo hacia la derecha.

Es decir, que cuando estamos mapeando ejes, lo lgico sera que cuando vamos a escanear 'Y Min' movisemos la palanca hacia abajo. Pues bien, esto no es as, el eje 'Y' est invertido as que cuando escaneemos 'Y Min' debemos mover la palanca hacia arriba y cuando escaneemos 'Y Max', debemos mover la palanca hacia abajo.

FALLO 2: Separacin total de joysticksImaginemos por un momento que queremos crear un joystick con 50 botones (para usar en un simulador de vuelo, por ejemplo). Pues bien, esto no es posible con el driver ppjoy ya que tiene una limitacin mxima de 30 botones por joystick. Es decir, las primeras 30 entradas slamente las podr detectar el joystick 1 y las siguientes 30 el joystick 2. La solucin es bien sencilla, creamos dos joysticks y luego configuramos nuestros juegos y/o emuladores del modo deseado. Simplemente hay que tener en cuenta que en el cableado que se indica en este tutorial es el correcto y est en el orden adecuado. Es decir, que si utilizamos por error el cable 14 para el joystick fsico 1, por mucho que intentemos escanear esta entrada en el driver del joystick 1, nunca detectaremos nada. Ser necesario que creemos un segundo joystick en el driver para poder interpretar esta entrada 'mal cableada'. Para mayor complicacin, las entradas de datos de ambos joysticks se denominan igual en el driver. Es decir, la primera entrada del joystick 1 se llamar 'Digital 1' y la primera entrada del joystick 2 tambin se llama 'Digital 1' pese a que fsicamente no son lo mismo ni el driver los interpreta como uno, sino como dos.

FALLO 3: Cableado 'caprichoso'Esto est muy relacionado con el FALLO 2, si nos fijamos en las tablas ya expuestas, vemos que el orden de los cables de envo de datos y el de los de lectura no es consecutivo y es un poco caprichoso:

Cables de envo de datos (E): 10-11-12-13-15 (Se salta el cable 14) Cables de recepcin de datos (R): 2-3-4-5-6-7-8-9-1-14-16-17 (Orden poco evidente...)

As que hay que prestar mucha atencin al cableado si no queremos acabar con un joystick con 4 botones y otro con 16. Esto no supone ningn problema ya que los emuladores siempre nos brindan muchsimas opciones de configuracin, pero si nos lo podemos ahorrar cableando bin todo ser ms 'elegante'.

Errores comunes y consejo finalEste interfaz ya ha sido construido por bastantes visitantes de la web y est sobradamente comprobado su buen funcionamiento. As mismo, tambin hemos comprobado que se suele complicar la construccin si no se va con cuidado. Antes de empezar a construir el interfaz, conviene comprender su funcionamiento, que se trata

de una matriz de cables donde unos envan corriente y otros la reciben. Sabiendo qu cable enva la seal y cul la recibe, se identifica perfectamente el botn pulsado. Los errores ms comunes son, confundir los cables de envo (E) y recepcin (R) de seal, colocar los diodos al revs e intentar leer entradas del segundo joystick con el driver del primero. Conviene, para familiarizarse con la construccin del interfaz y la configuracin del driver, avanzar poco a poco y no ponernos a tirar cables como locos. La primera prueba, para ver si somos capaces de identificar correctamente los cables y de instalar el driver debera ser configurar un solo botn, para lo que no nos hace falta ni siquiera diodos solo con unir un cable (E) y un cable (R), windows debera ser capaz de detectar la unin de dichos cables. Respecto a PPjoy, sabemos que en un montaje de 30 entradas para un jugador, por ejemplo, cuatro han de ser para las direcciones y el resto para botones. Pues bien, una vez asignadas las direcciones seguimos disponiendo de 30 entradas para botones. es decir, si pulsamos en las propiedades del dispositivo de juego veremos como con cada pulsacin aparece el detello del botn correspondiente, pero, curiosamente, cuando pulsamos tambin la palanca se mover tambin la cruz en la direccin pulsada y, adems, un botn. Esto origina el problema en Mame. Tendrmos que inhabilitar esos botones que parece funcionar a la vez que realizamos movimientos con la palanca. Cmo se hace esto? Pues muy fcil, nos vamos al men del PPjoy y navegamos por los mens del dispositivo en cuestin buscando los botones que han correspondido a los movimientos de los ejes y los inhabilitamos. Por ejemplo: 8, 10, 12 y 13; buscamos estos botones, pinchamos en la pestaita y navehgamos hasta el final de la lista y damos a "no funcion" (o algo as, es que no tengo el programa delante), y ya est.

Material Extra Esquema completo de un interfaz por puerto paralelo (IPP). Enviado por Montoya. Placa integrada de interfaz por puerto paralelo que ha sido creada por Armenta. Prximamente se podr adquirir desde esta web o descargar los esquemas para su construccin. Idea para la construccin reducida de un IPP por pisos y ahorrar mucho espacio.

AgradecimientosEste sistema es una realidad. Algunos marcianos de nuestra comunidad ya estn disfrutando de l. Pero esto ha sido posible gracias a una larga investigacin, pruebas, comentarios, etc, de muchos marcianos:

Lord Hiryu por ser el primero en hacerlo realidad y por sus diseos Quark, Skip, Macarro, Cangrejo, etc, etc, por sus sinfines de preguntas y respuestas sobre el tema.

Que lo disfutis...

Fallos y solucionesAl mover el joystick del jugador 2, tambin se mueve el jugador 1.Problema original, aqu. Tras revisar el cableado y comprobar que estaba todo en orden, se descubri que el fallo provena de las interferencias generadas por la televisin que pasaba por encima de los cables del IPP. Para solucionarlo, basta con 'apantallar' los cables con alguna clase de metal, una tubera de cobre, una manguera de ducha... tambin se puede buscar una ruta alternativa para los cables. Playjodete, Bubu y Macarro