Taula de continguts:

Controlador de jocs USB de màquina d’exercici: 8 passos (amb imatges)
Controlador de jocs USB de màquina d’exercici: 8 passos (amb imatges)

Vídeo: Controlador de jocs USB de màquina d’exercici: 8 passos (amb imatges)

Vídeo: Controlador de jocs USB de màquina d’exercici: 8 passos (amb imatges)
Vídeo: [#3] "No se encuentra CONTROLADOR de dispositivo" ... [SOLUCIÓN Windows 7] 2024, Desembre
Anonim
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici
Controlador de jocs USB de màquina d’exercici

Per fomentar l'exercici personal i familiar, vaig fabricar un adaptador que emula un adaptador de control de joc USB estàndard, però que controla la velocitat del moviment del joc pedalant en una màquina el·líptica o una bicicleta d'exercici. És particularment agradable per als jocs de carreres. Sens dubte, motiva a pedalar ràpidament quan es juguen jocs de carreres.

El maquinari principal és una placa de desenvolupament STM32F103C8 de $ 2 "píndoles negres" amb el nucli stm32duino Arduino i una biblioteca USB HID que vaig desenvolupar basada en la bifurcació bàsica de libarra111. El STM32F1 és ràpid i barat i té suport USB a tota velocitat, de manera que és perfecte per al projecte.

Per utilitzar-lo, heu de tocar el sensor de rotació de la bicicleta el·líptica o d’exercici (si el sensor de rotació funciona de manera diferent dels de les nostres màquines, aproximadament 3 V, actiu baix, potser haureu de modificar el circuit i / o el codi).

La velocitat de rotació el·líptica / de la bicicleta controla el control lliscant del controlador. A més, connecteu un controlador Wii Nunchuck o Gamecube estàndard a l'adaptador per al moviment del joystick, botons, etc. Hi ha molts modes de control diferents. Per exemple, és possible que els nens més petits necessitin augmentar la velocitat una mica, i alguns jocs poden utilitzar un esquema de control diferent. Hi ha una sèrie d’esquemes de control integrats al programari i es poden afegir fàcilment altres al codi. El dispositiu pot emular un controlador de jocs USB, teclat, ratolí, controlador XBox 360 o alguna combinació dels tres primers.

Actualment no es detecta la direcció del moviment: per canviar entre el moviment cap endavant i el cap enrere, l'adaptador té un commutador alternatiu. (Alternativament, es podria utilitzar un sensor magnètic d'efecte hall com aquest dispositiu i canviar el circuit i el programari).

L'adaptador funciona com un controlador USB estàndard, de manera que podeu utilitzar-lo amb Windows, Linux, OS X, Android, etc.

Com a avantatge, l'adaptador té totes les funcions d'aquest projecte, ja que funciona com un adaptador Gamecube de funcions completes, que us permetrà utilitzar controladors Gamecube en un ordinador, inclòs el control de jocs amb estores de ball Dance Dance Revolution compatibles amb Gamecube / Wii.

El cost és inferior als 10 dòlars, més el cas (tinc un disseny imprimible en 3D), cables i soldadura. Parts:

  • Taula de desenvolupament "Black Pill" stm32f103c8 (2 dòlars a Aliexpress)
  • Socket Gamecube (1,60 dòlars a Aliexpress, per a un cable d’extensió Gamecube que es pot tallar)
  • Tauler de ruptura de sòcol Nunchuck (0,51 dòlars a Aliexpress; cerca Wiichuck)
  • Petit commutador de commutació de dues posicions (menys d'1 dòlar a Aliexpress)
  • La vostra elecció de connectors masculins i femenins de dos conductors (aproximadament 1 dòlar a Aliexpress si aneu amb connectors de barril de 5,5 mm); necessiteu un connector femella per màquina d’exercici
  • 2 interruptors tàctils (menys de 0,50 dòlars a Aliexpress)
  • 4 LED vermells (menys de 0,50 dòlars a Aliexpress; també podeu utilitzar una petita pantalla LCD de Nokia)
  • condensadors: 10uF electrolític i opcional 100nF
  • resistències: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • tauler proto petit (menys de $ 1 a Aliexpress).

Un Nunchuck és bo per a un ús amb una sola mà amb una màquina el·líptica. En una bicicleta d’exercici, podeu utilitzar un adaptador de dues mans com el Gamecube. Si només voleu utilitzar una d'aquestes dues opcions de control, podeu utilitzar menys connexions.

També necessiteu un ordinador, un soldador i un multímetre. També necessitareu un pont UART a USB (he utilitzat un Arduino Mega que tenia per a un altre projecte; o podeu comprar un mòdul CP2102 a Aliexpress per un dòlar) per instal·lar un carregador d’arrencada a la píndola negra per utilitzar-lo amb el Entorn Arduino, o bé podeu gastar un parell de dòlars més i obtenir la placa de desenvolupament de RobotDyn amb un carregador d’Arduino precarregat.

Permeteu-me afegir que participo al concurs Wheels, perquè és una manera d’enllaçar les rodes virtuals dels jocs de carreres de cotxes en un ordinador amb les rodes físiques de les bicicletes i el·líptiques.

Pas 1: toqueu el sensor de rotació

Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació
Toqueu Al sensor de rotació

Les dues màquines per fer exercici que vaig piratejar tenen una consola que mostra la velocitat. Hi ha cables que s’executen entre la consola i el cos de la màquina. Cal accedir a aquests cables per accedir a les dades. Si les vostres màquines són com les meves, es pot treure la consola i hi trobareu un cable de cinta (el·líptic) o dos cables (bicicleta). Vaig aprofitar-los desconnectant els cables i connectant-los amb ponts individuals entre homes i dones que podia aprofitar.

Utilitzeu proves i errors i un multímetre per identificar un parell de cables entre els quals hi ha un pols de tensió durant una rotació completa.

Bàsicament, el trepant és el següent: connecteu el multímetre a un parell de cables (tenint cura de no curtmetre res) amb la màquina en funcionament i gireu molt lentament els pedals. A les dues màquines, hi ha un parell de cables entre els quals normalment el voltatge és d’uns 3 V, però durant una breu part de la rotació cau a terra: es tracta d’un esquema actiu-baix. És possible que la vostra màquina tingui un esquema actiu-alt en què la major part de la rotació estigui a terra, i el pols sigui positiu, i llavors haureu d’editar l’esbós d’Arduino.

Si creieu que hi ha alguna possibilitat que algun dels cables de la consola que esteu tractant sigui de corrent altern, us recomano aturar-lo tret que sàpiga realment el que feu. Afortunadament, la nostra bicicleta d’exercici funciona amb bateria i els nostres endolls el·líptics en una berruga de paret, de manera que només hi ha uns 12V CC al voltant de la consola.

En el cas de la bicicleta d’exercici, va ser molt fàcil. Només hi havia quatre cables. Dues eren per al pulsòmetre i dues per al sensor de rotació.

L’el·líptica tenia molts més cables i, per tant, feia més feina. El mètode de la força bruta és aquest. Connecteu un multímetre a un parell de cables. Feu lentament una rotació completa (o una mica més per si de cas) als pedals i vegeu si hi ha un salt de tensió o salt. Si és així, ho tens. Si no, repetiu per un altre parell. Hi ha moltes proves i errors: per a 13 cables, són 78 rotacions.

Aquí teniu un truc que us pot ajudar a accelerar la cerca del parell de cables adequat. Podeu esperar que la vostra màquina, com la meva, tingui el voltatge del detector normalment alt amb un pols baix. Si és així, si deixeu els pedals en un lloc aleatori, és probable que els dos cables del detector tinguin al voltant de + 3V o + 5V entre ells. Per tant, només feu la prova de rotació del pedal per a aquells parells de cables que tinguin + 3V o + 5V entre ells.

Un altre truc. És possible que pugueu identificar on es desencadena el sensor de rotació de la rotació del pedal. Per exemple, és possible que la vostra màquina parpellegi alguna cosa a la pantalla, que actualitzi la visualització de velocitat o que s'activi des del mode de repòs o que emeti un so. Si és així, allunyeu els pedals a aproximadament 1/3 d'una rotació i, a continuació, busqueu parells de cables que tinguin 3-5V entre ells i proveu-los movent els pedals a la posició on s'activa el sensor.

Si podeu identificar el cable de terra, podeu accelerar considerablement el procés, ja que només cal anar entre terra i cada cable desconegut. Curiosament, però, a la nostra el·líptica la terra de la font d'alimentació no semblava ser la mateixa que la del terra del detector de rotació.

Un cop identifiqueu els cables, anoteu-los. Assegureu-vos de tenir en compte:

  • el nivell d’alta tensió: si és superior a uns 3,3 V però no més de 5 V, voldreu canviar el circuit per utilitzar el pin A9 en lloc d’A7 per a la detecció de rotació, ja que el pin A9 té una tolerància de 5 V i A7 no, i editeu una línia al meu esbós; si supera els 5V, haureu d'afegir un divisor de tensió
  • si el pols de detecció de rotació és baix o alt: si el pols és alt, haureu d’editar una línia al meu esbós d’Arduino.

Si teniu un oscil·loscopi i la màquina d’exercici funciona amb bateria, també podeu utilitzar l’oscil·loscopi en lloc del multímetre. (Si la màquina d’exercicis està endollada a corrent altern i també ho és el vostre oscil·loscopi, heu de conèixer els bucles de terra i com evitar-los. Aneu amb compte!)

Pas 2: prepareu la Junta de desenvolupament

Prepareu la Junta de Desenvolupament
Prepareu la Junta de Desenvolupament
Prepareu la Junta de Desenvolupament
Prepareu la Junta de Desenvolupament
Prepareu la Junta de Desenvolupament
Prepareu la Junta de Desenvolupament

Soldeu els sis passadors centrals a la pastilla negra.

Si teniu una placa RobotDyn amb el carregador d’arrencada Arduino, connecteu B0 i B1 als pins centrals i ja heu acabat el pas.

En cas contrari, ara heu d’instal·lar el carregador d’arrencada. Necessitareu un pont UART a USB independent o podeu utilitzar un Arduino Uno o Mega per a aquest propòsit. Tot i que la píndola negra funciona a 3,3 V, els pins UART són tolerants a 5 V, així que no us preocupeu si el vostre connector funciona a 3,3 V o 5 V.

Si teniu un Uno o Mega, poseu un cable de pont entre RESET i GROUND. Això converteix l'Arduino en un pont UART dedicat a USB, tret que els pins TX / RX són el contrari de com solen estar en un connector.

Descarregueu el binari del carregador d'arrencada. Voleu generic_boot20_pb12.bin. Al Windows, instal·leu el Flash Loader Demonstrator de ST. A Linux (i potser OS X i fins i tot Windows si preferiu eines de línia d'ordres), utilitzeu aquest script Python, però les meves instruccions seran per a Windows.

