Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Itseni ja perheesi harjoittamisen kannustamiseksi tein sovittimen, joka jäljittelee tavallista USB -peliohjaimen sovitinta, mutta ohjaa pelin liikenopeutta polkemalla elliptistä konetta tai kuntopyörää. Se on erityisen mukava kilpa -peleissä. Se varmasti motivoi polkemaan nopeasti, kun pelataan kilpapelejä.
Päälaitteisto on 2 dollarin "musta pilleri" STM32F103C8 -kehityskortti, jossa on stm32duino Arduino -ydin ja USB HID -kirjasto, jonka olen kehittänyt libarra111: n ydinhaarukan perusteella. STM32F1 on nopea ja halpa, ja siinä on täysi nopeus USB-tuki, joten se on täydellinen projektiin.
Jotta voit käyttää, sinun on kosketettava elliptisen tai kuntopyörän pyörimisanturia (jos pyörimisanturi toimii eri tavalla kuin koneemme-noin 3 V, aktiivinen matala-sinun on ehkä muutettava piiriä ja/tai koodia).
Elliptinen/pyörän pyörimisnopeus ohjaa säätimen liukusäädintä. Lisäksi liität tavallisen Wii Nunchuck- tai Gamecube -ohjaimen sovittimeen ohjaussauvan liikuttamista, painikkeita jne. Varten. On olemassa monia erilaisia ohjaustiloja. Esimerkiksi pienempien lasten nopeutta on ehkä parannettava hieman, ja joissakin peleissä voi olla erilainen ohjausjärjestelmä. Ohjelmistossa on useita sisäänrakennettuja ohjausjärjestelmiä, ja muita voidaan helposti lisätä koodiin. Laite voi jäljitellä USB -peliohjainta, näppäimistöä, hiirtä, XBox 360 -ohjainta tai jotain kolmen ensimmäisen yhdistelmää.
Liikkeen suuntaa ei tällä hetkellä havaita: siirtyäksesi eteen- ja taaksepäin, sovittimessa on vaihtokytkin. (Vaihtoehtoisesti voit käyttää tämän laitteen kaltaista hall-efektin magneettianturia ja vaihtaa piiriä ja ohjelmistoa.)
Sovitin toimii tavallisena USB -ohjaimena, joten voit käyttää sitä Windowsissa, Linuxissa, OS X: ssä, Androidissa jne.
Bonuksena sovittimella on kaikki tämän projektin toiminnot, ja se toimii täydellisenä Gamecube-sovittimena, jonka avulla voit käyttää Gamecube-ohjaimia tietokoneessa, mukaan lukien pelien ohjaaminen Gamecube/Wii-yhteensopivilla Dance Dance Revolution -tanssimattoilla.
Kustannukset ovat alle 10 dollaria, plus kotelo (minulla on 3D -tulostettava malli), johdot ja juotos. Osat:
- "Musta pilleri" stm32f103c8 -kehityskortti (2 dollaria Aliexpressissä)
- Gamecube -kanta (1,60 dollaria Aliexpressissä, Gamecube -jatkojohto, joka voidaan katkaista)
- Nunchuck -pistorasialevy (0,51 dollaria Aliexpressissä; etsi Wiichuck)
- Pieni kaksiasentoinen vaihtokytkin (alle 1 dollari Aliexpressissä)
- Valitsemasi kaksijohtimiset uros- ja naarasliittimet (noin 1 dollari Aliexpressissä, jos käytät 5,5 mm: n tehoputkiliittimiä); tarvitset yhden naarasliittimen kuntosalia kohti
- 2 kosketuskytkintä (alle 0,50 dollaria Aliexpressissä)
- 4 punaista LEDiä (alle 0,50 dollaria Aliexpressissä; voit käyttää myös pientä Nokian LCD -näyttöä)
- kondensaattorit: 10uF elektrolyyttinen ja valinnainen 100nF
- vastukset: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
- pieni proto -levy (alle 1 dollari Aliexpressissä).
Nunchuck on hyvä käyttää yhdellä kädellä elliptisen koneen kanssa. Kuntopyörällä voit käyttää kahden käden sovitinta, kuten Gamecube-sovitinta. Jos haluat käyttää vain yhtä näistä kahdesta ohjausvaihtoehdosta, voit käyttää vähemmän yhteyksiä.
Tarvitset myös tietokoneen, juotosraudan ja yleismittarin. Tarvitset myös UART-USB-sillan (käytin Arduino Mega -laitetta, joka minulla oli toisessa projektissa; tai voit ostaa CP2102-moduulin Aliexpressistä dollarilla) asentaaksesi käynnistyslataimen mustalle pilleriisi käyttääksesi sitä Arduino -ympäristö, tai muuten voit käyttää pari dollaria enemmän ja saada RobotDynin kehityskortin esiladatulla Arduino -käynnistyslataimella.
Haluan lisätä, että osallistun tähän Pyörät -kilpailuun, koska se on tapa yhdistää tietokonepelikoneiden virtuaalipyörät tietokoneella kuntopyörien ja elliptisten pyörien fyysisiin pyöriin.
Vaihe 1: Napauta pyörimisanturiin
Molemmissa hakkereissani on konsoli, joka näyttää nopeuden. Johdot kulkevat konsolin ja koneen rungon välillä. Sinun on napautettava näitä johtoja päästäksesi tietoihin. Jos koneesi ovat minun kaltaisiani, konsoli voidaan irrottaa ja sieltä löytyy joko nauhakaapeli (elliptinen) tai kaksi johtoa (pyörä). Napautin näihin irrottamalla johdot ja yhdistämällä ne yksittäisillä uros-naaras-puseroilla, joihin voisin käyttää.
Käytä kokeilu- ja erehdysmenetelmää ja yleismittaria tunnistaaksesi johdinparin, jonka välissä on jännitepulssi koko kierroksen aikana.
Pohjimmiltaan pora on seuraava: kytke yleismittari johtopariin (varo oikosulkemasta mitään) koneen käydessä ja kierrä polkimia hyvin hitaasti. Molemmissa koneissamme on pari johtoja, joiden välillä normaalisti jännite on noin +3 V, mutta lyhyen kierrososan aikana se putoaa maahan: tämä on aktiivinen-matala -kaavio. Saatat huomata, että koneellasi on aktiivinen-korkea-järjestelmä, jossa suurin osa pyörimisestä on maadoitettu ja pulssi on positiivinen, ja sitten sinun on muokattava Arduino-luonnosta.
Jos luulet, että on mitään mahdollisuutta, että jokin konsolin johtimista on verkkovirta, suosittelen pysäyttämistä, ellet todella tiedä mitä olet tekemässä. Onneksi kuntopyörämme on paristokäyttöinen ja elliptiset pistokkeet seinäsyöpään, joten konsolin ympärillä on vain noin 12 V DC.
Kuntopyörän tapauksessa se oli todella helppoa. Johtoja oli vain neljä. Kaksi oli sykemittarille ja kaksi pyörimisanturille.
Elliptisessä oli paljon enemmän johtoja, joten se oli enemmän työtä. Raa'an voiman menetelmä on tämä. Kiinnitä yleismittari johdinpariin. Pyöritä polkimia hitaasti (tai hieman enemmän joka tapauksessa) ja katso, onko jännitehäviö tai hyppy. Jos kyllä, sinulla on se. Jos ei, toista sama toiselle parille. Se on paljon kokeiluja ja virheitä: 13 johdot, se on 78 kierrosta.
Tässä on temppu, joka voi auttaa sinua nopeuttamaan oikean lankaparin etsimistä. Saatat toivoa, että koneessasi, kuten minunkin, on ilmaisinjännite normaalisti korkea ja matala pulssi. Jos näin on, niin jos jätät polkimet satunnaiseen paikkaan, sinulla on hyvät mahdollisuudet, että kahden ilmaisinjohdon välissä on noin +3 V tai +5 V. Joten tee vain polkimen kiertotesti niille johdinpareille, joiden välissä on +3V tai +5V.
Toinen temppu. Saatat pystyä tunnistamaan, missä poljinkierroksen pyörimisanturi laukaisee. Koneesi voi esimerkiksi vilkkua näytöllä silloin, päivittää nopeusnäytön tai aktivoida lepotilasta tai antaa äänimerkin. Jos näin on, siirrä polkimet noin 1/3 kierrosta poispäin ja etsi sitten johdinpareja, joiden välissä on 3-5 V, ja testaa ne siirtämällä polkimet kohtaan, jossa anturi laukeaa.
Jos tunnistat maadoitusjohdon, voit nopeuttaa prosessia huomattavasti, koska sinun tarvitsee vain siirtyä maan ja jokaisen tuntemattoman johtimen väliin. Kummallista kyllä, mutta meidän elliptinen, virtalähteen maa ei näyttänyt olevan sama kuin pyörimisilmaisimen maa.
Kun tunnistat johdot, merkitse ne muistiin. Muista huomioida:
- korkeajännitetaso: jos se on enemmän kuin noin 3,3 V mutta enintään 5 V, sinun on vaihdettava piiri käyttämään nasta A9 A7: n sijaan pyörimisen havaitsemiseksi, koska nasta A9 on 5 V: n toleranssi ja A7 ei, ja muokkaa yksi rivi luonnoksessani; jos se on yli 5 V, sinun on lisättävä jännitteenjakaja
- onko pyörimisen tunnistuspulssi alhainen vai korkea: jos pulssi on korkea, sinun on muokattava rivi Arduino -luonnoksessani.
Jos sinulla on oskilloskooppi ja kuntolaite toimii paristolla, voit myös käyttää oskilloskooppia yleismittarin sijasta. (Jos kuntosali on kytketty verkkovirtaan ja oskilloskooppi samoin, sinun on tiedettävä maasilmukoista ja niiden välttämisestä. Ole varovainen!)
Vaihe 2: Valmistele kehityskeskus
Juotos kuusi keskihyppytappia mustan pillerin päälle.
Jos sinulla on RobotDyn-kortti Arduino-käynnistyslataimen kanssa, liitä B0- ja B1- keskitappeihin, ja olet valmis.
Muussa tapauksessa sinun on nyt asennettava käynnistyslatain. Tarvitset joko erillisen UART -USB -sillan tai voit käyttää Arduino Unoa tai Megaa tähän tarkoitukseen. Vaikka musta pilleri toimii 3,3 V: n jännitteellä, UART -nastat kestävät 5 V.
Jos sinulla on Uno tai Mega, aseta hyppyjohto RESET- ja GROUND -väliin. Tämä muuttaa Arduinon omaksi UART -USB -siltaksi, paitsi että TX/RX -nastat ovat päinvastaisia kuin tavallisesti liittimessä.
Lataa käynnistyslataimen binaari. Haluat generic_boot20_pb12.bin. Asenna Windowsissa ST: n Flash Loader Demonstrator. Käytä Linuxissa (ja ehkä OS X: ssä ja jopa Windowsissa, jos haluat komentorivityökaluja), käytä tätä python -komentosarjaa, mutta ohjeet ovat Windowsille.
Tee seuraavat liitännät:
- PA9 - UART -silta RX ("TX", jos käytät Arduino -temppua)
- PA10 - UART bridge TX ("RX", jos käytät Arduino -temppua)
- G UART -sillan maahan
Tykkään käyttää logiikka-anturivinkkejä liitäntöjen tekemiseen STM32-puolella, mutta voit myös juottaa joihinkin johtoihin, jotka voit myöhemmin katkaista (tai poistaa juotteen, jos haluat olla siisti).
Liitä UART -silta tietokoneeseen. Käynnistä musta pilleri USB -portin kautta (parasta, jos liität sen laturiin tietokoneen sijaan, koska tietokone todennäköisesti valittaa tunnistamattomasta USB -laitteesta). Käynnistä Flash Loader Demonstrator. Valitse COM -portti UART -siltaasi varten. Valitse "Poista suojaus", jos käytettävissä. Valitse 64 kb: n eikä 128 kb: n flash -versio. Ja lataa käynnistyslataimen binaari.
Kytke virta pois päältä ja siirrä sitten hyppyjohdin B0+/keskeltä B0-/keskelle. Sinulla on nyt käynnistyslatain, jota voit käyttää Arduino IDE: n kanssa.
Vaihe 3: Valmistele Stm32duino Arduino IDE: ssä
Oletan, että sinulla on uusin Arduino IDE asennettuna.
Työkalut | Laudat | Boards Manager, asenna tuki Arduino Zerolle (laita Zero vain hakuun, napsauta löydettyä merkintää ja sitten Asenna). Kyllä, et työskentele nollan kanssa, mutta tämä asentaa oikean gcc -kääntäjän.
Lataa seuraavaksi stm32duino -ydin. Windowsissa suosittelen zip -tiedoston lataamista, koska kun tarkistin tiedostot (tosin svn: n kanssa), minulla oli joitain käyttöoikeusongelmia Windowsin työkaluhakemistossa oleviin tiedostoihin, jotka tarvitsivat korjausta. Laita haara Arduino/Hardware/Arduino_STM32 -tiedostoon (niin saat kansioita, kuten Arduino/Hardware/Arduino_STM32/STM32F1 jne.). Asenna Windowsissa ohjaimet ajamalla ajurit / win / install_drivers.bat.
Asenna USBHID -kirjasto: Siirry luonnokseen | Sisällytä kirjasto | Hallitse kirjastoja ja etsi USBHID. Napsauta sitä ja napsauta Asenna.
Asenna GameControllersSTM32 -kirjasto: Siirry luonnokseen | Sisällytä kirjasto | Hallitse kirjastoja ja etsi peliohjaimia. Napsauta sitä ja napsauta Asenna.
Vaihe 4: Piiri
Asetuksissani käytetään neljää LEDiä osoittamaan nykyinen emulointitila binäärinä (kyllä, voitaisiin käyttää LCD-näyttöä, mutta minulla oli LED-valoja, kun rakennin tämän), kaksi painiketta painikkeen vaihtamiseksi ylös ja alas (ja muut temppuja) ja vaihtokytkin liikesuunnan vaihtamiseksi.
Lisäksi Nunchuckissa on I2C -tulo ja liitin Gamecube -ohjaimeen. Jos haluat tukea vain yhtä näistä kahdesta, voit muokata luonnoksessa olevaa gamecube.h -tiedostoa ja säästää juotoksia.
Asensin pienen osan protoboardista kiinnittääkseni neljä tilan LEDiä ja kaksi tilanvaihtokytkintä (ylös ja alas) sekä yhden vetovastus Gamecube-datalle. Toin 3,3 V: n protoboardiin, mutta minun ei tarvinnut tuoda siihen maata, vaikka voit, jos haluat. Käytin toista pientä protoboardia Nunchuck -liittimen asentamiseen.
Katkaise Gamecube -kaapeli. Haluat työskennellä pistorasian puolella, johon ohjaimesi liittää. Kuori kaapelit liittämistä varten.
Tee nyt nämä liitännät piirikaavion mukaisesti:
- 10uF kondensaattori 3,3 V: n ja maan välillä (kaikkien elektrolyyttien miinuspuoli maassa). Tämän pitäisi olla mahdollisimman lähellä sirua kuin mahdollista, joten juotin sen suoraan kehityskortille protoboardin sijaan. Hyvin mitattuna voit lisätä 100 nF: n kuten minä, mutta en ole varma, että sitä tarvitaan.
- Gamecube -kanta #2 - A6 stm32 -kortilla
- 1 ohmin vastus Gamecube -liitännän nro 2 ja 3,3 V: n välillä STM32 -kortilla (tai protoboardilla)
- Gamecube -kanta #3 ja #4 - maadoitus stm32 -kortilla
- Gamecube -pistorasia #6 - 3.3V STM32 -kortilla (tai protoboardilla)
- LED sarjassa 220 ohmin (tai suurempi) vastuksella välillä A0 stm32 -kortilla ja 3,3 V (negatiivinen pää (tasainen) - PA0; positiivinen pää 3,3 V)
- Toista LED+vastuksella välillä A1 ja 3.3V, A2 ja 3.3V sekä A3 ja 3.3V
- Hetkellinen kytkin stm32 -kortin A5: n (lisäystila) ja 3,3 V: n välillä ja toinen A4: n ja 3,3 V: n välillä (vähennystila); tämä kytkin lisää tilan numeroa
- Vaihda kytkin A8 ja 3.3V välillä
- kuntolaite maa - stm32 maa
- kuntolaitteen positiivinen signaali - stm32 -kortti A7 (huomaa, että A7 on hyvä vain 3,3 V: lle; jos kuntosi on 5 V, käytä A9: tä ja muokkaa gamecube.h)
- Nunchuck -maa (merkitty - sovitinkortillani) - stm32 ground
- Nunchuck +3.3V (merkitty +) - stm32 3.3V
- Nunchuck SDA (merkitty D) - stm32 B7
- Nunchuck SCL (merkitty C) - stm32 B6
- 10Kohmin vastus Nunchuck SDA: n ja 3.3V: n välillä stm32 -kortilla
- 10Kohmin vastus Nunchuck SCL: n ja 3.3V: n välillä stm32 -kortilla.
Vaihe 5: Asenna luonnos
Lataa Gamecuben USB -sovitinpiirros ja lataa se Arduino IDE: hen. Gamecubecontroller.h: ssa on joitain valittavia vaihtoehtoja:
- poista // #define ENABLE_EXERCISE_MACHINE edessä (kaikkien on tehtävä tämä)
- jos sinun on siirrettävä kuntolaitteen liitäntä kohtaan A9, vaihda PA7 arvoon PA9 vakion uint32_t rotationDetector = PA7 rivillä
- jos kuntosalisi pyörimisen tunnistuspulssi on korkea, vaihda #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING arvoon #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
- jos et halua käyttää Nunchuckia, aseta // #define -kohdan eteen ENABLE_NUNCHUCK
- jos et halua käyttää Gamecube -ohjainta, aseta // #define ENABLE_GAMECUBE eteen.
Valitse Arduino IDE: ssä Työkalut | Hallitus | Yleinen STM32F103C -sarja.
Paina oikealle osoittavaa latauspainiketta. Huomaa, että sinun on ehkä painettava nollauspainiketta (tai irrotettava/liitettävä) oikeaan aikaan, jos saat viestin, että korttia ei tunnisteta.
Vaihe 6: Harjoituslaitteen liitäntä
Kiinnitä liitin harjoituslaitteen liitäntää varten. Juotin sen elliptiseen koneeseemme, kun taas kuntopyörällä pystyin käyttämään uros- ja naaraspuolisia dupont -liittimiä. Tein elliptiseen muotoon konsolin sivulle reiän, joka sopii liitäntään. Kuntolaitteessa on vain johtoja, jotka ulottuvat ulos, ja pieni 3D -tulostettu laatikko (OpenSCAD -tiedosto) ulkopuolelta.
Vaihe 7: Projektitapaus
Projektin voi sulkea pieneen pahvilaatikkoon, tupperware -astiaan tai mukautettuun 3D -painettuun koteloon. Koska minulla on 3D -tulostin, valitsin mukautetun kotelon. OpenSCAD- ja STL -tiedostot ovat täällä.
Jalat on suunniteltu liimaamaan (superliima toimii) pohjaan ja tarttumaan niihin tarttuviin kumijalkoihin.
Liimasin myös kuumakiinnityskoukkuja sekä projektikoteloon että kuntolaitteisiin.
Vaihe 8: Käytä
Molemmat painikkeet voivat vaihtaa jopa 16 eri emulointitilan välillä (itse asiassa sinulla voi olla enemmän, mutta projektissa on vain neljä LEDiä, jotka näyttävät tilan numeron). Emulointitilat määritellään luonnoksen gamecubecontroller.h -sivustossa. Useimmissa peleissä voit käyttää tilaa 1, yhdistettyä liukusäädintä 100% nopeudella. Emuloidussa ohjaussauvassa on liukusäädin (itse asiassa kaksi liukusäädintä, mutta molemmat tekevät saman), jota ohjataan kuntolaitteen pyörimisen avulla. Itse painikkeita ja ohjaussauvaa ohjaavat Gamecube -ohjain tai Nunchuck. Windowsissa jotkin pelit tukevat XBox 360 -ohjainta, mutta eivät USB -ohjaussauvaa. Käytä niille tilaa 13 (paina alas -painiketta tilasta 1).
Tilat 9 ja 10 mahdollistavat polkemisen hitaammin ja silti täyden liukusäätimen masennuksen, mikä on mukavaa lapsille tai kuntolaitteille, jotka on asetettu suurempaan vastukseen. Voit myös säätää nopeuksia harjoitustietokoneessa.ino.
On monia muita emulointitiloja. Tulostettava viite sisältyy luonnokseen modelist.pdf -tiedostoon.
Kun poljet kuntolaitteella, projektin LEDit vaihtavat nykyisen tilan numeron näyttämisestä nopeuteen. Kun kaikki neljä valoa palavat, nopeutesi on suurin (emuloidulla liukusäätimellä on suurin laajennus)-siinä vaiheessa et saa nopeampaa etenemistä pelissä. Lisäksi sininen LED STM32F1 -kortilla palaa, kun kaikki toimii, mutta vilkkuu, kun pyörimisanturi laukeaa.
Käännä liike kääntämällä adapterikotelon suunnanvaihtokytkin.
Suorita Windowsissa joy.cpl kalibroidaksesi ja nähdäksesi miten asiat toimivat. Koska on haittaa joutua polkemaan todella nopeasti emuloidun ohjaussauvan kalibroimiseksi, on olemassa tapa huijata kalibrointia varten. Jos pysyt Gamecube -ohjaimessa paikallaan noin 10 sekuntia, voit aloittaa olkapainikkeiden käyttämisen emuloitujen ohjaussauvan liukusäätimien ohjaamiseen. Kun käytät Nunchuckia, kun pidät mode-miinus-painiketta painettuna, voit ohjata emuloituja liukusäätimiä ohjaussauvalla ylös/alas.
Jos haluat graafisen käyttöliittymän emulointitilojen vaihtamiseen, Windowsissa luonnos sisältää mode.py, python -komentosarjan, jossa on graafinen käyttöliittymä tilojen vaihtamiseksi. Voit myös kutsua mode.py -tiedoston erätiedostoon, joka käynnistää pelin.
Kaksi peliä, joiden olen todennut toimivan todella hyvin kuntolaitteen kanssa, ovat Toybox Turbos ja SuperTuxCart (ilmainen).
Sovitin sisältää myös monia muita emulointiominaisuuksia. Voit esimerkiksi käyttää sitä yksinkertaisena Nunchuck- tai Gamecube -ohjainsovittimena, joka emuloi ohjaussauvaa, näppäimistöä (esim. Nuolet/WASD) ja/tai hiirtä. Gamecubecontroller.h -sivustossa on paljon tiloja. Voit myös kytkeä Dance Dance Revolution Gamecube/Wii -yhteensopivan padin ja käyttää sitä pelataksesi pelejä, joita ei ole suunniteltu sille, kuten Tetris, hauskanpitoon ja harjoitteluun.