Cuprins:

Controler de joc USB pentru exerciții: 8 pași (cu imagini)
Controler de joc USB pentru exerciții: 8 pași (cu imagini)

Video: Controler de joc USB pentru exerciții: 8 pași (cu imagini)

Video: Controler de joc USB pentru exerciții: 8 pași (cu imagini)
Video: Andra Gogan Tik Tok❤ 2024, Noiembrie
Anonim
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc
Aparat de exerciții USB Controller de joc

Pentru a încuraja exercițiul în sine și în familie, am creat un adaptor care emulează un adaptor standard de controler de joc USB, dar care controlează viteza de mișcare a jocului pedalând pe o mașină eliptică sau o bicicletă de exerciții. Este deosebit de plăcut pentru jocurile de curse. Cu siguranță îl motivează pe cineva să pedaleze rapid atunci când joci jocuri de curse.

Hardware-ul principal este o placă de dezvoltare STM32F103C8 de 2 $ „pastilă neagră” cu nucleul stm32duino Arduino și o bibliotecă USB HID pe care am dezvoltat-o pe baza furcii de bază a libarra111. STM32F1 este rapid și ieftin și are suport USB cu viteză maximă, deci este perfect pentru proiect.

Pentru a utiliza, trebuie să atingeți senzorul de rotație de pe bicicleta eliptică sau de exerciții (dacă senzorul de rotație funcționează diferit de cele de pe mașinile noastre - aproximativ 3v, activ scăzut - poate fi necesar să modificați circuitul și / sau codul).

Viteza de rotație eliptică / bicicletă controlează glisorul controlerului. În plus, conectați un controller standard Wii Nunchuck sau Gamecube la adaptor pentru mișcarea joystick-ului, butoane etc. Există o mulțime de moduri de control diferite. De exemplu, este posibil ca copiii mai mici să aibă nevoie de o viteză sporită, iar unele jocuri pot folosi o schemă de control diferită. Există un număr de scheme de control încorporate în software, iar altele pot fi ușor adăugate în cod. Dispozitivul poate emula un controler de joc USB, tastatură, mouse, controler XBox 360 sau o combinație a primelor trei.

Direcția de mișcare nu este detectată în prezent: pentru a comuta între mișcarea înainte și înapoi, adaptorul are un comutator. (Alternativ, s-ar putea folosi un senzor magnetic cu efect de hală ca acest dispozitiv și să schimbe circuitul și software-ul.)

Adaptorul funcționează ca un controler USB standard, deci îl puteți folosi cu Windows, Linux, OS X, Android etc.

Ca bonus, adaptorul are toate funcțiile acestui proiect, funcționând ca un adaptor Gamecube cu funcții complete, permițându-vă să utilizați controlere Gamecube pe un computer, inclusiv controlul jocurilor cu covorașe de dans Dance Dance Revolution compatibile Gamecube / Wii.

Costul este sub aproximativ 10 USD, plus carcasa (am un design imprimabil 3D), fire și lipire. Părți:

  • Placă de dezvoltare „Black Pill” stm32f103c8 (2 USD pe Aliexpress)
  • Soclu Gamecube (1,60 USD pe Aliexpress, pentru un cablu prelungitor Gamecube care poate fi tăiat)
  • Nunchuck socket breakout board (0,51 dolari pe Aliexpress; căutați Wiichuck)
  • Comutator mic cu două poziții (sub 1 USD pe Aliexpress)
  • Alegerea dvs. de conectori cu două conductori, de sex masculin și de sex feminin (aproximativ 1 USD pe Aliexpress dacă aveți conectori cu butoi de 5,5 mm); aveți nevoie de un conector de sex feminin pentru fiecare aparat de exerciții
  • 2 comutatoare tactile (sub 0,50 USD pe Aliexpress)
  • 4 LED-uri roșii (sub 0,50 USD pe Aliexpress; puteți utiliza și un mic ecran LCD Nokia)
  • condensatori: 10uF electrolitic și opțional 100nF
  • rezistențe: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • placă mică proto (sub 1 USD pe Aliexpress).

Un Nunchuck este bun pentru o singură mână cu un aparat eliptic. Pe o bicicletă de exerciții, puteți utiliza un adaptor cu două mâini, cum ar fi cel Gamecube. Dacă doriți doar să utilizați una dintre aceste două opțiuni de control, puteți utiliza mai puține conexiuni.

De asemenea, aveți nevoie de un computer, un fier de lipit și un multimetru. De asemenea, veți avea nevoie de o punte UART-to-USB (am folosit un Arduino Mega pe care l-am avut pentru un alt proiect; sau puteți cumpăra un modul CP2102 pe Aliexpress pentru un dolar) pentru a instala un bootloader pe pilula dvs. neagră pentru al utiliza cu Mediul Arduino sau altfel puteți cheltui încă câțiva dolari și puteți obține placa de dezvoltare RobotDyn cu un bootloader Arduino preîncărcat.

Permiteți-mi să adaug că particip la acest concurs pentru roți, deoarece este o modalitate de a lega roțile virtuale în jocurile de curse de mașini de pe un computer cu roțile fizice ale bicicletelor de exerciții și ale elipticelor.

Pasul 1: Atingeți În senzorul de rotație

Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație
Atingeți În senzorul de rotație

Ambele aparate de exerciții pe care le-am piratat au o consolă care afișează viteza. Există fire care rulează între consolă și corpul mașinii. Trebuie să accesați aceste fire pentru a accesa datele. Dacă mașinile dvs. sunt ca ale mele, consola poate fi îndepărtată și acolo găsiți fie un cablu cu bandă (eliptic), fie două fire (bicicletă). Le-am atins prin deconectarea firelor și punerea lor în legătură cu jumperi individuali de la bărbat la femeie în care aș putea să intru.

Folosiți încercări și erori și un multimetru pentru a identifica o pereche de fire între care are un impuls de tensiune în timpul unei rotații complete.

Practic, burghiul este acesta: conectați multimetrul la o pereche de fire (având grijă să nu scurtați nimic) cu mașina în funcțiune și rotiți foarte încet pedalele. În ambele mașini, există o pereche de fire între care în mod normal tensiunea este în jur de + 3V, dar în timpul unei porțiuni scurte de rotație cade la sol: aceasta este o schemă activă-scăzută. S-ar putea să descoperiți că mașina dvs. are o schemă activă-înaltă în care cea mai mare parte a rotației este împământată, iar pulsul este pozitiv, apoi va trebui să editați schița Arduino.

Dacă credeți că există vreo șansă ca oricare dintre firele din consola cu care aveți de-a face să fie de curent alternativ, vă recomand să vă opriți dacă nu știți cu adevărat ce faceți. Din fericire, bicicleta noastră de exerciții este alimentată de baterie și prizele noastre eliptice într-un neg de perete, astfel încât există doar aproximativ 12V DC în jurul consolei.

În cazul bicicletei de exerciții, a fost foarte ușor. Erau doar patru fire. Două au fost pentru monitorul ritmului cardiac și două au fost pentru senzorul de rotație.

Eliptica avea mult mai multe fire, deci era mai mult de lucru. Metoda forței brute este aceasta. Atașați un multimetru la o pereche de fire. Faceți încet o rotație completă (sau ceva mai mult pentru orice eventualitate) pe pedale și vedeți dacă există o scădere de tensiune sau un salt. Dacă da, îl ai. Dacă nu, repetați pentru o altă pereche. Este o mulțime de încercări și erori: pentru 13 fire, sunt 78 de rotații.

Iată un truc care vă poate ajuta să accelerați căutarea perechii de fire potrivite. S-ar putea să sperați că aparatul dvs., ca și al meu, are tensiunea detectorului în mod normal ridicată cu un impuls scăzut. Dacă da, atunci dacă lăsați pedalele într-o locație aleatorie, aveți șanse mari ca cele două fire ale detectorului să aibă între + 3V sau + 5V între ele. Deci, faceți testul de rotație a pedalei numai pentru acele perechi de fire care au între ele + 3V sau + 5V.

