Tabla de contenido:

Controlador de juegos USB para máquina de ejercicio: 8 pasos (con imágenes)
Controlador de juegos USB para máquina de ejercicio: 8 pasos (con imágenes)

Video: Controlador de juegos USB para máquina de ejercicio: 8 pasos (con imágenes)

Video: Controlador de juegos USB para máquina de ejercicio: 8 pasos (con imágenes)
Video: Descarga GRATIS 🔥 + de 3000 JUEGOS ! 📍👾 De Arcade Recreativas / Multijuegos 2024, Noviembre
Anonim
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio
Controlador de juegos USB para máquina de ejercicio

Para fomentar el ejercicio en uno mismo y en la familia, hice un adaptador que emula un adaptador de controlador de juego USB estándar, pero controla la velocidad de movimiento del juego pedaleando en una máquina elíptica o bicicleta estática. Es particularmente bueno para los juegos de carreras. Ciertamente motiva a uno a pedalear rápido al jugar juegos de carreras.

El hardware principal es una placa de desarrollo STM32F103C8 "black pill" de $ 2 con el núcleo Arduino stm32duino y una biblioteca USB HID que desarrollé basada en el fork del núcleo de libarra111. El STM32F1 es rápido y económico y tiene soporte USB de alta velocidad, por lo que es perfecto para el proyecto.

Para usarlo, debe aprovechar el sensor de rotación en la bicicleta elíptica o estática (si su sensor de rotación funciona de manera diferente a los de nuestras máquinas, aproximadamente 3v, activo bajo, es posible que deba modificar el circuito y / o el código).

La velocidad de rotación de la bicicleta elíptica / bicicleta controla el control deslizante. Además, conectas un controlador Wii Nunchuck o Gamecube estándar en el adaptador para el movimiento del joystick, los botones, etc. Hay muchos modos de control diferentes. Por ejemplo, es posible que los niños más pequeños necesiten aumentar un poco su velocidad y algunos juegos pueden usar un esquema de control diferente. Hay varios esquemas de control integrados en el software, y otros se pueden agregar fácilmente en el código. El dispositivo puede emular un controlador de juegos USB, teclado, mouse, controlador XBox 360 o alguna combinación de los tres primeros.

Actualmente no se detecta la dirección del movimiento: para cambiar entre movimiento hacia adelante y hacia atrás, el adaptador tiene un interruptor de palanca. (Alternativamente, se podría usar un sensor magnético de efecto Hall como este dispositivo y cambiar el circuito y el software).

El adaptador funciona como un controlador USB estándar, por lo que puede usarlo con Windows, Linux, OS X, Android, etc.

Como beneficio adicional, el adaptador tiene todas las funciones de este proyecto, funciona como un adaptador Gamecube de función completa, lo que le permite usar los controladores Gamecube en una computadora, incluido el control de juegos con tapetes de baile Dance Dance Revolution compatibles con Gamecube / Wii.

El costo es de menos de $ 10, más el estuche (tengo un diseño imprimible en 3D), cables y soldadura. Partes:

  • Placa de desarrollo "Black Pill" stm32f103c8 ($ 2 en Aliexpress)
  • Enchufe Gamecube ($ 1.60 en Aliexpress, para un cable de extensión Gamecube que se puede cortar)
  • Placa de conexión de enchufe Nunchuck ($ 0.51 en Aliexpress; busque Wiichuck)
  • Interruptor de palanca pequeño de dos posiciones (menos de $ 1 en Aliexpress)
  • Su elección de conectores macho y hembra de dos conductores (alrededor de $ 1 en Aliexpress si elige conectores de barril de alimentación de 5,5 mm); necesita un conector hembra por máquina de ejercicio
  • 2 interruptores táctiles (menos de $ 0.50 en Aliexpress)
  • 4 LED rojos (menos de $ 0.50 en Aliexpress; también puede usar una pequeña pantalla LCD Nokia)
  • condensadores: 10uF electrolítico y opcional 100nF
  • resistencias: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • pequeña placa proto (menos de $ 1 en Aliexpress).

Un Nunchuck es bueno para usar con una mano con una máquina elíptica. En una bicicleta estática, puede usar un adaptador a dos manos como el de Gamecube. Si solo desea usar una de estas dos opciones de control, puede usar menos conexiones.

También necesitas una computadora, un soldador y un multímetro. También necesitará un puente UART a USB (utilicé un Arduino Mega que tenía para otro proyecto; o puede comprar un módulo CP2102 en Aliexpress por un dólar) para instalar un cargador de arranque en su pastilla negra para usarlo con el Entorno Arduino, o de lo contrario puede gastar un par de dólares más y obtener la placa de desarrollo de RobotDyn con un cargador de arranque Arduino precargado.

Permítanme agregar que estoy participando en el concurso Wheels, porque es una forma de vincular las ruedas virtuales en los juegos de carreras de autos en una computadora con las ruedas físicas de las bicicletas estáticas y elípticas.

Paso 1: toque en el sensor de rotación

Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación
Toque en el sensor de rotación

Las dos máquinas de ejercicio que pirateé tienen una consola que muestra la velocidad. Hay cables entre la consola y el cuerpo de la máquina. Debe aprovechar estos cables para acceder a los datos. Si sus máquinas son como las mías, la consola se puede quitar y allí encontrará un cable plano (elíptico) o dos cables (bicicleta). Aproveché estos desconectando los cables y uniéndolos con puentes individuales de hombre a mujer a los que podía acceder.

Utilice prueba y error y un multímetro para identificar un par de cables entre los cuales tiene un pulso de voltaje durante una rotación completa.

Básicamente, el ejercicio es el siguiente: conecte el multímetro a un par de cables (con cuidado de no cortocircuitar nada) con la máquina en funcionamiento y gire los pedales muy lentamente. En nuestras dos máquinas, hay un par de cables entre los cuales normalmente el voltaje es de alrededor de + 3V, pero durante una pequeña parte de la rotación cae a tierra: este es un esquema activo-bajo. Es posible que descubra que su máquina tiene un esquema activo-alto en el que la mayor parte de la rotación está en el suelo y el pulso es positivo, y luego deberá editar el boceto de Arduino.

Si cree que existe alguna posibilidad de que alguno de los cables de la consola con la que está tratando sea CA de red, le recomiendo que se detenga a menos que realmente sepa lo que está haciendo. Afortunadamente, nuestra bicicleta estática funciona con baterías y nuestra elíptica se conecta a una verruga de pared, por lo que solo hay alrededor de 12 V CC alrededor de la consola.

En el caso de la bicicleta estática, fue realmente fácil. Solo había cuatro cables. Dos fueron para el monitor de frecuencia cardíaca y dos para el sensor de rotación.

La elíptica tenía muchos más cables, por lo que era más trabajo. El método de fuerza bruta es el siguiente. Conecte un multímetro a un par de cables. Haga lentamente una rotación completa (o un poco más por si acaso) en los pedales y vea si hay una caída o salto de voltaje. Si es así, lo tienes. Si no, repita con otro par. Eso es mucho ensayo y error: para 13 cables, son 78 rotaciones.

Aquí hay un truco que podría ayudarlo a acelerar la búsqueda del par de cables correcto. Puede esperar que su máquina, como la mía, tenga el voltaje del detector normalmente alto con un pulso bajo. Si es así, si deja los pedales en una ubicación aleatoria, es muy probable que los dos cables detectores tengan alrededor de + 3V o + 5V entre ellos. Por lo tanto, solo haga la prueba de rotación del pedal para aquellos pares de cables que tengan + 3V o + 5V entre ellos.

Otro truco. Es posible que pueda identificar en qué parte de la rotación del pedal se activa el sensor de rotación. Por ejemplo, su máquina puede parpadear algo en la pantalla, actualizar la pantalla de velocidad, activarse desde el modo de suspensión o emitir un pitido. Si es así, mueva los pedales aproximadamente 1/3 de una rotación de distancia, y luego busque pares de cables que tengan 3-5 V entre ellos, y pruébelos moviendo los pedales a la posición donde se activa el sensor.

Si puede identificar el cable de tierra, puede acelerar el proceso considerablemente, ya que solo necesita ir entre tierra y cada cable desconocido. Curiosamente, sin embargo, en nuestra elíptica, el suelo de la fuente de alimentación no parecía ser el mismo que el suelo del detector de rotación.

Una vez que identifique los cables, anótelos. Asegúrese de anotar:

  • el nivel de alto voltaje: si es más de aproximadamente 3.3V pero no más de 5V, querrá cambiar el circuito para usar el pin A9 en lugar de A7 para la detección de rotación, ya que el pin A9 tiene tolerancia de 5V y A7 no, y editar una línea en mi boceto; si es más de 5 V, deberá agregar un divisor de voltaje
  • si el pulso de detección de rotación es bajo o alto: si el pulso es alto, necesitará editar una línea en mi boceto de Arduino.

Si tiene un osciloscopio y la máquina de ejercicios funciona con baterías, también puede usar el osciloscopio en lugar del multímetro. (Si la máquina de ejercicios está enchufada a la CA y también su osciloscopio, debe conocer los bucles de tierra y cómo evitarlos. ¡Tenga cuidado!)

Paso 2: preparar la placa de desarrollo

Preparar la placa de desarrollo
Preparar la placa de desarrollo
Preparar la placa de desarrollo
Preparar la placa de desarrollo
Preparar la placa de desarrollo
Preparar la placa de desarrollo

Suelde los seis pines de puente centrales en su pastilla negra.

Si tiene una placa RobotDyn con el gestor de arranque Arduino, conecte B0- y B1- a los pines centrales y habrá terminado con el paso.

De lo contrario, ahora necesita instalar el gestor de arranque. Necesitará un puente UART a USB independiente o puede usar un Arduino Uno o Mega para este propósito. Aunque la pastilla negra funciona a 3.3V, los pines UART son tolerantes a 5V, así que no se preocupe si su conector funciona a 3.3V o 5V.

Si tiene un Uno o Mega, coloque un cable de puente entre RESET y GROUND. Esto convierte al Arduino en un puente UART a USB dedicado, excepto que los pines TX / RX son el reverso de lo que suelen estar en un conector.

Descarga el binario del gestor de arranque. Quieres generic_boot20_pb12.bin. En Windows, instale Flash Loader Demonstrator de ST. En Linux (y tal vez OS X e incluso Windows si prefiere las herramientas de línea de comandos), use este script de Python en su lugar, pero mis instrucciones serán para Windows.

Realice las siguientes conexiones:

  • PA9 a UART bridge RX ("TX" si estás usando el truco Arduino)
  • PA10 a UART bridge TX ("RX" si está usando el truco de Arduino)
  • G al suelo del puente UART

Me gusta usar puntas de sonda lógica para hacer las conexiones en el lado STM32, pero también puede soldar algunos cables que luego puede cortar (o desoldar si quiere estar ordenado).

Conecte su puente UART a su computadora. Encienda el Black Pill a través de su puerto USB (mejor si lo conecta a un cargador en lugar de a la computadora, ya que la computadora probablemente se quejará de un dispositivo USB no reconocido). Inicie la demostración de Flash Loader. Elija el puerto COM para su puente UART. Elija "Eliminar protección" si está disponible. Elija una versión flash de 64 kb en lugar de 128 kb. Y cargue el binario del gestor de arranque.

Desconecte todo y luego mueva el puente de B0 + / centro a B0- / centro. Ahora tiene un gestor de arranque que puede usar con el IDE de Arduino.

Paso 3: Prepare Stm32duino en Arduino IDE

Prepare Stm32duino en Arduino IDE
Prepare Stm32duino en Arduino IDE
Prepare Stm32duino en Arduino IDE
Prepare Stm32duino en Arduino IDE

Supongo que tiene instalado el último IDE de Arduino.

En Herramientas | Tableros | Boards Manager, instale el soporte para Arduino Zero (simplemente ponga Zero en la búsqueda, haga clic en la entrada encontrada y luego en Instalar). Sí, no está trabajando con Zero, pero esto instalará el compilador gcc correcto.

A continuación, descargue el núcleo stm32duino. En Windows, recomiendo descargar el archivo zip, ya que cuando revisé los archivos (ciertamente, con svn), tuve algunos problemas de permisos con los archivos en el directorio de herramientas de Windows que necesitaban ser reparados. Coloque la rama en Arduino / Hardware / Arduino_STM32 (por lo que tendrá carpetas como Arduino / Hardware / Arduino_STM32 / STM32F1, etc.) En Windows, instale los controladores ejecutando drivers / win / install_drivers.bat.

Instalar mi biblioteca USBHID: Ir a Sketch | Incluir biblioteca | Administre bibliotecas y busque USBHID. Haga clic en él y haga clic en Instalar.

Instalar mi biblioteca GameControllersSTM32: Ir a Sketch | Incluir biblioteca | Administre bibliotecas y busque GameControllers. Haga clic en él y haga clic en Instalar.