Feu les connexions següents:

  • PA9 a UART bridge RX ("TX" si utilitzeu el truc Arduino)
  • PA10 a UART Bridge TX ("RX" si utilitzeu el truc Arduino)
  • De G a terra del pont UART

M'agrada fer servir consells de sonda lògica per fer les connexions del costat STM32, però també podeu soldar alguns cables que més tard podreu tallar (o desconnectar si voleu ser netes).

Connecteu el pont UART a l'ordinador. Enceneu la píndola negra mitjançant el port USB (millor si el connecteu a un carregador en lloc de l’ordinador, ja que és probable que l’ordinador es queixi d’un dispositiu USB no reconegut). Inicieu el demostrador de Flash Loader. Trieu el port COM per al vostre pont UART. Trieu "Elimina la protecció" si està disponible. Trieu una versió flash de 64 KB en lloc de 128 KB. I pengeu el binari del carregador d’arrencada.

Desconnecteu-ho tot i, a continuació, moveu el pont de B0 + / centre a B0- / center. Ara teniu un carregador d’arrencada que podeu utilitzar amb l’IDE Arduino.

Pas 3: prepareu Stm32duino a Arduino IDE

Prepareu Stm32duino a Arduino IDE
Prepareu Stm32duino a Arduino IDE
Prepareu Stm32duino a Arduino IDE
Prepareu Stm32duino a Arduino IDE

Suposo que teniu instal·lat el darrer IDE Arduino.

A Eines | Taulers | Boards Manager, instal·leu el suport per a l'Arduino Zero (només heu de posar Zero a la cerca, feu clic a l'entrada trobada i després Instal·leu). Sí, no esteu treballant amb Zero, però això instal·larà el compilador gcc adequat.

A continuació, descarregueu el nucli stm32duino. Al Windows, recomano descarregar el fitxer zip, ja que quan he comprovat els fitxers (és cert, amb svn), tenia alguns problemes de permisos amb els fitxers del directori d’eines del Windows que necessitaven reparació. Poseu la sucursal a Arduino / Hardware / Arduino_STM32 (de manera que tingueu carpetes com Arduino / Hardware / Arduino_STM32 / STM32F1, etc.) Al Windows, instal·leu els controladors executant drivers / win / install_drivers.bat.

Instal·leu la meva biblioteca USBHID: aneu a Sketch | Inclou la biblioteca | Gestioneu les biblioteques i cerqueu USBHID. Feu-hi clic i feu clic a Instal·la.

Instal·leu la meva biblioteca GameControllersSTM32: aneu a Sketch | Inclou la biblioteca | Gestioneu les biblioteques i cerqueu GameControllers. Feu-hi clic i feu clic a Instal·la.

Pas 4: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

La meva configuració utilitza quatre LEDs per indicar el mode d’emulació actual en binari (sí, es podria fer servir una pantalla LCD, però tenia LEDs al voltant quan vaig construir això), dos polsadors per canviar de mode amunt i avall (i fer una altra trucs) i un commutador alternatiu per canviar la direcció del moviment.

A més, hi ha una entrada I2C des del Nunchuck i un connector al controlador Gamecube. Si només voleu donar suport a un d'aquests dos, només podeu editar gamecube.h a l'esbós i estalviar-vos una mica de soldadura.

He utilitzat una petita part de protoboard per muntar els quatre LEDs de mode i dos botons de commutació de mode (amunt i avall), així com la resistència d’extracció per a les dades de Gamecube. Vaig treure 3,3 V a la protoborda, però no vaig necessitar fer-hi servir, tot i que si voleu, podeu. Vaig utilitzar un altre petit protoboard per muntar el connector Nunchuck.

Tallar el cable Gamecube. Voleu treballar amb el costat del sòcol, el que connectarà el controlador. Cables de tira per connectar.

Ara feu aquestes connexions segons el diagrama del circuit:

  • Condensador de 10uF entre 3,3 v i terra (amb el costat negatiu de qualsevol electrolític a terra). Això hauria d’estar el més a prop possible del xip, de manera que el vaig soldar directament al tauler de desenvolupament en lloc del protobordo. Per a una bona mesura, podeu afegir un 100nF com jo, però no estic segur que sigui necessari.
  • Socket Gamecube # 2 - A6 al tauler stm32
  • Resistència de 1 Kohm entre el sòcol Gamecube # 2 i 3,3 V a la placa stm32 (o al protoboard)
  • Socket Gamecube # 3 i # 4: terra al tauler stm32
  • Socket Gamecube # 6 - 3.3V a la placa stm32 (o al protoboard)
  • LED en sèrie amb resistència de 220ohm (o més gran) entre A0 a la placa stm32 i 3,3V (extrem negatiu (pla) a PA0; extrem positiu a 3,3V)
  • Repetiu amb LED + resistència entre A1 i 3.3V, A2 i 3.3V i A3 i 3.3V
  • Canvi momentani entre A5 a la placa stm32 (mode increment) i 3,3V i un altre entre A4 i 3,3V (mode decrement); aquest commutador augmenta el número de mode
  • Canvia entre A8 i 3,3 V.
  • terra de la màquina d’exercici - terra stm32
  • exercici de senyal positiu de la màquina: placa A7 de stm32 (tingueu en compte que A7 només és bo per a 3,3 V; si la màquina d’exercici és de 5 V, utilitzeu A9 i editeu gamecube.h)
  • Terra Nunchuck (etiquetada - a la meva placa adaptadora) - terra STM32
  • Nunchuck + 3,3V (etiquetat +) - stm32 3,3V
  • Nunchuck SDA (etiquetat D) - stm32 B7
  • Nunchuck SCL (etiquetat C) - stm32 B6
  • Resistència de 10 Kohm entre Nunchuck SDA i 3,3 V a la placa stm32
  • Resistència de 10 Kohm entre Nunchuck SCL i 3,3 V a la placa stm32.

Pas 5: instal·leu Sketch

Instal·leu Sketch
Instal·leu Sketch
Instal·leu Sketch
Instal·leu Sketch

Descarregueu el meu esbós de l’adaptador USB Gamecube i carregueu-lo a l’IDE Arduino. Hi ha algunes opcions a controlar a gamecubecontroller.h:

  • elimina // davant #define ENABLE_EXERCISE_MACHINE (tothom ha de fer-ho)
  • si heu de moure la connexió de la màquina d'exercicis a A9, canvieu PA7 a PA9 a la constant uint32_t rotationDetector = línia PA7
  • si el pols de detecció de la rotació de la màquina d'exercicis és alt, canvieu #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING per #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • si no voleu utilitzar un Nunchuck, poseu // al davant de #define ENABLE_NUNCHUCK
  • si no voleu utilitzar un controlador Gamecube, poseu // davant #define ENABLE_GAMECUBE.

A l’IDE Arduino, trieu Eines | Junta | Sèrie genèrica STM32F103C.

Premeu el botó de pujada de la fletxa dreta. Tingueu en compte que potser haureu de prémer el botó de reinici (o desconnectar / endollar) el tauler en el moment adequat si rebeu un missatge que indica que el tauler no és reconegut.

Pas 6: Exercici de la connexió amb la màquina

Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici
Connexió a màquina d’exercici

Empalmeu en una presa per a la connexió de la màquina d’exercici. A la nostra màquina el·líptica, la vaig soldar, mentre que amb la bicicleta d’exercici, vaig poder utilitzar connectors dupont mascle i femella. A l’el·líptica, vaig fer un forat al lateral de la consola perquè s’ajustés a la connexió. A la màquina d’exercicis, només hi surten cables i una petita caixa impresa en 3D (fitxer OpenSCAD) a l’exterior.

Pas 7: cas del projecte

Projecte Cas
Projecte Cas
Projecte Cas
Projecte Cas
Projecte Cas
Projecte Cas
Projecte Cas
Projecte Cas

Es pot incloure el projecte en una petita caixa de cartró, un contenidor de tupperware o un recinte imprès 3D personalitzat. Com que tinc una impressora 3D, he optat pel recinte personalitzat. Els fitxers OpenSCAD i STL són aquí.

Els peus estan dissenyats per enganxar-se (el superglue funciona) a la part inferior i tenir uns peus de goma enganxosos.

També vaig enganxar una mica de fixació de ganxo i bucle tant a la caixa del projecte com a les màquines per fer exercici.

Pas 8: utilitzeu

Ús
Ús
Ús
Ús
Ús
Ús
Ús
Ús

Els dos botons poden canviar entre fins a 16 modes d'emulació diferents (en podeu tenir més, de fet, però només hi ha quatre LEDs al projecte per mostrar el número de mode). Els modes d'emulació es defineixen a gamecubecontroller.h a l'esbós. Per a la majoria de jocs, podeu utilitzar el mode 1, joystick lliscant unificat a una velocitat del 100%. El joystick emulat té un control lliscant (en realitat dos control lliscant, però tots dos fan el mateix) que està controlat per la rotació de la màquina d’exercici. Els botons i el joystick estan controlats pel controlador Gamecube o Nunchuck. Al Windows, alguns jocs admeten un controlador XBox 360 però no un joystick USB. Per a aquests, utilitzeu el mode 13 (premeu el botó avall des del mode 1).

Els modes 9 i 10 us permeten pedalar més lentament i, tot i així, obtenir una depressió total del control lliscant, cosa que és agradable per als nens o per a les màquines d’exercici amb una resistència més alta. També podeu ajustar les velocitats a exercisemachine.ino.

Hi ha molts altres modes d’emulació. S'inclou una referència imprimible a modelist.pdf amb l'esbós.

Quan pedaleu a la màquina d’exercici, els LED del projecte canvien de mostrar el número de mode actual a la velocitat. Quan s’encenen els quatre llums, la vostra velocitat és màxima (el control lliscant emulat té la màxima extensió); en aquest moment, no obtingueu cap avantatge al joc d’anar més ràpid. A més, el LED blau de la placa STM32F1 està encès quan tot funciona, però parpelleja quan s’activa el sensor de rotació.

Per invertir el moviment, gireu l'interruptor de commutació de direcció de la caixa de l'adaptador.

Al Windows, executeu joy.cpl per calibrar i veure com funcionen les coses. Com que és una molèstia haver de pedalar molt ràpid per calibrar el joystick emulat, hi ha una manera d’enganyar per calibrar. Al controlador Gamecube, si us quedeu quiets durant uns 10 segons, podeu començar a utilitzar els botons d'espatlla per controlar els control lliscants del joystick emulats. Amb el Nunchuck, mentre manteniu premut el botó mode-menys, podeu utilitzar el joystick cap amunt / cap avall per controlar els lliscadors emulats.

Si voleu una interfície gràfica d’usuari per canviar de mode d’emulació, a Windows l’esbós inclou mode.py, un script python amb una interfície gràfica d’usuari per canviar de mode. També podeu invocar mode.py en un fitxer per lots que llança un joc.

Dos jocs que he trobat que funcionen molt bé amb la màquina d’exercicis són Toybox Turbos i SuperTuxCart (gratuït).

L'adaptador també inclou moltes altres funcions d'emulació. Per exemple, podeu utilitzar-lo com a adaptador de controlador Nunchuck o Gamecube senzill, emulant joystick, teclat (per exemple, fletxes / WASD) i / o ratolí. Hi ha molts modes llistats a gamecubecontroller.h. També podeu connectar un coixinet compatible amb Dance Dance Revolution Gamecube / Wii i utilitzar-lo per jugar a jocs no dissenyats per a ell, com el Tetris, per a diversió i exercici addicionals.

Recomanat: