08 marzo 2017

Pedales para el Rainbow Six

Rainbow six siege

Llevo unos días dándole al Rainbow Six Siege, y la verdad es que hacía bastante que no me enganchaba a un juego (bueno, quitando el DOOM, que también tuvo lo suyo). Bueno, la cosa es que Rainbow Six (R6, a partir de ahora) es un juego táctico que requiere bastante precisión, rapidez de movimientos, y unas buenas dotes tácticas.



Como se ve cuando te asomas

Uno de las características de este juego (a parte de otras muchas) es el tema de inclinarse. Para no exponer todo el cuerpo al fuego enemigo, es posible "asomarse" a izquierda y derecha, evitando plantarse en medio de la línea de tiro, evitando que te maten. Este movimiento está mapeado por defecto a las teclas 'Q' y 'E', respectivamente.

Justo falta "Lean", pero las opciones son Toggle, o Hold.

El problema que tenemos aquí, es que si te quieres mover e inclinarte, tienes dos opciones: O tienes siete dedos en la mano izquierda (para poder pulsar simultáneamente la 'A' y la 'Q' por ejemplo) o bien, configuras el juego (R6 da esa opción) para que el movimiento se "quede pisado" hasta que vuelvas a dar a la tecla (una pulsación de la 'Q' te inclina a la izquierda, y se queda así hasta que le vuelvas a dar (cambiar/Toogle)). El problema que tiene eso, es que si andas así, vas mas despacio, lo que te convierte en una presa fácil. La otra opción es mantener/Hold, pero te obliga a los siete dedos.

Así que aquí tenemos varias opciones: o configuras la acción en otras teclas (que no tiene mucho sentido, porque hay más acciones que hacer, y no hay tantas teclas libres) o bien... te inventas algo para manejar esas teclas... que es lo que he hecho yo. Básicamente se me ocurrió usar unos "pedales" para inclinarme a cada lado.

Por qué unos pedales? pues porque los pies los tienes libres, son dos acciones con una lateralidad muy marcada (izquierda, derecha) y además tienes dos pies... así que parece una idea razonable.

Manos a la obra

Si miramos por ahí pedales, nos encontramos que todos los que he encontrado son para simuladores de coches, o son para simuladores de vuelo, así que no nos valen, porque son analógicos. Se podrían meter, mapeando el control analógico con el driver... pero es un rollo y bastante lío. Además, no tengo yo claro que R6 soportara mapear unas acciones al teclado y otras a un joystick. Así que queremos algo bonito, barato, fácil de construir, que sea digital y que se use de la manera más sencilla en el PC.


Arduino, partiendo la pana finamente.

Aquí es donde entra Arduino, ya que además tengo un par de ellos por casa. Arduino es una plataforma de desarrollo basada en un diseño hardware OpenSource junto con unas librerías y un toolchain OpenSource, que nos permite realizar montajes hardware de manera sencilla, cómoda, rápida y lo mas importante: barata.

Hay muchos modelos hardware, cada uno con sus especificaciones y sus características, pero el que nos interesa en este caso es el Arduino Micro. y por qué este? pues muy fácil, porque esta plaquita utiliza un microcontrolador ATMega32U4 que tiene entre sus características tener el controlador USB dentro... por lo que puede ser reprogramado... lo que permite al dispositivo comportarse como distintos dispositivos USB de un modo sencillo.

Y que quieres decir con todas esas cosas que no entiendo? pues muy fácil: que podemos programar el Arduino de manera que se comporte como un dispositivo USB. en concreto, como si fuese un TECLADO. Y aquí viene la gracia: Cuando pinchas el Arduino al PC, se comporta como un teclado; cuando pulsas el botón de la izquierda, mandamos una 'Q'. Cuando pulses el botón de la derecha, mandamos una 'E'. Como es un teclado, pues asunto resuelto. Ya tenemos la integración realizada.

Lista de Componentes


  • Arduino Micro. Se puede hacer con un Nano, con un Pro, o con un Teensy, pero en ese caso hay que mirarse la documentación, ver que pines son y ver si soporta el USB integrado en el micro (para que funcione como un teclado). Aquí vamos a usar Arduino Micro, el genuino. 27.79€ en Amazon sin rebuscar mucho.
Arduino Micro. Bueno, Bonito y Barato

    • Un par de botones de arcade, con sus micro interruptores. Son cómodos los convexos (con tripita) ya que los vamos a pisar. Yo uso los de industrias lorenzo, comprados en Factory arcade (2.60€ cada uno con micro interruptor).
    Botón convexo de industrias lorenzo (el clásico)
      • Cables para conectar. Yo he usado una combinación de fastons y pines hembra para hacer los cables. Date cuenta de que son dos botones, así que con cuatro fastons y cuatro pines lo tienes hecho. Se puede también soldar, etc.
      Faston (para el lado del microswitch)
        • Fastons (3.00 €/100 unidades) queda perfecto. Pines (2.69€ /150 unidades) Fundas de plástico (3.00€/100 unidades). OJO: Cuando compres el botón, mira el ancho del microinterruptor para comprar el faston que corresponda (hay de 6.3mm, 4.8mm, etc). El cable cualquier cable finito nos vale.
        El microswitch (microinterruptor) Revisad el ancho (4.8mm o 6.3mm) para los faston
        • Madera para hacer el reposapies. Yo he usado unos retales de DM de 1cm de ancho, que se corta fácil y es resistente. Para pegarlo he usado una pistola de pegamento caliente, y perfecto.
        Conector de 1 PIN para la parte del arduino (plástico y pin por separado)

        • Herramientas (una taladradora para hacer el agujero de los botones, con una broca de corona, y una sierra para cortar la madera).
        • Un cable mini usb para conectar el arduino al PC.

        Para comprar los componentes es casí mas fácil pedir los botones a Factory Arcade (por ejemplo) o reciclar unos viejos, y los conectores comprarlos en una tienda de electrónica local (Conectrol, por ejemplo) o hacer un pedido para tener provisiones, que es barato y se usa bastante.



        Manos a la obra

        Lo primero es hacer el mueble. Para hacerlo, he tirado de un par de retales que tenía por casa de DM de 1cm de grosor. Se puede hacer con cualquier tipo de madera, pero lo ideal es que sea resistente, se mecanice bien y se pueda unir sin mucho lío. En mi caso el DM se que pega bien con pegamento caliente (las tipícas pistolas de barritas) asi que el diseño es sencillo: una plancha en la que realizamos dos taladros para los botones, un lateral para elevarlo a la altura deseada, y un par de pies para darle estabilidad. Cada uno que se la haga a su medida, ya que cada uno se siente cómodo con una altura determinada, etc. También está la opción de usar un reposapiés fabricado y hacerle dos taladros.


        El mueble visto desde arriba
         No hay mucha magia, corto los listones con la sierra manual, hago los agujeros con la taladradora de corona, encolo con la pistola de pegamento caliente ayudado con unos gatos y listo. Para evitar que se deslice (y desliza) le he pegado cuatro patas de esas de goma antideslizante, como puede verse en la siguiente foto. Como veréis, no es muy complicado el bricolage.


        Las patas antidelizantes y el montaje del mueble.

        Cableado

        Ahora hay que cablear el asunto. Una de las gracias que tiene el Arduino Micro es que tiene resistencias de pull up dentro, para las entradas digitales. Estas resistencias lo que hacen es que evitan que se queme el micro, ya que al tener un interruptor, es necesario "tirar" de la corriente mientras se cierra el circuito. Si no tuviera estas resistencias internas, habría que cablearlas entre los botones y el arduino, pero en nuestro caso, no hace falta, así que el montaje es muy sencillo. Los microinterruptores tienen tres patas, la de abajo, NC (2) y NO (4). la de "abajo" es el GROUND y va pinchado al GROUND del Arduino. la NC (también rotulada como 2) es NORMAL CLOSED, y se usa cuando quieres usarlo de manera inversa (que pite cuando se abre). Nosotros queremos que "pite" cuando se cierra, asi que usamos NO (también rotulada como 4).

        Diagrama de conexiones

        Es importante que todos los GND (grounds) sean comunes. Así que como el Arduino tiene dos pines de GND, usamos uno para cada uno, y santas pascuas.

        Los cables los preparamos como sigue: en el lado del Arduino, montamos un conector de pin. Para eso pelamos el cable, crimpamos la parte de metal, y ponemos su fundita de plástico. En el otro extremo (la parte del microinterruptor) metemos la capucha de plástico en el cable, y crimpamos el faston. Listo. Hacemos cuatro de estos, que son los que vamos a necesitar. La longitud del cable es importante, así que ten en cuanta a qué distancia has hecho los taladros y por dónde vas a sacar el cable USB.

        Resumen de los pines:

        • Pin D9 del Arduino al NO (4) del Interruptor de la Izquierda (Q)
        • Pin D8 del Arduino al NO (4) del Interruptor de la Derecha (E)
        • Pin GND de la izquierda al Interruptor E
        • Pin GND de la derecha al Interruptor Q

        Realmente los Pines GND del arduino dan igual como los conectes, pero conéctalos.
        Date cuenta de que los pines del Arduino estan rotulados. D9 es la pata 14 si empezamos a contar en el diagrama del Arduino, por arriba a la izquierda, asi que cuidado con esto que es importante. Recuerda, usamos D9 para la Q y D8 para la E.

        Programación del Arduino

        Aquí viene lo que más asusta, pero lo más fácil de hacer, ya que voy a intentar explicarlo todo de manera sencilla. Lo primero que hay que hacer es bajarse el IDE (herramienta de desarrollo) de Arduino desde aquí. Es la 1.8.1, para tu plataforma. Esto lo he probado en MacOS 1.12 y Windows 7, y funciona sin problemas. Una vez que te lo bajes, lo instalas y lo abres. Te recomendaría que te dieses una vuelta por la web de Arduino y te leyeras los tutoriales, porque están muy bien.

        NO CONECTES EL ARDUINO MICRO VIA USB al PC TODAVÍA.

        Lo primero que vamos a hacer es seleccionar  nuestra placa de desarrollo. Para ello vamos al menú herramientas, placas y seleccionamos "Arduino/Genuino Micro". No te equivoques que esto es importante (por como afecta al bootloader y al toolchain). Tu selecciónalo bien.

        Lo segundo es bajarse la librería Bounce2. Es muy fácil, ya que está integrada en el IDE. Vamos al menú Programa, Incluir Librería, Gestionar Librerías. Ahí buscamos "Bounce2" y le damos a instalar. Sencillísimo. En el vídeo se ve como hacer ambas cosas.

        Ahora cerramos el IDE, conectamos el Arduino, volvemos a abrir el IDE y nos bajamos el código fuente del programa. Para ello nos vamos al repositorio GIT, pinchamos en el botón verde "Clone or Download" y le damos a "Download ZIP". Aquí tienes en enlace directo al código fuente. Cuando lo tengas, descomprímelo, renombra la carpeta r6pedals-master a r6pedals y abre el fichero r6pedals.ino con el IDE de Arduino (doble click en el fichero y lo tienes).

        Probamos que compila sin problemas (Menú Programa, Verificar/Compilar) y si no vemos errores (que no los tendrá) pues lo subimos al Arduino (Menú Programa, Subir). Si no te lo sube, hay que darle un par de veces al reset mientras lo cargas. Esto es porque hay que resetear el micro para que pille el puerto USB como serie (recuerda que tienes todo integrado dentro del microcontrolador).

        Compilado y descargado al Arduino.

        Probamos en un notepad que dando a los botones se escriben las letras Q y E ... y ya lo tenemos hecho. Abrimos Rainbow Six Siege, vamos a la configuración, Controles, buscamos Inclinarse y lo configuramos como Hold (presionar). Y con eso y un bizcocho ... ahí lo tenemos funcionando! A disfrutarlo!.


        Tras una manita de pintura, la cosa queda bastante más chula.

        Ya pintadito.
        Quality Control by Firulais

        Todo correcto!