Paso 4: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Mi configuración usa cuatro LED para indicar el modo de emulación actual en binario (sí, uno podría usar una pantalla LCD, pero tenía LED tirados cuando construí esto), dos botones para cambiar el modo hacia arriba y hacia abajo (y hacer algo más trucos) y un interruptor de palanca para cambiar la dirección del movimiento.

Además, hay una entrada I2C del Nunchuck y un conector al controlador de Gamecube. Si desea admitir solo uno de estos dos, puede editar gamecube.h en el boceto y ahorrarse algo de soldadura.

Usé un poco de protoboard para montar los cuatro LED de modo y los dos botones de cambio de modo (arriba y abajo), así como la resistencia de un pull-up para los datos de Gamecube. Llevé 3.3V al protoboard, pero no necesitaba sacarle tierra, aunque puede hacerlo si lo desea. Usé otro pequeño trozo de protoboard para montar el conector Nunchuck.

Corta el cable de Gamecube. Desea trabajar con el lado del enchufe, en el que se conectará su controlador. Pele los cables para la conexión.

Ahora haga estas conexiones según el diagrama del circuito:

  • Condensador de 10uF entre 3.3v y tierra (con el lado negativo de cualquier electrolítico en tierra). Esto debería estar lo más cerca posible del chip, así que lo soldé directamente en la placa de desarrollo en lugar de en la protoboard. Por si acaso, puede agregar 100nF como lo hice yo, pero no estoy seguro de que sea necesario.
  • Enchufe Gamecube # 2 - A6 en placa stm32
  • Resistencia de 1Kohm entre la toma n. ° 2 de Gamecube y 3.3V en la placa stm32 (o en la protoboard)
  • Enchufe Gamecube # 3 y # 4 - tierra en placa stm32
  • Enchufe Gamecube # 6 - 3.3V en placa stm32 (o en protoboard)
  • LED en serie con resistencia de 220ohm (o más grande) entre A0 en la placa stm32 y 3.3V (extremo negativo (plano) a PA0; extremo positivo a 3.3V)
  • Repita con LED + resistencia entre A1 y 3.3V, A2 y 3.3V, y A3 y 3.3V
  • Cambio momentáneo entre A5 en placa stm32 (modo incremental) y 3.3V y otro entre A4 y 3.3V (modo decremento); este interruptor incrementa el número de modo
  • Interruptor de palanca entre A8 y 3.3V
  • suelo de la máquina de ejercicio - suelo stm32
  • señal positiva de la máquina de ejercicio - tablero stm32 A7 (tenga en cuenta que A7 solo es bueno para 3,3 V; si su máquina de ejercicio es de 5 V, use A9 y edite gamecube.h)
  • Tierra nunchuck (etiquetada - en mi placa adaptadora) - tierra stm32
  • Nunchuck + 3.3V (etiquetado +) - stm32 3.3V
  • Nunchuck SDA (etiquetado D) - stm32 B7
  • Nunchuck SCL (etiquetado C) - stm32 B6
  • Resistencia de 10Kohm entre Nunchuck SDA y 3.3V en placa stm32
  • Resistencia de 10Kohm entre Nunchuck SCL y 3.3V en placa stm32.

Paso 5: Instale Sketch

Instalar Sketch
Instalar Sketch
Instalar Sketch
Instalar Sketch

Descargue mi boceto del adaptador USB de Gamecube y cárguelo en el IDE de Arduino. Hay algunas opciones para controlar en gamecubecontroller.h:

  • eliminar // delante de #define ENABLE_EXERCISE_MACHINE (todos deben hacer esto)
  • si necesita mover la conexión de la máquina de ejercicios a A9, cambie PA7 a PA9 en la línea const uint32_t rotatector = PA7
  • Si el pulso de detección de rotación de su máquina de ejercicio es alto, cambie #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING a #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • si no quieres usar un Nunchuck, coloca // delante de #define ENABLE_NUNCHUCK
  • si no quieres usar un controlador de Gamecube, coloca // delante de #define ENABLE_GAMECUBE.

En el IDE de Arduino, elija Herramientas | Junta | Serie STM32F103C genérica.

Presione el botón de carga de la flecha hacia la derecha. Tenga en cuenta que es posible que deba presionar el botón de reinicio (o desenchufar / enchufar) la placa en el momento adecuado si recibe un mensaje de que no se reconoce la placa.

Paso 6: Conexión de la máquina de ejercicio

Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio
Conexión de la máquina de ejercicio

Empalme en un conector para la conexión de su máquina de ejercicio. En nuestra máquina elíptica, la soldé, mientras que en la bicicleta estática, pude usar conectores dupont macho y hembra. En la elíptica, hice un agujero en el costado de la consola para encajar la conexión. En la máquina de ejercicios, solo tengo cables que sobresalen y una pequeña caja impresa en 3D (archivo OpenSCAD) en el exterior.

Paso 7: Caso del proyecto

Caso de proyecto
Caso de proyecto
Caso de proyecto
Caso de proyecto
Caso de proyecto
Caso de proyecto
Caso de proyecto
Caso de proyecto

Uno puede encerrar el proyecto en una pequeña caja de cartón, un contenedor de tupperware o un gabinete impreso en 3D personalizado. Como tengo una impresora 3D, opté por la carcasa personalizada. Los archivos OpenSCAD y STL están aquí.

Los pies están diseñados para pegarse (funciona con superpegamento) a la parte inferior y para que se les peguen pies de goma pegajosos.

También pegué con pegamento en caliente algunos cierres de velcro tanto en la caja del proyecto como en las máquinas de ejercicios.

Paso 8: utilizar

Usar
Usar
Usar
Usar
Usar
Usar
Usar
Usar

Los dos botones pueden cambiar entre hasta 16 modos de emulación diferentes (en realidad, puede tener más, pero solo hay cuatro LED en el proyecto para mostrar el número de modo). Los modos de emulación se definen en gamecubecontroller.h en el boceto. Para la mayoría de los juegos, puede usar el modo 1, joystick deslizante unificado al 100% de velocidad. El joystick emulado tiene un control deslizante (en realidad, dos controles deslizantes, pero ambos hacen lo mismo) que se controla mediante la rotación de la máquina de ejercicios. Los botones y el joystick en sí están controlados por el controlador de Gamecube o Nunchuck. En Windows, algunos juegos admiten un controlador XBox 360 pero no un joystick USB. Para esos, use el modo 13 (presione el botón hacia abajo desde el modo 1).

Los modos 9 y 10 le permiten pedalear más lento y aún así obtener una depresión completa del deslizador, lo cual es bueno para los niños o para las máquinas de ejercicio configuradas con una resistencia más alta. También puede ajustar las velocidades en exercisemachine.ino.

Hay muchos otros modos de emulación. Se incluye una referencia imprimible en modelist.pdf con el boceto.

Cuando pedalea en la máquina de ejercicios, los LED del proyecto cambian de mostrar el número de modo actual a la velocidad. Cuando las cuatro luces están encendidas, su velocidad es máxima (el control deslizante emulado tiene la extensión máxima); en ese momento, no obtiene ninguna ventaja en el juego al ir más rápido. Además, el LED azul en la placa STM32F1 está encendido cuando todo funciona, pero parpadea cuando se activa el sensor de rotación.

Para invertir el movimiento, mueva el interruptor de palanca de dirección en la caja del adaptador.

En Windows, ejecute joy.cpl para calibrar y ver cómo funcionan las cosas. Debido a que es una molestia tener que pedalear muy rápido para calibrar el joystick emulado, hay una manera de hacer trampa para la calibración. En el controlador de Gamecube, si permanece quieto durante unos 10 segundos, puede comenzar a usar los botones laterales para controlar los controles deslizantes del joystick emulados. Con el Nunchuck, mientras mantiene presionado el botón de modo menos, puede usar el joystick arriba / abajo para controlar los controles deslizantes emulados.

Si desea una GUI para cambiar los modos de emulación, en Windows el boceto incluye mode.py, un script de Python con una GUI para cambiar de modo. También puede invocar mode.py en un archivo por lotes que inicia un juego.

Dos juegos que he encontrado que funcionan muy bien con la máquina de ejercicios son Toybox Turbos y SuperTuxCart (gratis).

El adaptador también incluye muchas otras funciones de emulación. Por ejemplo, puede usarlo como un sencillo adaptador de controlador Nunchuck o Gamecube, emulando joystick, teclado (por ejemplo, flechas / WASD) y / o mouse. Hay muchos modos enumerados en gamecubecontroller.h. También puede conectar un teclado compatible con Dance Dance Revolution Gamecube / Wii y usarlo para jugar juegos no diseñados para él, como Tetris, para mayor diversión y ejercicio.

Recomendado: