Harjutusmasina USB mängukontroller: 8 sammu (piltidega)
Harjutusmasina USB mängukontroller: 8 sammu (piltidega)
Anonim
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller
Harjutusmasina USB mängukontroller

Enese ja perega harjutamise julgustamiseks tegin adapteri, mis jäljendab tavalist USB mängukontrolleri adapterit, kuid kontrollib mängu liikumiskiirust elliptilisel masinal või velotrenažööril pedaalides. See on eriti tore võidusõidumängude jaoks. Kindlasti motiveerib see võidusõidumänge mängides kiiresti pedaalima.

Peamine riistvara on 2 dollari suurune "must pill" STM32F103C8 arendusplaat, millel on stm32duino Arduino tuum ja USB HID raamatukogu, mille ma arendasin libarra111 tuumakahvli põhjal. STM32F1 on kiire ja odav ning sellel on täiskiirusega USB-tugi, seega sobib see projekti jaoks ideaalselt.

Kasutamiseks peate puudutama elliptilise või velotrenažööri pöörlemisandurit (kui teie pöörlemisandur töötab erinevalt meie masinate omast-umbes 3 V, aktiivne madal-peate võib-olla ahelat ja/või koodi muutma).

Elliptiline/jalgratta pöörlemiskiirus juhib kontrolleri liugurit. Lisaks ühendate tavalise Wii Nunchucki või Gamecube'i kontrolleri juhtkangi liigutamiseks, nuppude jms jaoks adapteriga. Seal on palju erinevaid juhtimisrežiime. Näiteks võib olla vaja väiksematel lastel kiirust veidi suurendada ja mõned mängud võivad kasutada erinevat juhtimisskeemi. Tarkvaras on mitmeid sisseehitatud juhtimisskeeme ja teisi saab hõlpsasti koodi lisada. Seade võib jäljendada USB mängukontrollerit, klaviatuuri, hiirt, XBox 360 kontrollerit või mõnda kolme esimese kombinatsiooni.

Liikumise suunda ei tuvastata praegu: edasi -tagasi liikumise vahel liikumiseks on adapteril lülituslüliti. (Teise võimalusena võiks kasutada saaliefektiga magnetandurit nagu see seade ning muuta vooluahelat ja tarkvara.)

Adapter töötab tavalise USB -kontrollerina, nii et saate seda kasutada koos Windowsi, Linuxi, OS X -i, Androidiga jne.

Boonusena on adapteril kõik selle projekti funktsioonid, mis töötavad täisfunktsionaalse Gamecube'i adapterina, võimaldades teil kasutada Gamecube'i kontrollereid arvutis, sealhulgas juhtida mänge Gamecube/Wii ühilduvate tantsumattidega Dance Dance Revolution.

Maksumus on alla 10 dollari, pluss ümbris (mul on 3D prinditav disain), juhtmed ja jootmine. Osad:

  • "Must pill" stm32f103c8 arendusplaat (2 dollarit Aliexpressis)
  • Gamecube'i pistikupesa (1,60 dollarit Aliexpressis, Gamecube'i pikendusjuhtme jaoks, mida saab kärpida)
  • Nunchucki pistikupesa plaat (0,51 dollarit Aliexpressis; otsige Wiichucki)
  • Väike kaheasendiline lülituslüliti (Aliexpressis alla 1 dollari)
  • Teie valikul on kahe juhtmega mees- ja naissoost pistikud (umbes 1 dollar Aliexpressis, kui kasutate 5,5 mm võimsusega silindripistikuid); treeningmasina kohta on vaja ühte naissoost pistikut
  • 2 kombatavat lülitit (Aliexpressis alla 0,50 dollari)
  • 4 punast LED -i (Aliexpressis alla 0,50 dollari; võite kasutada ka väikest Nokia LCD -ekraani)
  • kondensaatorid: 10uF elektrolüütiline ja valikuline 100nF
  • takistid: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • väike protolaud (alla 1 dollari Aliexpressis).

Nunchuck sobib ühe käega kasutamiseks koos elliptilise masinaga. Treeningrattaga saate kasutada kahe käega adapterit nagu Gamecube. Kui soovite kasutada ainult ühte neist kahest juhtimisvalikust, võite kasutada vähem ühendusi.

Teil on vaja ka arvutit, jootekolvi ja multimeetrit. Teil on vaja ka UART-USB-silda (kasutasin Arduino Megat, mis mul oli mõne teise projekti jaoks; või saate osta dollari eest CP2102 mooduli Aliexpressist), et installida oma mustale pilli alglaadur, et seda koos Arduino keskkond, muidu võite kulutada veel paar dollarit ja hankida RobotDyni arendusplaadi koos Arduino alglaaduriga.

Lubage mul lisada, et osalen sellel võistlusel Rattad, sest see on viis, kuidas siduda arvutis autorallimängude virtuaalsed rattad velotrenažööride ja elliptiliste ratastega.

Samm: puudutage pöörlemisandurisse

Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur
Puudutage nuppu Pöörlemisandur

Mõlemal trenažööril, mida ma häkkisin, on konsool, mis kuvab kiirust. Konsooli ja masina korpuse vahel jooksevad juhtmed. Andmetele juurdepääsu saamiseks peate neid juhtmeid puudutama. Kui teie masinad on minu omad, saab konsooli eemaldada ja sealt leiate kas lintkaabli (elliptiline) või kaks juhtmest (jalgratas). Ma kasutasin neid, ühendades juhtmed lahti ja ühendades need üksikute mees-naissoost džempritega, mida saaksin kasutada.

Kasutage katse -eksituse meetodit ja multimeetrit, et tuvastada juhtmepaar, mille vahel on täispöörlemise ajal pingeimpulss.

Põhimõtteliselt on harjutus järgmine: ühendage multimeeter juhtmepaari külge (olge ettevaatlik, et mitte midagi lühistada), kui masin töötab, ja pöörake pedaale väga aeglaselt. Mõlemas meie masinas on juhtmete paar, mille vahel on pinge tavaliselt umbes +3 V, kuid lühikese pöörlemisperioodi jooksul langeb see maapinnale: see on aktiivne-madal skeem. Võib juhtuda, et teie masinal on aktiivne ja kõrge skeem, kus suurem osa pöörlemisest on jahvatatud ja pulss on positiivne, ja siis peate Arduino visandit muutma.

Kui arvate, et on mõni võimalus, et mõni konsooli juhtmestik, millega tegelete, on vahelduvvoolu vahelduvvool, soovitan peatada, kui te tõesti ei tea, mida teete. Õnneks on meie velotrenažöör patareitoitega ja meie elliptilised pistikud seinaküünlasse, nii et konsooli ümber on ainult umbes 12 V alalisvoolu.

Treeningratta puhul oli see tõesti lihtne. Juhtmeid oli ainult neli. Kaks olid pulsikella jaoks ja kaks pöörlemissensori jaoks.

Elliptilisel oli palju rohkem juhtmeid ja seega oli rohkem tööd. Toore jõu meetod on see. Kinnitage juhtmepaarile multimeeter. Tehke pedaalidel aeglaselt täielik pööre (või igaks juhuks natuke rohkem) ja vaadake, kas pingelangus või hüpe on olemas. Kui jah, siis olete selle saanud. Kui ei, korrake seda teise paari jaoks. See on palju katsetusi ja vigu: 13 juhtme puhul on see 78 pööret.

Siin on trikk, mis võib aidata teil kiirendada õige juhtmepaari otsimist. Võite loota, et teie masinal, nagu minu oma, on detektori pinge tavaliselt kõrge ja pulss on madal. Kui jah, siis kui jätate pedaalid juhuslikku kohta, on teil hea võimalus, et kahe anduri juhtme vahel on umbes +3 V või +5 V. Seega tehke pedaalide pöörlemiskatse ainult nende juhtmepaaride jaoks, mille vahel on +3V või +5V.

Veel üks trikk. Võimalik, et saate tuvastada, kus pedaali pöörlemisel pöörlemissensor käivitub. Näiteks võib teie masin siis ekraanil midagi vilgutada, kiiruse näidikut värskendada või unerežiimist aktiveerida või piiksuda. Kui jah, siis liigutage pedaalid umbes 1/3 pööret eemale ja otsige seejärel juhtmepaare, mille vahel on 3-5 V, ja katsetage neid, liigutades pedaalid asendisse, kus andur käivitub.

Kui saate maandusjuhtme tuvastada, saate protsessi oluliselt kiirendada, kuna peate seejärel minema ainult maa ja iga tundmatu juhtme vahele. Kummalisel kombel ei tundunud meie elliptiline toiteallika maandus sama mis pöörlemisanduri maapind.

Kui olete juhtmed tuvastanud, märkige need üles. Pange kindlasti tähele:

  • kõrgepinge tase: kui see on rohkem kui umbes 3,3 V, kuid mitte üle 5 V, siis soovite muuta vooluahelat, et kasutada pöörlemise tuvastamiseks A7 asemel tihvti A9, kuna tihvt A9 on 5 V tolerants ja A7 ei ole, ja muutke üks rida minu visandis; kui see on üle 5 V, peate lisama pingejaguri
  • kas pöörlemise tuvastamise impulss on madal või kõrge: kui impulss on kõrge, peate redigeerima rida minu Arduino visandis.

Kui teil on ostsilloskoop ja trenažöör töötab patareidega, saate multimeetri asemel kasutada ka ostsilloskoopi. (Kui trenažöör on ühendatud vahelduvvooluvõrku ja ka teie ostsilloskoop, peate teadma maapealsete silmuste ja nende vältimise kohta. Olge ettevaatlik!)

Samm: valmistage ette arendusnõukogu

Valmistage ette arendusnõukogu
Valmistage ette arendusnõukogu
Valmistage ette arendusnõukogu
Valmistage ette arendusnõukogu
Valmistage ette arendusnõukogu
Valmistage ette arendusnõukogu

Jootke kuus keskmist hüppajanõela oma musta pilli külge.

Kui teil on Arduino alglaaduriga RobotDyn-plaat, ühendage B0- ja B1- kesknööpidega ning olete sammuga valmis.

Vastasel juhul peate nüüd laadima alglaaduri. Teil on vaja kas eraldiseisvat UART -USB -silda või saate selleks kasutada Arduino Unot või Megat. Kuigi must pill töötab 3,3 V pingel, on UART -tihvtid 5 V tolerantsed, seega ärge muretsege, kas teie pistik töötab 3,3 V või 5 V pingel.

Kui teil on Uno või Mega, pange vahekaabel RESET ja GROUND vahele. See muudab Arduino spetsiaalseks UART -USB -sillaks, välja arvatud see, et TX/RX -nööpnõelad on vastupidised, nagu tavaliselt pistikul.

Laadige alla alglaaduri binaar. Sa tahad generic_boot20_pb12.bin. Windowsis installige ST Flash Loader Demonstrator. Linuxis (ja võib -olla OS X -is ja isegi Windowsis, kui eelistate käsureatööriistu), kasutage selle asemel seda pythoni skripti, kuid minu juhised on Windowsi jaoks.

Tehke järgmised ühendused:

  • PA9 kuni UART -sild RX ("TX", kui kasutate Arduino trikki)
  • PA10 kuni UART -sild TX ("RX", kui kasutate Arduino trikki)
  • G kuni UART silla maapinnani

Mulle meeldib STM32 poolel ühenduste tegemiseks kasutada loogikaanduri näpunäiteid, kuid võite ka lihtsalt jootma mõned juhtmed, mille saate hiljem katkestada (või jootmise tühjendada, kui soovite olla puhas).

Ühendage UART -sild arvutiga. Lülitage Black Pill sisse oma USB -pordi kaudu (kõige parem, kui ühendate selle laadijaga, mitte arvutiga, kuna arvuti kaebab tõenäoliselt tundmatu USB -seadme üle). Käivitage Flash Loader Demonstrator. Valige oma UART -silla jaoks COM -port. Valige "Eemalda kaitse", kui see on saadaval. Valige 64 kb, mitte 128 kb flash versioon. Ja laadige alglaaduri binaar üles.

Lülitage kõik välja ja lülitage hüppaja B0+/keskelt B0-/keskele. Nüüd on teil alglaadur, mida saate kasutada koos Arduino IDE -ga.

Samm: valmistage Stm32duino ette Arduino IDE -s

Valmistage Stm32duino ette Arduino IDE -s
Valmistage Stm32duino ette Arduino IDE -s
Valmistage Stm32duino ette Arduino IDE -s
Valmistage Stm32duino ette Arduino IDE -s

Eeldan, et teil on installitud uusim Arduino IDE.

Tööriistades | Lauad | Tahvlite haldur, installige Arduino Zero tugi (lihtsalt pange otsingusse Zero, klõpsake leitud kirjet ja seejärel Installi). Jah, te ei tööta Zeroga, kuid see installib õige gcc kompilaatori.

Seejärel laadige alla tuum stm32duino. Windowsis soovitan alla laadida zip -faili, kuna failide kontrollimisel (tõsi küll, svn -iga) oli mul Windowsi tööriistade kataloogis olevate failidega, mis vajasid parandamist, mõningaid õiguste probleeme. Pange haru kausta Arduino/Hardware/Arduino_STM32 (nii on teil kaustad nagu Arduino/Hardware/Arduino_STM32/STM32F1 jne). Windowsis installige draiverid, käivitades draiverid / win / install_drivers.bat.

Installige minu USBHID -kogu: minge visandile | Kaasa raamatukogu | Hallake raamatukogusid ja otsige USBHID -i. Klõpsake seda ja klõpsake nuppu Installi.

Installige minu GameControllersSTM32 teek: avage Sketch | Kaasa raamatukogu | Hallake raamatukogusid ja otsige mängukontrollereid. Klõpsake seda ja klõpsake nuppu Installi.

4. samm: ahel

Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring
Vooluring

Minu seadistus kasutab nelja LED-i, et näidata praegust emuleerimisrežiimi binaarrežiimis (jah, võiks kasutada LCD-ekraani, kuid mul olid selle ehitamisel LED-id), kaks nuppu, et lülitada režiimi üles ja alla (ja teha mõnda muud trikid) ja lülituslüliti liikumissuuna vahetamiseks.

Lisaks on Nunchuckilt I2C sisend ja Gamecube kontrolleri pistik. Kui soovite toetada ainult ühte neist kahest, saate eskiis gamecube.h lihtsalt redigeerida ja säästa jootmist.

Nelja režiimi LED-i ja kahe režiimilüliti nupu (üles ja alla) ning ühe Gamecube'i andmete jaoks mõeldud tõmbetakisti paigaldamiseks kasutasin väikest protoboardi. Tõin protoboardile välja 3,3 V, kuid ma ei pidanud sellele maad välja tooma, kuigi saate, kui soovite. Kasutasin Nunchucki pistiku kinnitamiseks veel väikest protoboardi.

Katkestage Gamecube'i kaabel. Soovite töötada pistikupesaga, millega teie kontroller ühendab. Ühendage kaablid ribadeks.

Nüüd tehke need ühendused vastavalt skeemile:

  • 10uF kondensaator 3,3 V ja maa vahel (kõigi elektrolüütide miinuspoolega maapinnal). See peaks olema kiibile võimalikult lähedal, nii et ma jootsin selle otse arendusplaadile, mitte protoboardile. Hea mõõtmiseks võite lisada 100 nF, nagu ma tegin, kuid ma pole kindel, kas seda vaja on.
  • Gamecube pesa #2 - A6 stm32 tahvlil
  • 1 ohm takisti Gamecube'i pistikupesa nr 2 ja 3,3 V vahel stm32 plaadil (või protoboardil)
  • Gamecube pesa #3 ja #4 - maandatud stm32 plaadil
  • Gamecube'i pistikupesa nr 6 - 3,3 V stm32 plaadil (või protoboardil)
  • LED jadamisi 220 oomi (või suurema) takistiga vahel A0 stm32 plaadil ja 3,3 V (negatiivne ots (tasane) kuni PA0; positiivne ots kuni 3,3 V)
  • Korda LED+takistiga vahemikus A1 kuni 3.3V, A2 ja 3.3V ning A3 ja 3.3V
  • Hetkeline lüliti A5 vahel stm32 plaadil (juurdekasvurežiim) ja 3,3 V ning teine A4 ja 3,3 V vahel (kahandusrežiim); see lüliti suurendab režiimi numbrit
  • Lülitage lüliti A8 ja 3.3V vahel
  • treeningmasina maa - stm32 maa
  • treeningmasina positiivne signaal - stm32 tahvel A7 (pange tähele, et A7 sobib ainult 3,3 V jaoks; kui teie trenažöör on 5 V, kasutage A9 ja muutke gamecube.h)
  • Nunchuck maa (märgistatud - minu adapterplaadil) - stm32 maa
  • Nunchuck +3.3V (märgistusega +) - stm32 3.3V
  • Nunchuck SDA (märgistusega D) - stm32 B7
  • Nunchuck SCL (märgistusega C) - stm32 B6
  • 10Kohm takisti Nunchuck SDA ja 3.3V vahel stm32 plaadil
  • 10Kohm takisti Nunchuck SCL ja 3.3V vahel stm32 plaadil.

Samm: installige visand

Installige Sketch
Installige Sketch
Installige Sketch
Installige Sketch

Laadige alla minu Gamecube'i USB -adapteri visand ja laadige see Arduino IDE -sse. Gamecubecontroller.h -s saab juhtida mõningaid võimalusi:

  • eemalda // #define ENABLE_EXERCISE_MACHINE ees (kõik peavad seda tegema)
  • kui teil oli vaja trenažööri ühendus A9 -le teisaldada, muutke PA7 väärtuseks PA9 väärtuses const uint32_t rotationDetector = PA7
  • kui teie trenažööri pöörlemise tuvastamise pulss on kõrge, muutke #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING väärtuseks #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • kui te ei soovi Nunchucki kasutada, pange // ees #define ENABLE_NUNCHUCK
  • kui te ei soovi Gamecube'i kontrollerit kasutada, pange // ees #define ENABLE_GAMECUBE.

Valige Arduino IDE -s Tööriistad | Juhatus | Üldine STM32F103C seeria.

Vajutage parema noolega üleslaadimisnuppu. Pange tähele, et kui saate teate, et tahvlit ei tuvastata, peate võib -olla õigel ajal vajutama tahvli lähtestamisnuppu (või eemaldama pistiku pistikupesast).

6. samm: treenimismasina ühendamine

Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus
Harjutusmasina ühendus

Treenimismasina ühendamiseks ühendage tungraud. Meie elliptilisel masinal jootsin selle sisse, velotrenažööril aga sain kasutada isaseid ja naissoost dupontühendusi. Elliptilisele tegin konsooli küljele augu, et see sobiks ühendusega. Trenažööril on mul lihtsalt juhtmed sellest väljas ja väljast väike 3D -prinditud kast (OpenSCAD -fail).

7. samm: projektijuhtum

Projekti juhtum
Projekti juhtum
Projekti juhtum
Projekti juhtum
Projekti juhtum
Projekti juhtum
Projekti juhtum
Projekti juhtum

Projekti saab ümbritseda väikeses pappkarbis, tupperware konteineris või kohandatud 3D -prinditud korpuses. Kuna mul on 3D -printer, valisin kohandatud korpuse. OpenSCAD ja STL failid on siin.

Jalad on ette nähtud liimimiseks (superliim töötab) põhja külge ja kleepuvate kummist jalgade külge.

Samuti liimisin kuumalt nii konksu kui ka silmuskinnituse nii projektiümbrisele kui ka trenažööridele.

8. samm: kasutage

Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine
Kasutamine

Need kaks nuppu võivad vahetada kuni 16 erineva emuleerimisrežiimi vahel (tegelikult võib neid olla rohkem, kuid režiimis numbri kuvamiseks on projektis ainult neli LED -i). Emuleerimisrežiimid on visandis määratletud gamecubecontroller.h -s. Enamiku mängude puhul saate kasutada režiimi 1, ühtset liuguri juhtkangi 100% kiirusega. Emuleeritud juhtkangil on liugur (tegelikult kaks liugurit, kuid mõlemad teevad sama), mida juhib trenažööri pöörlemine. Nuppe ja juhtkangi ennast juhib Gamecube kontroller või Nunchuck. Windowsis toetavad mõned mängud XBox 360 kontrollerit, kuid mitte USB -juhtkangi. Nende jaoks kasutage režiimi 13 (vajutage režiimist 1 allanuppu).

Režiimid 9 ja 10 võimaldavad teil aeglasemalt pedaalida ja ikkagi täieliku liuguripressi saada, mis sobib lastele või kõrgema takistusega trenažööridele. Kiirusi saate reguleerida ka saidil workoutisemachine.ino.

On ka palju teisi emuleerimisrežiime. Prinditav viide on koos eskiisiga kaasas mudelis.pdf.

Trenažööril pedaali vajutades lülituvad projekti LED -id praeguse režiimi numbri kuvamiselt kiirusele. Kui kõik neli tuld põlevad, on teie kiirus maksimaalne (emuleeritud liuguril on maksimaalne pikendus)-sel hetkel ei saa te mängust kiiremat liikumist. Lisaks põleb sinine LED -plaat STM32F1, kui kõik töötab, kuid vilgub, kui pöörlemisandur käivitub.

Liigutuse tagasipööramiseks pöörake adapterikarbi suunalülitit.

Windowsis käivitage joy.cpl, et kalibreerida ja näha, kuidas asjad toimivad. Kuna jäljendatud juhtkangi kalibreerimiseks tuleb tõesti kiiresti pedaalida, on see ebameeldiv, on kalibreerimiseks petta võimalik. Kui olete Gamecube'i kontrolleril umbes 10 sekundit paigal, võite hakata kasutama õlanuppe, et juhtida emuleeritud juhtkangi liugureid. Nunchucki abil saate režiimi miinusnuppu all hoides kasutada juhtkangi üles/alla, et juhtida emuleeritud liugureid.

Kui soovite emuleerimisrežiimide vahetamiseks GUI -d, sisaldab Windowsis visand mode.py, Pythoni skripti koos GUI -ga režiimide vahetamiseks. Samuti saate mode.py käivitada pakettfailis, mis käivitab mängu.

Kaks mängu, mis minu arvates on trenažööriga tõesti suurepäraselt töötanud, on Toybox Turbos ja SuperTuxCart (tasuta).

Adapter sisaldab ka palju muid emuleerimisfunktsioone. Näiteks saate seda kasutada lihtsa Nunchucki või Gamecube'i kontrolleri adapterina, mis jäljendab juhtkangi, klaviatuuri (nt nooled/WASD) ja/või hiirt. Gamecubecontroller.h -s on loetletud palju režiime. Samuti saate ühendada Dance Dance Revolution Gamecube/Wii-ühilduva padja ning kasutada seda selleks, et mängida mänge, mis pole selleks mõeldud, nagu Tetris, täiendava lõbutsemise ja treeningu jaoks.