USB kontroler igre za vježbanje na mašini za vježbanje: 8 koraka (sa slikama)
USB kontroler igre za vježbanje na mašini za vježbanje: 8 koraka (sa slikama)
Anonim
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje
USB kontroler za igre uređaja za vježbanje

Kako bih potaknuo vježbanje u sebi i u porodici, napravio sam adapter koji emulira standardni adapter za USB kontroler igre, ali kontrolira brzinu kretanja igre okretanjem pedala na eliptičnoj mašini ili sobnom biciklu. Posebno je lijep za trkačke igre. To zasigurno motivira nekoga da brzo pedalira dok igra trkačke igre.

Glavni hardver je razvojna ploča STM32F103C8 "black pill" vrijedna 2 USD sa stm32duino Arduino jezgrom i USB HID bibliotekom koju sam razvio na bazi jezgre vilice libarra111. STM32F1 je brz i jeftin i ima USB podršku pune brzine, pa je savršen za projekt.

Za korištenje morate dodirnuti senzor rotacije na eliptičnom biciklu ili sobnom biciklu (ako vaš senzor rotacije radi drugačije od onih na našim strojevima-oko 3 V, aktivan nisko-možda ćete morati promijeniti kolo i/ili kôd).

Eliptična brzina/brzina rotacije bicikla kontrolira klizač kontrolera. Dodatno, u adapter priključujete standardni Wii Nunchuck ili Gamecube kontroler za kretanje džojstika, dugmad itd. Postoji mnogo različitih načina upravljanja. Na primjer, manjoj djeci će možda trebati malo povećati brzinu, a neke igre mogu koristiti drugačiju shemu upravljanja. U softveru postoji niz ugrađenih upravljačkih shema, a druge se lako mogu dodati u kôd. Uređaj može oponašati USB kontroler za igre, tastaturu, miš, XBox 360 kontroler ili neku kombinaciju prva tri.

Smjer kretanja trenutno nije otkriven: za prebacivanje između kretanja naprijed i natrag, adapter ima prekidač. (Alternativno, može se upotrijebiti magnetni senzor sa Hall-efektom poput ovog uređaja i promijeniti krug i softver.)

Adapter radi kao standardni USB kontroler, pa ga možete koristiti sa Windows, Linux, OS X, Android itd.

Kao bonus, adapter ima sve funkcije ovog projekta, radi kao potpuno funkcionalan Gamecube adapter, omogućavajući vam upotrebu Gamecube kontrolera na računaru, uključujući i upravljanje igrama s plesnim prostirkama kompatibilnim sa Gamecube/Wii Dance Dance Revolution.

Cijena je ispod 10 USD, plus kućište (imam dizajn za 3D ispis), žice i lemljenje. Dijelovi:

  • Razvojna ploča "Black Pill" stm32f103c8 (2 USD na Aliexpressu)
  • Gamecube utičnica (1,60 USD na Aliexpressu, za Gamecube produžni kabel koji se može odsjeći)
  • Daska za razbijanje utičnice s nuchuckom (0,51 USD na Aliexpressu; potražite Wiichuck)
  • Mali prekidač u dva položaja (ispod 1 USD na Aliexpressu)
  • Vaš izbor dvožičnih muških i ženskih konektora (oko 1 USD na Aliexpressu ako idete sa priključcima za cijevi od 5,5 mm); potreban vam je jedan ženski konektor po spravi za vežbanje
  • 2 taktilna prekidača (ispod 0,50 USD na Aliexpressu)
  • 4 crvene LED diode (ispod 0,50 USD na Aliexpressu; mogli biste koristiti i mali Nokia LCD ekran)
  • kondenzatori: 10uF elektrolitički i opcionalno 100nF
  • otpornici: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • mala proto ploča (ispod 1 USD na Aliexpressu).

Nunchuck je dobar za upotrebu jednom rukom sa eliptičnom mašinom. Na sobnom biciklu možete koristiti adapter za dvije ruke poput Gamecube. Ako želite koristiti samo jednu od ove dvije opcije kontrole, možete koristiti manje veza.

Takođe su vam potrebni računar, lemilica i multimetar. Trebat će vam i UART-to-USB most (koristio sam Arduino Mega koji sam imao za drugi projekt; ili možete kupiti modul CP2102 na Aliexpressu za dolar) da instalirate bootloader na svoju crnu pilulu da biste ga koristili sa Arduino okruženje, inače možete potrošiti još par dolara i nabaviti razvojnu ploču RobotDyna sa unaprijed učitanim Arduino pokretačkim programom.

Dopustite mi da dodam da ovo prijavljujem na natjecanje Wheels, jer je to način povezivanja virtualnih kotača u automobilskim trkačkim igrama na računaru s fizičkim kotačima sobnih bicikala i eliptika.

Korak 1: Dodirnite Into Rotation Sensor

Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor
Dodirnite Into Rotation Sensor

Obje sprave za vježbanje koje sam hakirao imaju konzolu koja prikazuje brzinu. Između konzole i kućišta stroja prolaze žice. Morate uključiti ove žice za pristup podacima. Ako su vaše mašine poput mojih, konzola se može ukloniti i tamo ćete pronaći ili vrpčani kabel (eliptični) ili dvije žice (bicikl). Ja sam to iskoristio tako što sam odvojio žice i spojio ih pojedinačnim muško-ženskim kratkospojnicima u koje sam mogao ući.

Pomoću pokušaja i greške i multimetra identificirajte par žica između kojih ima naponski impuls tijekom potpune rotacije.

U osnovi, vježba je sljedeća: spojite multimetar na par žica (pazeći da ništa ne kratite) dok mašina radi, i vrlo sporo rotirajte pedale. U obje naše mašine postoji par žica između kojih je obično napon oko +3V, ali tijekom kratkog dijela rotacije pada na tlo: ovo je shema aktivno-nisko. Možda ćete otkriti da vaša mašina ima aktivnu šemu gdje je većina rotacije brušena, a puls pozitivan, a zatim ćete morati urediti Arduino skicu.

Ako mislite da postoji šansa da je bilo koja od žica u konzoli s kojom imate posla mrežni napon, preporučujem da prestanete osim ako zaista ne znate što radite. Na sreću, naš bicikl za vježbanje se napaja iz baterije, a naši eliptični utikači utikači su u zidnu bradavicu tako da oko konzole ima samo oko 12V DC.

U slučaju sobnog bicikla, bilo je zaista lako. Postojale su samo četiri žice. Dva su bila za monitor otkucaja srca, a dva za senzor rotacije.

Eliptična je imala mnogo više žica, pa je bilo više posla. Metoda grube sile je sljedeća. Priključite multimetar na par žica. Polako potpuno okrećite (ili malo više za svaki slučaj) pedale i provjerite ima li pada napona ili skoka. Ako da, imate ga. Ako ne, ponovite za drugi par. To je mnogo pokušaja i grešaka: za 13 žica to je 78 rotacija.

Evo trika koji bi vam mogao pomoći da ubrzate potragu za odgovarajućim parom žica. Možete se nadati da vaša mašina, poput moje, ima napon detektora normalno visok s niskim pulsom. Ako je tako, onda ako ostavite pedale na slučajnoj lokaciji, imate dobre šanse da dvije žice detektora imaju oko +3V ili +5V između njih. Zato testirajte samo rotaciju pedale za one parove žica koje imaju +3V ili +5V između njih.

Još jedan trik. Možda ćete moći identificirati gdje se u rotaciji papučice aktivira senzor okretanja. Na primjer, vaša bi mašina tada mogla zasvijetliti na ekranu ili ažurirati prikaz brzine, aktivirati se iz načina mirovanja ili se oglasiti zvučnim signalom. Ako je tako, tada pomaknite pedale za otprilike 1/3 rotacije, a zatim potražite parove žica koje imaju 3-5V između njih, te ih testirajte pomicanjem pedala u položaj gdje se senzor aktivira.

Ako možete identificirati žicu za uzemljenje, možete znatno ubrzati proces, jer tada morate ići samo između uzemljenja i svake nepoznate žice. Čudno, međutim, na našoj eliptičnoj strani uzemljenje izvora napajanja nije izgledalo isto kao i tlo detektora rotacije.

Kada identificirate žice, zabilježite ih. Obavezno zabilježite:

  • nivo visokog napona: ako je više od oko 3,3 V, ali ne više od 5 V, htjet ćete promijeniti krug tako da koristi pin A9 umjesto A7 za otkrivanje rotacije jer je pin A9 tolerancija 5 V, a A7 nije, i uredite jedan red na mojoj skici; ako je više od 5V, morat ćete dodati razdjelnik napona
  • da li je puls za otkrivanje rotacije nizak ili visok: ako je puls visok, morat ćete urediti liniju u mojoj Arduino skici.

Ako imate osciloskop, a mašina za vježbanje se napaja iz baterije, možete koristiti i osciloskop umjesto multimetra. (Ako je stroj za vježbanje priključen na AC, a vaš osciloskop isto tako, morate znati o petljama uzemljenja i kako ih izbjeći. Budite oprezni!)

Korak 2: Pripremite odbor za razvoj

Pripremite Odbor za razvoj
Pripremite Odbor za razvoj
Pripremite Odbor za razvoj
Pripremite Odbor za razvoj
Pripremite Odbor za razvoj
Pripremite Odbor za razvoj

Spajajte šest centralnih kratkospojnih klinova na svoju crnu pilulu.

Ako imate RobotDyn ploču s Arduino pokretačkim programom, spojite B0- i B1- na središnje pinove i završili ste s korakom.

U suprotnom, sada morate instalirati pokretački program. Trebat će vam ili samostalni UART na USB most ili u tu svrhu možete koristiti Arduino Uno ili Mega. Iako crna pilula radi na 3.3V, UART pinovi su tolerantni na 5V, stoga ne brinite o tome radi li vaš konektor na 3.3V ili 5V.

Ako imate Uno ili Mega, spojite kabel između RESET i GROUND. Ovo pretvara Arduino u namjenski UART na USB most, osim što su TX/RX pinovi obrnuti od uobičajenog na konektoru.

Preuzmite binarni bootloader. Želite generic_boot20_pb12.bin. U sistemu Windows instalirajte ST -ov Flash Loader Demonstrator. Na Linuxu (i možda OS X, pa čak i Windowsu ako više volite alate za naredbeni red), umjesto toga koristite ovu python skriptu, ali moje upute bit će za Windows.

Uspostavite sljedeće veze:

  • PA9 na UART most RX ("TX" ako koristite Arduino trik)
  • PA10 na UART most TX ("RX" ako koristite Arduino trik)
  • G do UART mosta

Volim koristiti savjete logičkih sondi za povezivanje na strani STM32, ali možete i samo zalemiti neke žice koje kasnije možete odrezati (ili odlepiti ako želite biti uredni).

Povežite svoj UART most sa računarom. Uključite Black Pill putem USB priključka (najbolje je ako ga povežete na punjač, a ne na računar, jer će se računar vjerovatno žaliti na neprepoznati USB uređaj). Pokrenite Flash Loader Demonstrator. Odaberite COM port za svoj UART most. Odaberite "Ukloni zaštitu" ako je dostupno. Odaberite flash verziju od 64 KB umjesto 128 KB. I učitajte binarni datoteku pokretačkog programa.

Isključite sve, a zatim pomaknite kratkospojnik iz B0+/središta u B0-/središte. Sada imate bootloader koji možete koristiti s Arduino IDE -om.

Korak 3: Pripremite Stm32duino u Arduino IDE -u

Pripremite Stm32duino u Arduino IDE -u
Pripremite Stm32duino u Arduino IDE -u
Pripremite Stm32duino u Arduino IDE -u
Pripremite Stm32duino u Arduino IDE -u

Pretpostavljam da imate instaliran najnoviji Arduino IDE.

U alatu | Daske | Boards Manager, instalirajte podršku za Arduino Zero (samo stavite Zero u pretragu, kliknite na pronađeni unos, a zatim instalirajte). Da, ne radite sa Zero -om, ali ovo će instalirati pravi gcc kompajler.

Zatim preuzmite jezgru stm32duino. U sustavu Windows preporučujem preuzimanje zip datoteke, budući da sam prilikom provjere datoteka (doduše, sa svn) imao nekih problema s dozvolama za datoteke u direktoriju Windows alata koje je trebalo popraviti. Postavite podružnicu u Arduino/Hardver/Arduino_STM32 (tako ćete imati mape poput Arduino/Hardver/Arduino_STM32/STM32F1, itd.) U sustavu Windows instalirajte upravljačke programe pokretanjem driver / win / install_drivers.bat.

Instaliraj moju USBHID biblioteku: Idite na Sketch | Uključi biblioteku | Upravljajte bibliotekama i tražite USBHID. Kliknite na nju i kliknite na Instaliraj.

Instaliraj moju biblioteku GameControllersSTM32: Idite na Sketch | Uključi biblioteku | Upravljajte bibliotekama i tražite GameControllers. Kliknite na nju i kliknite na Instaliraj.

Korak 4: Krug

Krug
Krug
Krug
Krug
Krug
Krug
Krug
Krug

Moje postavljanje koristi četiri LED diode za binarni prikaz trenutnog načina emulacije (da, mogao bi se koristiti LCD ekran, ali imao sam LED diode koje su ležale okolo dok sam ovo pravio), dva tastera za prebacivanje načina gore i dolje (i neke druge trikovi) i prekidač za promjenu smjera kretanja.

Dodatno, postoji I2C ulaz iz Nunchucka i konektor za Gamecube kontroler. Ako želite podržati samo jedno od ovo dvoje, možete samo urediti gamecube.h u skici i uštedjeti si lemljenja.

Koristio sam mali dio protobora za ugradnju četiri LED diode za način rada i dva gumba za promjenu načina rada (gore i dolje), kao i jedan pull-up otpornik za podatke Gamecube. Izveo sam 3.3V na protoboard, ali nisam morao na njega unositi uzemljenje, mada možete ako želite. Koristio sam još jedan mali dio ploče za montiranje Nunchuck konektora.

Odrežite Gamecube kabel. Želite raditi sa stranom utičnice, onom na koju će se uključiti vaš kontroler. Strip kabeli za spajanje.

Sada napravite ove veze prema dijagramu kola:

  • 10uF kondenzator između 3,3 V i mase (sa minus stranom bilo koje elektrolitike na zemlji). Ovo bi trebalo biti što je moguće bliže čipu, pa sam ga lemio direktno na razvojnu ploču, a ne na proto ploču. Za dobru mjeru, možete dodati 100nF kao i ja, ali nisam siguran da je to potrebno.
  • Gamecube utičnica #2 - A6 na stm32 ploči
  • Otpornik od 1Kohm između Gamecube utičnice #2 i 3.3V na stm32 ploči (ili na protoboru)
  • Gamecube utičnice #3 i #4 - uzemljene na stm32 ploči
  • Gamecube utičnica #6 - 3.3V na stm32 ploči (ili na protoboru)
  • LED serijski sa 220ohm (ili većim) otpornikom između A0 na stm32 ploči i 3.3V (negativni kraj (ravno) do PA0; pozitivan kraj do 3.3V)
  • Ponovite sa LED+otpornikom između A1 i 3.3V, A2 i 3.3V i A3 i 3.3V
  • Trenutni prekidač između A5 na stm32 ploči (način povećanja) i 3,3 V i drugi između A4 i 3,3 V (način smanjenja); ovaj prekidač povećava broj načina rada
  • Prebacivanje između A8 i 3.3V
  • stroj za vježbanje uzemljen - stm32 tlo
  • pozitivan signal vježbačice - stm32 ploča A7 (imajte na umu da je A7 dobar samo za 3,3 V; ako je vaša vježba mašina 5 V, koristite A9 i uredite gamecube.h)
  • Unutarnja masa (označeno - na mojoj adapterskoj ploči) - stm32 uzemljenje
  • Nunchuck +3.3V (označeno sa +) - stm32 3.3V
  • Nunchuck SDA (oznaka D) - stm32 B7
  • Nunchuck SCL (označeno sa C) - stm32 B6
  • 10Kohm otpornik između Nunchuck SDA i 3.3V na stm32 ploči
  • 10Kohm otpornik između Nunchuck SCL i 3.3V na stm32 ploči.

Korak 5: Instalirajte Sketch

Instalirajte Sketch
Instalirajte Sketch
Instalirajte Sketch
Instalirajte Sketch

Preuzmite moju skicu Gamecube USB adaptera i učitajte je u Arduino IDE. Postoje neke opcije za kontrolu u gamecubecontroller.h:

  • ukloniti // ispred #define ENABLE_EXERCISE_MACHINE (ovo moraju učiniti svi)
  • ako ste morali premjestiti vezu vježbačice na A9, promijenite PA7 u PA9 u const uint32_t rotacijiDetector = PA7 redak
  • ako je puls otkrivanja rotacije vaše vježbačice visok, promijenite #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING na #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • ako ne želite koristiti Nunchuck, stavite // ispred #define ENABLE_NUNCHUCK
  • ako ne želite koristiti Gamecube kontroler, stavite // ispred #define ENABLE_GAMECUBE.

U Arduino IDE -u odaberite Tools | Board | Generička serija STM32F103C.

Pritisnite dugme za otpremu sa strelicom nadesno. Imajte na umu da ćete možda morati pritisnuti gumb za poništavanje (ili isključiti/uključiti) ploču u pravo vrijeme ako dobijete poruku da ploča nije prepoznata.

Korak 6: Povezivanje mašine za vježbanje

Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje
Povezivanje mašine za vežbanje

Spojite priključak za povezivanje vaše sprave za vježbanje. Na našoj eliptičnoj mašini zalemio sam je, dok sam na sobnom biciklu mogao da koristim muške i ženske dupont konektore. Na elipsi sam napravio rupu na bočnoj strani konzole kako bi odgovarao vezi. Na mašini za vježbanje samo vire žice iz nje i malo 3D ispisane kutije (OpenSCAD datoteka) s vanjske strane.

Korak 7: Slučaj projekta

Project Case
Project Case
Project Case
Project Case
Project Case
Project Case
Project Case
Project Case

Projekt se može zatvoriti u malu kartonsku kutiju, kontejner za tupperware ili prilagođeno 3D štampano kućište. Pošto imam 3D štampač, odlučio sam se za prilagođeno kućište. OpenSCAD i STL datoteke su ovdje.

Noge su dizajnirane za lijepljenje (super ljepilo djeluje) na dno i zalijepljene ljepljive gumene noge.

Također sam vruće zalijepio neki zatvarač sa kukom i petljom na kućište projekta i na sprave za vježbanje.

Korak 8: Koristite

Upotreba
Upotreba
Upotreba
Upotreba
Upotreba
Upotreba
Upotreba
Upotreba

Dva dugmeta mogu prebacivati između 16 različitih načina emulacije (zapravo možete imati više, ali u projektu postoje samo četiri LED diode za prikaz broja načina rada). Načini emulacije definirani su u gamecubecontroller.h u skici. Za većinu igara možete koristiti način 1, jedinstveni klizač sa džojstikom 100% brzine. Emulirani džojstik ima klizač (zapravo dva klizača, ali oba rade istu stvar) kojim se upravlja rotacijom mašine za vježbanje. Gumbi i sam joystick kontroliraju Gamecube kontroler ili Nunchuck. U sustavu Windows neke igre podržavaju XBox 360 kontroler, ali ne i USB joystick. Za njih koristite način rada 13 (pritisnite tipku za dolje iz načina 1).

Režimi 9 i 10 omogućuju vam da sporije vrtite pedale i još uvijek imate potpunu depresiju klizača, što je lijepo za djecu ili za sprave za vježbanje postavljene na veći otpor. Brzine možete prilagoditi i u gymnaut.ino.

Postoje mnogi drugi načini emulacije. Referenca za štampanje je uključena u modelist.pdf sa skicom.

Kada pedalirate na spravama za vježbanje, LED diode na projektu prelaze s prikaza trenutnog broja načina rada na brzinu. Kada su sva četiri svjetla upaljena, vaša je brzina najveća (emulirani klizač ima maksimalno proširenje)-u tom trenutku nećete imati prednosti u igri ako idete brže. Osim toga, plava LED dioda na ploči STM32F1 svijetli kada sve radi, ali treperi kada se senzor okretanja aktivira.

Za povratno kretanje, okrenite prekidač za smjer na adapterskoj kutiji.

Na Windows -u pokrenite joy.cpl da biste kalibrirali i vidjeli kako stvari funkcioniraju. Budući da je smetnja što morate jako brzo okretati pedale da biste kalibrirali emulirani joystick, postoji način da se varate za kalibraciju. Na Gamecube kontroleru, ako ostanete mirni oko 10 sekundi, možete početi koristiti tipke na ramenu za upravljanje emuliranim klizačima džojstika. Sa Nunchuckom, dok držite tipku minus-način, umjesto toga možete koristiti joystick gore/dolje za kontrolu emuliranih klizača.

Ako želite GUI za promjenu načina emulacije, u Windowsu skica uključuje mode.py, python skriptu s GUI -om za promjenu načina rada. Također možete pozvati mode.py u batch datoteci koja pokreće igru.

Dvije igre za koje sam otkrio da odlično funkcioniraju sa spravom za vježbanje su Toybox Turbos i SuperTuxCart (besplatno).

Adapter također uključuje mnoge druge značajke emulacije. Na primjer, možete ga koristiti kao jednostavan Nunchuck ili Gamecube Controller adapter, oponašajući joystick, tastaturu (npr. Strelice/WASD) i/ili miša. Mnogo je načina prikazano na gamecubecontroller.h. Također možete priključiti Dance Dance Revolution Gamecube/Wii-kompatibilnu podlogu i koristiti je za igranje igara koje za nju nisu dizajnirane, poput Tetrisa, za dodatnu zabavu i vježbe.