Un alt truc. S-ar putea să puteți identifica unde declanșează senzorul de rotație în rotația pedalei. De exemplu, mașina dvs. ar putea să clipească ceva pe ecran atunci sau să actualizeze afișarea vitezei sau să se activeze din modul de repaus sau să emită un semnal sonor. Dacă da, deplasați pedalele la aproximativ 1/3 dintr-o rotație, apoi căutați perechi de fire care au între ele 3-5V și testați-le deplasând pedalele în poziția în care se declanșează senzorul.

Dacă puteți identifica firul de împământare, puteți accelera considerabil procesul, deoarece trebuie doar să mergeți între pământ și fiecare fir necunoscut. În mod ciudat, însă, pe eliptica noastră, solul sursei de alimentare nu părea să fie același cu solul detectorului de rotație.

După ce identificați firele, notați-le. Asigurați-vă că notați:

  • nivelul de înaltă tensiune: dacă este mai mult de aproximativ 3,3 V, dar nu mai mult de 5 V, veți dori să schimbați circuitul pentru a utiliza pinul A9 în loc de A7 pentru detectarea rotației, deoarece pinul A9 are o toleranță de 5 V, iar A7 nu, și modificați o linie în schița mea; dacă este mai mare de 5V, va trebui să adăugați un divizor de tensiune
  • dacă pulsul de detectare a rotației este scăzut sau ridicat: dacă pulsul este ridicat, va trebui să editați o linie în schița mea Arduino.

Dacă aveți un osciloscop, iar aparatul de exerciții este alimentat de la baterie, puteți utiliza și osciloscopul în locul multimetrului. (Dacă aparatul de exerciții este conectat la curent alternativ, la fel și osciloscopul dvs., trebuie să știți despre buclele la sol și cum să le evitați. Aveți grijă!)

Pasul 2: Pregătiți Consiliul de dezvoltare

Pregătiți Consiliul de dezvoltare
Pregătiți Consiliul de dezvoltare
Pregătiți Consiliul de dezvoltare
Pregătiți Consiliul de dezvoltare
Pregătiți Consiliul de dezvoltare
Pregătiți Consiliul de dezvoltare

Lipiți cele șase știfturi jumper centrale pe pastila neagră.

Dacă aveți o placă RobotDyn cu bootloader-ul Arduino, conectați B0- și B1- la pinii centrali și ați terminat cu pasul.

În caz contrar, acum trebuie să instalați bootloader-ul. Veți avea nevoie fie de o punte UART la USB independentă, fie puteți utiliza un Arduino Uno sau Mega în acest scop. Deși pilula neagră funcționează la 3,3V, pinii UART sunt toleranți la 5V, deci nu vă faceți griji dacă conectorul dvs. funcționează la 3,3V sau 5V.

Dacă aveți un Uno sau Mega, puneți un cablu jumper între RESET și GROUND. Acest lucru transformă Arduino într-o punte UART dedicată USB, cu excepția faptului că pinii TX / RX sunt inversul modului în care sunt de obicei pe un conector.

Descărcați binarul bootloader. Doriți generic_boot20_pb12.bin. Pe Windows, instalați Flash Loader Demonstrator al ST. Pe Linux (și poate OS X și chiar Windows, dacă preferați instrumentele de linie de comandă), utilizați în schimb acest script python, dar instrucțiunile mele vor fi pentru Windows.

Faceți următoarele conexiuni:

  • PA9 către UART bridge RX („TX” dacă utilizați trucul Arduino)
  • PA10 către UART bridge TX („RX” dacă utilizați trucul Arduino)
  • G la solul podului UART

Îmi place să folosesc sfaturi de sondă logică pentru a face conexiunile de pe partea STM32, dar ați putea, de asemenea, să lipiți în unele fire pe care le puteți tăia ulterior (sau să le desfaceți dacă doriți să fiți îngrijite).

Conectați-vă podul UART la computer. Porniți Black Pill prin portul USB (cel mai bine dacă îl conectați la un încărcător, nu la computer, deoarece computerul se va plânge probabil de un dispozitiv USB nerecunoscut). Porniți Flash Loader Demonstrator. Alegeți portul COM pentru podul UART. Alegeți „Eliminați protecția” dacă este disponibilă. Alegeți o versiune flash de 64 KB, nu 128 KB. Și încărcați binarul bootloader.

Deconectați totul și apoi mutați jumperul de la B0 + / centru la B0- / centru. Acum aveți un bootloader pe care îl puteți folosi cu IDE-ul Arduino.

Pasul 3: Pregătiți Stm32duino în Arduino IDE

Pregătiți Stm32duino în Arduino IDE
Pregătiți Stm32duino în Arduino IDE
Pregătiți Stm32duino în Arduino IDE
Pregătiți Stm32duino în Arduino IDE

Presupun că ai instalat cel mai recent IDE Arduino.

În Instrumente | Panouri | Boards Manager, instalați suport pentru Arduino Zero (pur și simplu introduceți Zero în căutare, faceți clic pe intrarea găsită și apoi Instalați). Da, nu lucrați cu un zero, dar acest lucru va instala compilatorul gcc potrivit.

Apoi, descărcați nucleul stm32duino. Pe Windows, vă recomand să descărcați fișierul zip, deoarece, atunci când am verificat fișierele (desigur, cu svn), am avut unele probleme de permisiuni cu fișierele din directorul de instrumente Windows care necesită remedierea. Puneți filiala în Arduino / Hardware / Arduino_STM32 (astfel veți avea foldere precum Arduino / Hardware / Arduino_STM32 / STM32F1 etc.) Pe Windows, instalați driverele rulând drivere / win / install_drivers.bat.

Instalați biblioteca mea USBHID: Accesați Sketch | Includeți biblioteca | Gestionați bibliotecile și căutați USBHID. Faceți clic pe acesta și faceți clic pe Instalare.

Instalați biblioteca mea GameControllersSTM32: Accesați Sketch | Includeți biblioteca | Gestionați bibliotecile și căutați GameControllers. Faceți clic pe acesta și faceți clic pe Instalare.

Pasul 4: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Configurarea mea folosește patru LED-uri pentru a indica modul de emulare curent în binar (da, se poate folosi un afișaj LCD, dar aveam LED-uri situate în jur când am construit acest lucru), două butoane pentru a comuta modul în sus și în jos (și faceți altele) trucuri) și un comutator pentru comutarea direcției de mișcare.

În plus, există o intrare I2C de la Nunchuck și un conector la controlerul Gamecube. Dacă doriți să acceptați doar unul dintre aceste două, puteți doar să editați gamecube.h în schiță și să vă salvați câteva lipiri.

Am folosit un pic de protoboard pentru a monta cele patru LED-uri de mod și două butoane de comutare a modului (în sus și în jos), precum și un rezistor de tragere pentru datele Gamecube. Am scos 3,3V la protoboard, dar nu a fost nevoie să-i aduc teren, deși puteți, dacă doriți. Am folosit un alt pic de protoboard pentru a monta conectorul Nunchuck.

Tăiați cablul Gamecube. Doriți să lucrați cu partea de soclu, cea pe care controller-ul dvs. se va conecta. Cabluri de bandă pentru conectare.

Acum faceți aceste conexiuni conform schemei de circuit:

  • Condensator 10uF între 3.3v și masă (cu partea minus a oricărui electrolitic la masă). Acest lucru ar trebui să fie cât mai aproape de cip posibil, așa că l-am lipit chiar pe placa de dezvoltare, nu pe protoboard. Pentru o măsură bună, puteți adăuga un 100nF așa cum am făcut-o, dar nu sunt sigur că este necesar.
  • Soclul Gamecube # 2 - A6 pe placa stm32
  • Rezistor de 1 Kohm între soclul Gamecube # 2 și 3.3V pe placa stm32 (sau pe protoboard)
  • Soclul Gamecube # 3 și # 4 - împământat pe placa stm32
  • Soclul Gamecube # 6 - 3.3V pe placa stm32 (sau pe protoboard)
  • LED în serie cu rezistență de 220ohm (sau mai mare) între A0 pe placa stm32 și 3,3V (capăt negativ (plat) la PA0; capăt pozitiv la 3,3V)
  • Repetați cu LED + rezistență între A1 și 3.3V, A2 și 3.3V și A3 și 3.3V
  • Comutați momentan între A5 pe placa stm32 (modul increment) și 3,3V și alta între A4 și 3,3V (modul decrement); acest comutator crește numărul modului
  • Comutați între A8 și 3.3V
  • masina de exercitii la sol - stm32 ground
  • semnal pozitiv al aparatului de exerciții - placa stm32 A7 (rețineți că A7 este bun doar pentru 3,3V; dacă aparatul dvs. de exerciții este de 5V, utilizați A9 și editați gamecube.h)
  • Masă Nunchuck (etichetată - pe placa adaptorului meu) - masă stm32
  • Nunchuck + 3.3V (etichetat +) - stm32 3.3V
  • Nunchuck SDA (etichetat D) - stm32 B7
  • Nunchuck SCL (etichetat C) - stm32 B6
  • Rezistor de 10Kohm între Nunchuck SDA și 3.3V pe placa stm32
  • Rezistor de 10Kohm între Nunchuck SCL și 3.3V pe placa stm32.

Pasul 5: Instalați Sketch

Instalați Sketch
Instalați Sketch
Instalați Sketch
Instalați Sketch

Descărcați schița adaptorului USB Gamecube și încărcați-o în IDE-ul Arduino. Există câteva opțiuni de controlat în gamecubecontroller.h:

  • eliminați // în fața #define ENABLE_EXERCISE_MACHINE (toată lumea trebuie să o facă)
  • dacă trebuia să mutați conexiunea aparatului de exerciții la A9, schimbați PA7 în PA9 în const uint32_t rotationDetector = linia PA7
  • dacă pulsul de detectare a rotației mașinii de exerciții este ridicat, schimbați #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING la #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • dacă nu doriți să utilizați un Nunchuck, puneți // în fața #define ENABLE_NUNCHUCK
  • dacă nu doriți să utilizați un controler Gamecube, puneți // în fața #define ENABLE_GAMECUBE.

În IDE-ul Arduino, alegeți Instrumente | Consiliu | Seria STM32F103C generică.

Apăsați butonul de încărcare cu săgeata spre dreapta. Rețineți că poate fi necesar să apăsați butonul de resetare (sau deconectați / conectați) placa la momentul potrivit dacă primiți un mesaj că placa nu este recunoscută.

Pasul 6: Exercitați conexiunea la mașină

Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții
Conexiune Mașină de exerciții

Împingeți un cric pentru conectarea la mașină de exerciții. Pe mașina noastră eliptică, am lipit-o, în timp ce pe bicicleta de exerciții, am putut folosi conectori dupont masculin și feminin. Pe eliptică, am făcut o gaură în partea laterală a consolei pentru a se potrivi conexiunii. Pe aparatul de exerciții, am doar fire care ies din ea și o mică cutie imprimată 3D (fișier OpenSCAD) în exterior.

Pasul 7: Cazul proiectului

Cazul proiectului
Cazul proiectului
Cazul proiectului
Cazul proiectului
Cazul proiectului
Cazul proiectului
Cazul proiectului
Cazul proiectului

Se poate închide proiectul într-o cutie mică de carton, într-un container de tupperware sau într-o carcasă tipărită 3D personalizată. Din moment ce am o imprimantă 3D, m-am orientat spre incinta personalizată. Fișierele OpenSCAD și STL sunt aici.

Picioarele sunt concepute pentru a lipi (superglue funcționează) în partea de jos și pentru a avea picioare lipicioase de cauciuc lipite în ele.

De asemenea, am lipit la cald niște dispozitive de fixare cu cârlig și buclă atât la carcasa proiectului, cât și la aparatele de exerciții.

Pasul 8: Utilizați

Utilizare
Utilizare
Utilizare
Utilizare
Utilizare
Utilizare
Utilizare
Utilizare

Cele două butoane pot comuta între până la 16 moduri de emulare diferite (puteți avea mai multe, de fapt, dar există doar patru LED-uri în proiect pentru a afișa numărul modului). Modurile de emulare sunt definite în gamecubecontroller.h în schiță. Pentru majoritatea jocurilor, puteți utiliza modul 1, joystick glisant unificat la o viteză de 100%. Joystick-ul emulat are un glisor (de fapt două glisoare, dar ambele fac același lucru) care este controlat de rotația mașinii de exerciții. Butoanele și joystick-ul în sine sunt controlate de controlerul Gamecube sau Nunchuck. Pe Windows, unele jocuri acceptă un controler XBox 360, dar nu un joystick USB. Pentru aceștia, utilizați modul 13 (apăsați butonul în jos din modul 1).

Modurile 9 și 10 vă permit să pedalați mai lent și să obțineți în continuare o depresiune completă, ceea ce este plăcut pentru copii sau pentru aparatele de exerciții cu rezistență mai mare. De asemenea, puteți regla viteza în exercisemachine.ino.

Există multe alte moduri de emulare. O referință tipărită este inclusă în modelist.pdf împreună cu schița.

Când pedalați pe aparatul de exerciții, LED-urile de pe proiect trec de la afișarea numărului de mod curent la viteză. Când toate cele patru lumini sunt aprinse, viteza dvs. este maximă (glisorul emulat are extensie maximă) - în acel moment, nu obțineți niciun avantaj în joc dacă mergeți mai repede. În plus, LED-ul albastru de pe placa STM32F1 este aprins când totul funcționează, dar clipește când se declanșează senzorul de rotație.

Pentru a inversa mișcarea, rotiți comutatorul de direcție de pe cutia adaptorului.

Pe Windows, rulați joy.cpl pentru a calibra și a vedea cum funcționează lucrurile. Deoarece este o pacoste să trebuiască să pedalezi foarte repede pentru a calibra joystick-ul emulat, există o modalitate de a trișa pentru calibrare. Pe controlerul Gamecube, dacă rămâneți nemișcat timp de aproximativ 10 secunde, puteți începe să utilizați butoanele umărului pentru a controla glisoarele de joystick emulate. Cu Nunchuck, în timp ce țineți apăsat butonul mod-minus, puteți utiliza joystick-ul sus / jos pentru a controla glisoarele emulate.

Dacă doriți o interfață grafică pentru comutarea modurilor de emulare, pe Windows schița include mode.py, un script python cu o interfață grafică pentru comutarea modurilor. De asemenea, puteți invoca mode.py într-un fișier batch care lansează un joc.

Două jocuri despre care am găsit că funcționează foarte bine cu aparatul de exerciții sunt Toybox Turbos și SuperTuxCart (gratuit).

Adaptorul include, de asemenea, o mulțime de alte caracteristici de emulare. De exemplu, îl puteți folosi ca un adaptor Nunchuck sau Gamecube Controller simplu, care emulează joystick, tastatură (de exemplu, săgeți / WASD) și / sau mouse. Există o mulțime de moduri listate în gamecubecontroller.h. De asemenea, puteți conecta un pad compatibil Dance Dance Revolution Gamecube / Wii și îl puteți folosi pentru a juca jocuri care nu sunt concepute pentru acesta, cum ar fi Tetris, pentru distracție și exerciții suplimentare.

Recomandat: