Como conectar un mando Arcade a la Raspberry Pi

Hola de nuevo amigos. Lo prometido es deuda. Y es por esto que dedicaremos esta entrada a las diferentes formas que tendremos de poder conectar nuestros mandos Arcade a un hardware muy específico y querido por todos nosotros: la Raspberry Pi.

Como nos ha cambiado la vida a los más nostálgicos de los 8 y 16 “bits” cuando salió al mercado esta pequeña maravilla que se puede utilizar para multitud de funciones (programación de automatismos, como mini-pc, etc.). Seguramente uno de los usos para los que más éxito ha tenido este mini-multiprocesador haya sido la de dispositivo para juegos, ya que esta preciosidad nos permitirá jugar, vía emuladores, a todo tipo de plataformas “viejunas” (NES, SNES, Megadrive, Mastersystem, Atari, Spectrum, Amstrad, Arcade, etc.).

Rasberry Pi Model 3b+

Veamos antes de nada pues, qué es una Raspberry Pi, para que se utiliza y como podremos conectar cualquier tipo de mando a este dispositivo para poder jugar a un sin fin de plataformas vía emulación.

¿Qué es una Raspberry Pi?

Aviso: importante tener que en cuenta que lo que expliquemos aquí le va a valer a las versiones 2, 3b y 3b+ de la Raspberry Pi.

Sin extendernos mucho, podríamos decir que una Raspberry Pi es un mini-ordenador, un pequeño PC, con el cual podremos hacer todo lo que se puede hacer con un ordenador normal (programar, navegar por Internet, jugar, ofimática, etc.). Existen diferentes modelos, los cuales también ofrecerán diferentes características a nivel de memoria y capacidad de proceso.

Una de las posibilidades más interesantes de esta pequeña hermosura es la de poder programar sus pines de entrada-salida (llamados GPIO), para desarrollar cualquier tipo de automatismo (como pueden ser riegos automáticos, sensores de humo, de movimiento, etc.)

¿Porqué es tan interesante para los amantes de los videojuegos clásicos?

Pero centrémonos en la función por la cual se ha hecho más famoso este hardware, que no es otra que la de ser utilizada como dispositivo para ejecutar videojuegos gracias a su capacidad para emular más de 30 plataformas “añejas” diferentes (juegos Arcade, NES, SNES, Megadrive, Sega 32X, Neo-Geo, Game Boy, Spectrum, Amstrad, y un largo etc.) una función muy valorada por los más nostálgicos del mundo “gamer”.

Si eres de los que busca un aparato para poder jugar a todo lo “ochentero-noventero”, este mini-PC, el cual cabe en la palma de la mano (no exagero), es lo tuyo.

Pero ¡ojo! Con esto sobre todo podremos jugar a casi todas las plataformas de 8 y 16 bits (consolas antiguas), y algunas de 32 bits (PSone o Sega 32X, etc), pero en su versión actual ( olvidaos de poder “mover” juegos de Wii, Play 2, Play 3, Xbox.

Aunque existe una excepción a esto último que hemos dicho. Es decir, podriamos emular consolas más modernas (de 32 y 64 “bits”) si “overclockeamos” la Raspberry PI. ¿Y que es “Overclockear”? Pues no es más que forzar el chip procesador de la Raspberry para que trabaje a más velocidad de lo que en teoría está diseñado. Haciendo esto, podríamos emular consolas más poderosas.

Cuidado con esta operación, porque la temperatura del aparato subirá de forma exponencial. Así que, si decidís hacerle el “overclock”, aseguraros antes de tener un buen sistema de refrigeración para no “freír” el cacharro.

También recientemente ha salido al mercado un nuevo modelo de Raspberry PI (la 4), mucho más potente que modelos anteriores a nivel de memoria RAM, chip procesador y chip gráfico, pudiendo así emular dispositivos más modernos de forma fluida.

Qué partes tiene una Raspberry Pi

La Raspberry, hablando siempre del modelo 3b+, viene con las siguientes especificaciones:

  • 4 puertos USB 2.0
  • 1 puerto de RED
  • 1 puerto HDMI
  • 1 puerto mini-Jack
  • 1 Puerto micro-USB (carga)
  • 1 Lector tarjetas microSD
  • Bluetooth
  • Wifi
  • CPU + GPU Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz
  • 1 Gb de RAM
  • 40 pines GPIO (de Entrada/Salida)

Partes de una “Raspberry Pi 3b+”

Aparte de lo que es el tema de la emulación de consolas, lo más interesante de este hardware son los pines GPIO que tiene. Estos pines son llamamos de “Entrada/Salida” (E/S) porque a nivel electrónico se pueden programar. Una de las funciones que podemos desarrollar gracias a esto, como hemos mencionado anteriormente, es la de creación de automatismos.

Pero no nos desviemos del tema. Vamos a lo que nos interesa de verdad, que son las diferentes formas de conectar nuestros sticks Arcade a la Raspberry para poder jugar así a un sin fin de antiguas plataformas de la forma más fiel posible.

Como conectar los mandos Arcade a la Raspberry Pi

Pues suponiendo que ya tenemos nuestra Raspberry Pi, con nuestro sistema de emulación instalado y funcionando, lo único que nos queda es enchufar los mandos que tengamos y empezar a disfrutar.

Así pues, según el tipo de mandos que tengamos, esta conexión se podrá llevar a cabo de una forma u otra.

Conectar mandos arcade a la Raspberry Pi por USB

Si lo que tenemos son “gamepads” USB de toda la vida, la conexión es fácil ya que se conectan directamente a cualquiera de los puertos USB que tiene las Raspberry (4 puertos USB).

Si lo que tenemos es un mando arcade el cual tiene una interface que nos lo hace igualmente USB, (o sea, que de nuestro mando sale un cable USB) la conexión será igual que en el caso de los “gamepads”: directamente al puerto USB.

Una vez conectados a cualquiera de los puertos USB de la Raspberry tan solo nos quedaría entrar en el menú de configuración de los mandos en “Retropie” o “Recalbox”, que son los gestores para emuladores más populares para Raspberry Pi, y configurarlos.

Por normal general se entra de forma automática en este menú de configuración al encender nuestra Raspberry Pi por primera vez ya con los mandos conectados vía USB. Nos dirá que ha detectado dos mandos pero que no están configurados. Pulsando un botón del cualquiera de los jugadores entraríamos en el menú de configuración.

Si no fuera así, todo puede pasar, entonces para acceder al menú de configuración de los mandos tendríamos que hacerlo mediante un mando que ya tuviéramos anteriormente configurado, o mediante un teclado USB conectado a la Raspberry. Una vez configurados los mandos, ya serán detectados por todos los emuladores que tengamos configurados.

En el 99% de los casos la Raspberry te va a reconocer tu mando de forma directa (plug&play),

Normalmente no hay  instalar ningún driver adicional. Esto es debido a que el sistema que normalmente se utiliza para gestionar a la Raspberry Pi y poder jugar a los diferentes emuladores (“Retropie” o “Recalbox” principalmente), dispone de una amplia base de datos de “drivers” para todo tipo de mandos USB.

Conectar mandos arcade la Raspberry Pi mediante los pines GPIO

Si lo que tenemos es un panel de control Arcade sin interface (con lo cual no tendremos ningún cable USB de conexión), el conexionado lo podremos llevar a cabo a través del GPIO de la Raspberry. Esto podremos hacerlo porque cada uno de estos pines tienen su correspondencia con alguna acción de nuestro mando (por ejemplo; el pin 11 = “derecha-jugador1”, el pin 26 = botón2-jugador2, etc.). Es así como podremos hacer el inter-conexionado de nuestros mandos sin necesidad de interface alguna.

Cabe destacar igualmente, que para poder utilizar el GPIO para el conexionado de nuestro mando Arcade, debemos activarlo. Esto lo detallaremos en un apartado más adelante, ya que antes de dicha activación debemos llevar a cabo el conexionado físico.

Así pues, para poder hacer un conexionado correcto de nuestros mandos al GPIO, debemos antes de nada saber que numeración le corresponde a cada pin del mismo para saber así que acción le pertenece.

Numeración de los pines GPIO

Par poder conectar de forma correcta nuestros mandos al GPIO de la Raspberry PI debemos antes numerar de forma correcta los pines del GPIO. Pero antes de nada debemos diferenciar entre “numeración física “y la “numeración GPIO”, ya que estas no coinciden.

Numeración física

La numeración física será por la que nosotros nos regiremos y corresponderá con la posición física que tenga un pin concreto respecto al grupo de pines. Así pues, tomando como referencia la foto del apartado anterior (ver foto) y empezando a contar por el lado opuesto al de los puertos USB, la fila de pines de la parte interna de la Raspberry Pi (los de la izquierda en la foto) corresponderán con los pines impares (1, 3, 5, etc.), y la fila de pines de la parte externa (los de la derecha en la foto) corresponderán con los pines pares (2, 4, 6, etc.).

Numeración GPIO

La numeración GPIO no coincide con la física, ya que no tiene en cuenta ciertos pines (los de voltaje, los de tierra, etc.).

Tabla de equivalencia “GPIO – Mando Arcade”

Así pues, utilizando la “numeración física”, aquí os dejamos la tabla de correspondencia de dichos pines GPIO con las diferentes acciones de nuestro mando Arcade para cada jugador. Igualmente, entre paréntesis, os pondremos la numeración GPIO equivalente. Pero recordad que nosotros solo nos regiremos por la numeración física.

AcciónJugador 1Jugador 2
ARRIBApin nº 3 (GPIO 2)pin nº 12 (GPIO 18)
ABAJOpin nº 5 (GPIO 3)pin nº 16 (GPIO 23)
IZQUIERDApin nº 7 (GPIO 4)pin nº 18 (GPIO 24)
DERECHApin nº 11 (GPIO 17)pin nº 22 (GPIO 25)
BOTON 1pin nº 13 (GPIO 27)pin nº 24 (GPIO 8)
BOTON 2pin nº 15 (GPIO 22)pin nº 26 (GPIO 7)
BOTON 3pin nº 19 (GPIO 10)pin nº 32 (GPIO 12)
BOTON 4pin nº 21 (GPIO 9)pin nº 36 (GPIO 16)
BOTON 5pin nº 23 (GPIO 11)pin nº 38 (GPIO 20)
BOTON 6pin nº 29 (GPIO 5)pin nº 40 (GPIO 21)
STARTpin nº 31 (GPIO 6)pin nº 35 (GPIO 19)
COIN (SELECT)pin nº 33 (GPIO 13)pin nº 37 (GPIO 26)
TIERRA (GND)pines nº 9/25/39pines nº 6/14/20/30/34

Cabe destacar que mediante los pines 2 y 4 podremos sacar un voltaje de 5v (para botones led o un ventilador). Igualmente, mediante el pin 1 podremos obtener 3,3v. Los pines de “tierra” (GND) pueden ser comunes para ambos jugadores, aunque en la tabla venga diferenciados.

Veamos a continuación las diferentes posibilidades que tenemos para poder conectar físicamente nuestros mandos al GPIO.

Formas de conexionado al GPIO

El conexionado de nuestros mandos Arcade al GPIO se puede realizar de 4 formas diferentes.

De forma directa

Directamente tendríamos que conectar los cables en el GPIO de nuestra Raspberry. Esto lo haremos bien soldando o bien mediante conectores hembra de 1 pin que tendríamos que crimpar a nuestros cables en uno de sus extremos. En el otro extremo de nuestro cable tendremos que tener los conectores “faston” hembra correspondiente para poder conectarlos a los terminales o “faston” macho de los microswitches de nuestros botones y joysticks.

Para esta propósito también se podrían utilizar los cables de la interface Xin Mo (cable de Tierra, cable de acción). Con el cable de “tierra” (GND) se pueden conectar en serie hasta 22 terminales “tierra” (GND) de los microswitches. Con el cableado de acción conectaremos los terminales “positivos” de los microswitches.

Cable de tierra 22 conexiones para Xin Mo.

Cable de acción de 4 conexiones para “Xin Mo”.

 

 

 

 

 

 

 

 

 

Cableado GPIO Arcade

Con este cable podremos ahorrarnos todo el proceso de crimpado de los faston y de los conectores hembras de 1 pin.

Este cable, compuesto a su vez por 40 cables más, tendrá en un extremo un conector hembra de 40 pines que irá conectado al GPIO de las Raspberry, y por el otro extremo llevará 40 conectores “faston” hembra, uno por cable, para el conexionado en los “faston” machos de los microswitches de los botones y de los joysticks.

Raspberry Pi 3B+ con su cable GPIO Arcade

De forma separada, tenemos el cableado utilizado de forma exclusiva para el conexionado de todas las “tierras”, tanto de botones como de joysticks. Esto es así ya que del cable de 40 pines tan solo salen 8 “tierras”, siendo estas insuficientes para poder conectar todas las “tierras” de las microswitches de nuestros botones y joysticks.

Para quien se haya perdido un poco en esto último: cuando conectamos un cable (con dos conectores “faston” hembra) a un microswitch de un botón o joystick (con dos conectores “faston” macho), uno de los terminales del microswtich corresponderá al polo “positivo” y el otro al “negativo”. A este último, al polo “negativo”, también se le conoce como “tierra” o “GND” (de “ground” en inglés). Recordad que todo conexionado electrónico, que es lo que nosotros estamos haciendo, se compone de un polo “positivo” y otro “negativo”.

Partes de un microswitch

Placa de extensión del GPIO

Estas placas nos facilitarán mucho las cosas, ya que nos ofrece de forma impresa la “numeración GPIO” de cada pin y por tanto, la equivalencia de cada uno de ellos con las acciones de nuestro mando. En contra posición tendremos que utilizar el soldador para conexionar el cableado de nuestros joysticks y botones a estas placas.

El producto se compone de un cable con dos conectores hembra de 40 pines, uno por extremo, y de una pequeña placa. Esta placa está compuesta por un conector de 40 pines macho y dos filas de 20 puntos de soldadura en cada fila. En cada uno de estos puntos de soldadura está impresa la numeración GPIO que correspondería a cada pin del GPIO de la Raspberry.

 

Placa de extensión de GPIO para Raspberry Pi 2, 3 y 3b+.

La forma de conexionado es muy fácil: conectamos un extremo del cable en el GPIO de la Raspberry y el otro extremo de dicho cable en la placa. Y ya está. Ya podremos empezar a soldar los diferentes cables en los puntos de soldadura que nos ofrece esta placa.

Interface GPIO

Producto exclusivo de Arcade Express y de fabricación nacional, estamos ante una interface de 2 jugadores donde podemos conectar de forma muy sencilla (atornillando, como si fuera una ficha de empalme) hasta 6 botones de acción por jugador más el “START” y el “SELECT”. Igualmente ofrece, como es obvio, 4 conectores para los joysticks. No dispone de las funciones “TURBO” ni “AUTO” (para saber más sobre estas funciones, ver artículo “Interfaces: el secreto para conectar tus joysticks y botones arcade“).

Dispone también de 3 conectores GND (tierra) y de un conector independiente con voltaje (5v) , por lo que podremos utilizar botones LED o pequeños ventiladores.

 

Interface GPIO para Raspberry Pi 2, 3, 3b+

Otra ventaja que podemos destacar es la de que la Raspberry Pi te detectará tu mando Arcade como si fuera un teclado, y no como un “pad” o controlador USB, ahorrándonos así cualquier tipo de conflicto que se pueda dar a la hora de configurar nuestros botones Arcade.

No ofrece el conector de 5 pines exclusivo Sanwa/Seimitsu, lo cual no quiere decir que no podamos conectar estos magníficos joysticks con su cable correspondiente.

Activación del GPIO

Preparaos, porque ahora viene tal vez la tarea que puede resultar más engorrosa para los más novatos. Una vez realizadas todas las conexiones de nuestro mando Arcade al GPIO de la Raspberry PI, debemos decirle al sistema gestor de la Raspberry Pi (“Retropie” o “Recalbox”) que queremos utilizar nuestro GPIO para manejar nuestros mandos.

Esto lo haremos mediante un pequeño programa llamado “GPIOnext.gif”, el cual lo descargaremos, instalaremos y configuraremos utilizando la “consola” de Linux.

¿Y qué demonios es una “consola”? Recordad que Linux es el sistema operativo en el que “descansan” tanto “Retropie” como “Recalbox” (sistemas que gestionan todos los emuladores a los que vamos a jugar). Este sistema operativo posee una “consola”, que no es más que una “ventanita” con un cursor parpadeante donde podremos teclear “ordenes” o comandos (como el antiguo y añorado MS-DOS).

A continuación, os explicamos, paso por paso, como debemos llevar a cabo esta operación.

Suponiendo que ya tenemos todas las conexiones físicas al GPIO hechas y que ya tenemos un sistema instalado en nuestra Raspberry PI (sea “Retropie” o “Recalbox”), lo primero que debemos hacer es conectar por USB un teclado, el cual necesitaremos para poder entrar en la consola y teclear las ordenes. Hecho esto, conectamos nuestra Raspberry Pi y dejamos que se inicie. Una vez iniciado el sistema que tengamos, haremos lo siguiente (recordad que al escribir omitiremos las ““.):

  1. Pulsamos F4 en el teclado: Así entraremos en la consola.
  2. Tecleamos “CD ..” y pulsamos “ENTER”: Recordad, siempre sin comillas (“”).
  3. Tecleamos “git CLONE https://github.com/mholgatem/GPIOnext.git” y pulsamos “ENTER”: esto iniciará la descarga del fichero “GPIOnext.git”.
  4. Tecleamos: “basch GPIOnext/install.sh” y pulsamos “ENTER”: esto iniciará la instalación del programa “GPIOnext.git”
  5. Una vez terminado el proceso anterior, el sistema nos preguntará:  “Install complete! Do you like to run configuration manager now?(y/n)” (nos pregunta si queremos configurar ahora el GPIO). Pulsaremos la “y” del teclado para decir que “si”.
  6. Entraremos en un menú donde se nos preguntará: “Wich virtual device do you want to configure?” . Nos pregunta cuantos dispositivos vamos a configurar. En nuestro caso disponemos de un dispositivo de juego de dos jugadores. Por esto elegiremos la primera opción, “Joypad 1”, y pulsamos “ENTER”.
  7. Ahora nos preguntará: ” How many Dpads/Joysticks does this controller have?)”  Aquí se nos dan 5 opciones.  Elegiremos, manejándonos con el teclado, el número “2”, ya que se nos pregunta cuantos joysticks o jugadores tiene el dispositivo. En nuestro caso, como bien sabemos, tenemos un panel de dos jugadores.
  8. Nos saldrá una larga lista de opciones correspondientes a los botones del jugador 1 y 2. De esta lista marcaremos, mediante la barra espaciadora del teclado, aquellos opciones o botones que queremos que se activen en nuestro dispositivo. Como he citado antes, tomando como referencia el típico mando Arcade con 6 botones de acción más el “START” y el “SELECT” (por jugador), marcaremos las siguientes opciones (siempre manejándonos con los cursores el teclado), las cuales serán validas para ambos jugadores:
    • START BUTTOM
    • SELECT BUTTOM
    • BUTTOM A
    • BUTTOM B
    • BUTTOM X
    • BUTTOM Y
    • BUTTOM LEFT TRIGGER
    • BUTTOM RIGHT TRIGGER
  9. Pulsamos “ENTER”
  10. Ahora entraremos en la configuración del mando del jugador 1:
    • “Configuring Joypad 1:
      • Hold UP on Dpad/Joystick 1: moveremos el joystick del jugador 1 hacia “ARRIBA”.
      • Hold DOWN on Dpad/Joystick 1: moveremos el joystick del jugador 1 hacia “ABAJO”.
      • Hold LEFT on Dpad/Joystick 1: moveremos el joystick del jugador 1 hacia la “IZQUIERDA”.
      • Hold RIGHT on Dpad/Joystick 1: moveremos el joystick del jugador 1 hacia la “DERECHA”.
      • Hold START buttom: pulsaremos el botón que hayamos designado como “START” del jugador 1.
      • Hold SELECT buttom: pulsaremos el botón que hayamos designado como “SELECT” del jugador 1.
      • Hold buttom A: pulsaremos el botón que hayamos designado como “A” del jugador 1.
      • Hold buttom B: pulsaremos el botón que hayamos designado como “B” del jugador 1.
      • Hold buttom X: pulsaremos el botón que hayamos designado como “X” del jugador 1.
      • Hold buttom Y: pulsaremos el botón que hayamos designado como “Y” del jugador 1.
      • Hold buttom Left Trigger 1: pulsaremos el botón que hayamos designado como “LEFT TRIGGER 1” del jugador 1.
      • Hold buttom Right Trigger 1: pulsaremos el botón que hayamos designado como “RIGHT TRIGGER 1” del jugador 1.
  11. Una vez hecho esto, nos llevará a la configuración del jugador 2, donde repetiremos el mismo proceso descrito en el  punto anterior.
  12. Una vez finalizado, y sin que nosotros hagamos nada, nos saldrá un aviso diciendo “Saving Configuration”, llevándonos a los pocos segundos al menú del punto 6.
  13. En este menú, con el teclado nos situaremos en la opción “EXIT”. Con esto nos saldremos de la configuración del GPIO, yéndonos a la pantalla principal.
  14. Escribimos lo siguiente para que quede todo activado de forma permanente: “gpionext start”.
  15. Por último, reiniciamos todo el sistema escribiendo “reboot”.

Ventajas del conexionado mediante GPIO

Una de las grandes ventajas que conlleva el conectar nuestros mandos mediante el GPIO, aparte de la económica, ya que nos ahorraremos las interfaces, es la de asegurarnos un “LAG CERO” real, ya que no hay hardware intermedio entre nuestros mandos y la Raspberry. (echad un vistazo a nuestro artículo “Interfaces: el secreto para conectar tus joysticks y botones arcade” para saber más del citado “LAG”).

Conclusiones finales

Si solamente vas a utilizar tu mando Arcade en la Raspberry PI, o te has montado una máquina Arcade o Bartop en cuyo interior le vas a implementar igualmente una Raspberry, la elección del conexionado vía GPIO de nuestros mandos sería más que acertada, ya que aparte de asegurarnos un retardo nulo, nos ahorraríamos también unos “eurillos” al prescindir de las interfaces.

Bueno amigos, esperamos como siempre haberos despejado todas aquellas dudas que teníais respecto al GPIO de la Raspberry PI y el conexionado de un mando Arcade a la misma.

Un fuerte abrazo amigos y hasta pronto.

 

1 respuesta

  1. enrikinho dice:

    Genial 🔝🔝🔝🔝

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *