Obsah:

Cvičební stroj Herní ovladač USB: 8 kroků (s obrázky)
Cvičební stroj Herní ovladač USB: 8 kroků (s obrázky)

Video: Cvičební stroj Herní ovladač USB: 8 kroků (s obrázky)

Video: Cvičební stroj Herní ovladač USB: 8 kroků (s obrázky)
Video: Adel ukazala prso 2024, Červenec
Anonim
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač
Cvičební stroj USB herní ovladač

Abych podpořil cvičení v sobě a v rodině, vytvořil jsem adaptér, který emuluje standardní adaptér herního ovladače USB, ale rychlost pohybu hry ovládá šlapáním na eliptickém stroji nebo rotopedu. Je obzvlášť vhodný pro závodní hry. Určitě to člověka motivuje k rychlému šlapání při hraní závodních her.

Hlavním hardwarem je vývojová deska „černá pilulka“STM32F103C8 „2“za $ 2 s jádrem stm32duino Arduino a knihovnou USB HID, kterou jsem vyvinul na základě základní vidlice libarra111. STM32F1 je rychlý a levný a má plnou rychlost USB, takže je ideální pro projekt.

Chcete-li použít, musíte klepnout na snímač otáčení na eliptickém nebo rotopedu (pokud váš snímač otáčení funguje odlišně od těch na našich strojích-asi 3v, aktivní nízký-možná budete muset upravit obvod a/nebo kód).

Eliptická/rotační rychlost kola ovládá posuvník ovladače. Navíc do adaptéru zapojíte standardní ovladač Wii Nunchuck nebo Gamecube pro pohyb joysticku, tlačítka atd. Existuje mnoho různých režimů ovládání. Například u menších dětí může být potřeba trochu zvýšit rychlost a některé hry mohou používat jiné schéma ovládání. V softwaru je řada předdefinovaných schémat ovládání a další lze snadno přidat do kódu. Zařízení může emulovat herní ovladač USB, klávesnici, myš, ovladač XBox 360 nebo nějakou kombinaci prvních tří.

Směr pohybu není aktuálně detekován: pro přepínání mezi pohybem vpřed a vzad má adaptér přepínač. (Alternativně lze použít magnetický senzor s Hallovým efektem, jako je toto zařízení, a změnit obvod a software.)

Adaptér funguje jako standardní USB řadič, takže jej můžete používat s Windows, Linux, OS X, Android atd.

Jako bonus má adaptér všechny funkce tohoto projektu, funguje jako plně funkční adaptér Gamecube, což vám umožňuje používat ovladače Gamecube na počítači, včetně ovládání her pomocí tanečních rohoží Dance Dance Revolution kompatibilních s Gamecube/Wii.

Náklady se pohybují kolem 10 USD plus pouzdro (mám design pro 3D tisk), dráty a pájka. Díly:

  • Vývojová deska „Black Pill“stm32f103c8 (2 dolary na Aliexpress)
  • Zásuvka Gamecube (1,60 $ na Aliexpress, za prodlužovací kabel Gamecube, který lze zkrátit)
  • Nunchuck socket breakout board (0,51 $ na Aliexpress; hledat Wiichuck)
  • Malý dvoupolohový přepínač (pod 1 $ na Aliexpress)
  • Váš výběr dvouvodičových samčích a samičích konektorů (asi 1 $ na Aliexpress, pokud jdete s 5,5 mm konektory pro napájení); na jeden cvičební stroj potřebujete jednu zásuvku
  • 2 hmatové přepínače (pod 0,50 $ na Aliexpress)
  • 4 červené LED diody (pod 0,50 $ na Aliexpress; můžete také použít malý LCD displej Nokia)
  • kondenzátory: 10uF elektrolytické a volitelně 100nF
  • odpory: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220 ohmů
  • malá proto deska (pod 1 $ na Aliexpress).

Nunchuck je vhodný pro použití jednou rukou s eliptickým strojem. Na rotopedu můžete použít obouruční adaptér, jako je Gamecube. Pokud chcete použít pouze jednu z těchto dvou možností ovládání, můžete použít méně připojení.

Potřebujete také počítač, páječku a multimetr. Budete také potřebovat most UART-to-USB (použil jsem Arduino Mega, který jsem měl pro jiný projekt; nebo si můžete koupit modul CP2102 na Aliexpress za dolar) k instalaci zavaděče na vaši černou pilulku, abyste jej mohli používat s Prostředí Arduino, jinak můžete utratit pár dolarů navíc a získat vývojovou desku RobotDyn s předinstalovaným bootloaderem Arduino.

Dovolte mi dodat, že se přihlašuji do soutěže Wheels, protože je to způsob propojení virtuálních kol v automobilových závodních hrách na počítači s fyzickými koly rotopedů a eliptikálů.

Krok 1: Klepněte na Senzor otáčení

Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení
Klepněte na Senzor otáčení

Oba cvičební stroje, které jsem hacknul, mají konzolu, která zobrazuje rychlost. Mezi konzolou a tělem stroje vedou dráty. Chcete -li získat přístup k datům, musíte do těchto vodičů klepnout. Pokud jsou vaše stroje jako moje, konzolu lze vyjmout a najdete tam buď plochý kabel (eliptický), nebo dva dráty (kolo). Naklepal jsem do nich tak, že jsem odpojil dráty a přemostil je jednotlivými propojkami mezi muži a ženami, do kterých jsem mohl klepnout.

Pomocí pokusu a omylu a multimetru identifikujte dvojici vodičů, mezi nimiž má během plného otáčení napěťový puls.

V zásadě jde o toto: připojte multimetr k dvojici vodičů (dávejte pozor, abyste nic nezkratovali) za chodu stroje a velmi pomalu otáčejte pedály. V obou našich strojích je dvojice vodičů, mezi nimiž je obvykle napětí kolem +3 V, ale během krátké části otáčení spadne na zem: toto je schéma aktivního nízkého napětí. Možná zjistíte, že váš stroj má schéma aktivní-vysoká, kde je většina rotace uzemněna a puls je kladný, a pak budete muset upravit skicu Arduina.

Pokud si myslíte, že existuje nějaká šance, že některý z kabelů do konzoly, se kterou se potýkáte, je síťový AC, doporučuji zastavit, pokud opravdu nevíte, co děláte. Naštěstí je náš rotoped napájen bateriemi a naše eliptické trenažéry se zapojují do bradavice, takže kolem konzoly je jen asi 12 V DC.

V případě rotopedu to bylo opravdu snadné. Byly tam jen čtyři dráty. Dva byly pro monitor srdečního tepu a dva pro snímač otáčení.

Eliptický trenažér měl mnohem více vodičů, a tak to bylo více práce. Metoda hrubé síly je tato. Připojte multimetr k dvojici vodičů. Pomalu proveďte úplné otočení (nebo trochu víc pro případ) na pedálech a zjistěte, zda nedošlo k poklesu napětí nebo skoku. Pokud ano, máte to. Pokud ne, opakujte pro další pár. To je spousta pokusů a omylů: u 13 drátů je to 78 otáček.

Zde je trik, který vám může pomoci urychlit hledání správného páru vodičů. Můžete doufat, že váš stroj, stejně jako můj, má napětí detektoru normálně vysoké s nízkým pulsem. Pokud ano, pak pokud necháte pedály na náhodném místě, máte velkou šanci, že dva vodiče detektoru mají mezi sebou přibližně +3V nebo +5V. Otáčejte pedálem pouze u těch párů vodičů, které mají mezi sebou +3V nebo +5V.

Další trik. Možná dokážete identifikovat, kde se při otáčení pedálu aktivuje snímač otáčení. Vaše zařízení například může na obrazovce něco bliknout nebo aktualizovat zobrazení rychlosti nebo aktivovat z režimu spánku nebo pípnutí. Pokud ano, posuňte pedály asi o 1/3 otáčky stranou a poté vyhledejte páry vodičů, které mají mezi sebou 3–5 V, a otestujte je přesunutím pedálů do polohy, kde se spouští senzor.

Pokud dokážete identifikovat zemnící vodič, můžete tento proces výrazně urychlit, protože pak stačí přejít mezi zem a každý neznámý vodič. Kupodivu, na naší eliptické zemi se nezdálo, že by napájecí zdroj byl stejný jako zem rotačního detektoru.

Jakmile identifikujete dráty, poznamenejte si je. Nezapomeňte si poznamenat:

  • úroveň vysokého napětí: pokud je to více než asi 3,3 V, ale ne více než 5 V, budete chtít změnit obvod tak, aby místo detekce otáčení používal místo A7 pin A9, protože pin A9 má toleranci 5 V a A7 není, a upravte jeden řádek v mém náčrtu; pokud je to více než 5V, budete muset přidat dělič napětí
  • zda je impuls detekce otáčení nízký nebo vysoký: pokud je puls vysoký, budete muset upravit čáru v mé skici Arduino.

Pokud máte osciloskop a trenažér je napájen baterií, můžete místo multimetru použít také osciloskop. (Pokud je trenažér zapojen do AC a váš osciloskop také, musíte vědět o zemních smyčkách a jak se jim vyhnout. Buďte opatrní!)

Krok 2: Připravte vývojovou radu

Připravte vývojovou radu
Připravte vývojovou radu
Připravte vývojovou radu
Připravte vývojovou radu
Připravte vývojovou radu
Připravte vývojovou radu

Připájejte šest středových propojovacích kolíků na černou pilulku.

Pokud máte desku RobotDyn se zavaděčem Arduino, připojte B0- a B1- ke středovým kolíkům a krok máte hotový.

Jinak nyní musíte nainstalovat bootloader. Budete k tomu potřebovat buď samostatný most UART na USB, nebo k tomu můžete použít Arduino Uno nebo Mega. Přestože černá pilulka běží na 3,3 V, kolíky UART jsou odolné vůči 5 V, takže si nedělejte starosti s tím, zda váš konektor běží na 3,3 V nebo 5 V.

Pokud máte Uno nebo Mega, vložte propojovací kabel mezi RESET a GROUND. To dělá z Arduina vyhrazený most UART na USB, kromě toho, že piny TX/RX jsou opakem toho, jak jsou obvykle na konektoru.

Stáhněte si binární soubor bootloaderu. Chcete generic_boot20_pb12.bin. V systému Windows nainstalujte ST's Flash Loader Demonstrator. V Linuxu (a možná OS X a dokonce i Windows, pokud dáváte přednost nástrojům příkazového řádku) použijte místo toho tento skript pythonu, ale moje pokyny budou pro Windows.

Proveďte následující připojení:

  • PA9 to UART bridge RX („TX“, pokud používáte trik Arduino)
  • PA10 to UART bridge TX („RX“, pokud používáte trik Arduino)
  • Uzemnění mostu G na UART

Rád používám špičky logické sondy k připojení na straně STM32, ale můžete také jen připájet některé vodiče, které můžete později odříznout (nebo odspájkovat, pokud chcete být úhlední).

Připojte most UART k počítači. Zapněte černou pilulku přes její port USB (nejlépe pokud ji připojíte k nabíječce, nikoli k počítači, protože počítač si pravděpodobně bude stěžovat na nerozpoznané zařízení USB). Spusťte Flash Loader Demonstrator. Vyberte port COM pro svůj most UART. Vyberte možnost „Odstranit ochranu“, je -li k dispozici. Vyberte raději 64kb než 128kb flash verzi. A nahrajte binární soubor zavaděče.

Odpojte vše a poté přesuňte propojku z B0+/střed na B0-/střed. Nyní máte zavaděč, který můžete použít s Arduino IDE.

Krok 3: Připravte Stm32duino v Arduino IDE

Připravte si Stm32duino v Arduino IDE
Připravte si Stm32duino v Arduino IDE
Připravte si Stm32duino v Arduino IDE
Připravte si Stm32duino v Arduino IDE

Předpokládám, že máte nainstalované nejnovější Arduino IDE.

V Nástroje | Desky | Správce desek, nainstalujte podporu pro Arduino Zero (stačí zadat Zero do vyhledávání, kliknout na nalezený záznam a poté nainstalovat). Ano, nepracujete s nulou, ale tím se nainstaluje správný kompilátor gcc.

Dále stáhněte jádro stm32duino. V systému Windows doporučuji stáhnout soubor zip, protože když jsem soubory rezervoval (pravda, se svn), měl jsem nějaké problémy s oprávněními u souborů v adresáři nástrojů systému Windows, které bylo třeba opravit. Vložte větev do Arduino/Hardware/Arduino_STM32 (abyste měli složky jako Arduino/Hardware/Arduino_STM32/STM32F1 atd.) V systému Windows nainstalujte ovladače spuštěním ovladačů / win / install_drivers.bat.

Nainstalovat moji knihovnu USBHID: Přejít na Skica | Zahrnout knihovnu | Spravujte knihovny a hledejte USBHID. Klikněte na něj a klikněte na Instalovat.

Nainstalovat moji knihovnu GameControllersSTM32: Přejít na Sketch | Zahrnout knihovnu | Spravujte knihovny a hledejte GameControllery. Klikněte na něj a klikněte na Instalovat.

Krok 4: Okruh

Obvod
Obvod
Obvod
Obvod
Obvod
Obvod
Obvod
Obvod

Moje nastavení používá čtyři LED diody k indikaci aktuálního emulačního režimu binárně (ano, jeden by mohl použít LCD displej, ale když jsem to postavil, LED diody ležely kolem), dvě tlačítka pro přepínání režimu nahoru a dolů (a dělat nějaké další triky) a přepínací přepínač pro přepínání směru pohybu.

Navíc je zde vstup I2C z Nunchucku a konektor do ovladače Gamecube. Pokud chcete podporovat pouze jeden z těchto dvou, stačí upravit gamecube.h v náčrtu a ušetřit si nějaké pájení.

Pomocí malého kousku protoboardu jsem namontoval čtyři LED diody režimu a dvě tlačítka pro přepínání režimů (nahoru a dolů) a také jeden výsuvný odpor pro data Gamecube. Na protoboard jsem vyvedl 3,3 V, ale nepotřeboval jsem k tomu připojit zem, i když můžete, pokud chcete. K připojení konektoru Nunchuck jsem použil další malý kousek protoboardu.

Odřízněte kabel Gamecube. Chcete pracovat s tou zásuvkovou stranou, do které se zapojí váš ovladač. Odizolujte kabely pro připojení.

Nyní proveďte tato zapojení podle schématu zapojení:

  • Kondenzátor 10uF mezi 3,3 V a zemí (s minusovou stranou elektrolytiky na zemi). To by mělo být co nejblíže čipu, takže jsem to připájel přímo na vývojovou desku než na protoboard. Pro dobrou míru můžete přidat 100nF jako já, ale nejsem si jistý, že je to potřeba.
  • Zásuvka Gamecube #2 - A6 na desce stm32
  • Rezistor 1Kohm mezi paticí Gamecube #2 a 3,3 V na desce stm32 (nebo na protoboardu)
  • Zásuvka Gamecube #3 a #4 - uzemnění na desce stm32
  • Zásuvka Gamecube #6 - 3,3 V na desce stm32 (nebo na protoboardu)
  • LED v sérii s odporem 220 ohmů (nebo větším) mezi A0 na desce stm32 a 3,3 V (záporný konec (plochý) na PA0; kladný konec na 3,3 V)
  • Opakujte s LED+odporem mezi A1 a 3.3V, A2 a 3.3V a A3 a 3.3V
  • Okamžité přepínání mezi A5 na desce stm32 (přírůstkový režim) a 3,3 V a dalším mezi A4 a 3,3 V (režim snižování); tento přepínač zvyšuje číslo režimu
  • Přepínač mezi A8 a 3,3V
  • cvičný stroj zem - stm32 zem
  • cvičební stroj pozitivní signál - deska stm32 A7 (všimněte si, že A7 je dobré pouze pro 3,3 V; pokud je váš cvičební stroj 5 V, použijte A9 a upravte gamecube.h)
  • Uzemnění Nunchuck (označené - na desce adaptéru) - uzemnění stm32
  • Nunchuck +3,3 V (označeno +) - stm32 3,3 V
  • Nunchuck SDA (označeno D) - stm32 B7
  • Nunchuck SCL (označeno C) - stm32 B6
  • Rezistor 10Kohm mezi Nunchuck SDA a 3,3 V na desce stm32
  • Rezistor 10Kohm mezi Nunchuck SCL a 3,3 V na desce stm32.

Krok 5: Nainstalujte Sketch

Nainstalujte si Sketch
Nainstalujte si Sketch
Nainstalujte si Sketch
Nainstalujte si Sketch

Stáhněte si moji skicu USB adaptéru Gamecube a nahrajte ji do Arduino IDE. V gamecubecontroller.h existuje několik možností ovládání:

  • odstranit // před #define ENABLE_EXERCISE_MACHINE (každý to musí udělat)
  • pokud jste potřebovali přesunout připojení cvičebního stroje na A9, změňte PA7 na PA9 v řádku konst uint32_t rotationDetector = PA7
  • pokud je impuls detekce rotace cvičebního stroje vysoký, změňte #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING na #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • pokud nechcete používat Nunchuck, dejte // před #define ENABLE_NUNCHUCK
  • pokud nechcete používat ovladač Gamecube, vložte // před #define ENABLE_GAMECUBE.

V Arduino IDE zvolte Nástroje | Deska | Obecná řada STM32F103C.

Stiskněte tlačítko pro odeslání šipky doprava. Pokud se zobrazí zpráva, že deska není rozpoznána, možná budete muset ve správnou dobu stisknout tlačítko reset (nebo odpojit/připojit) desku.

Krok 6: Cvičení Připojení stroje

Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje
Připojení cvičebního stroje

Spojte konektor s připojením cvičebního stroje. Na našem eliptickém stroji jsem jej připájel, zatímco na rotopedu jsem mohl použít dupontní konektory pro muže a ženy. Na elipticalu jsem vytvořil otvor na boku konzoly, aby odpovídal připojení. Na cvičebním stroji z něj trčí dráty a na vnější straně malý 3D vytištěný box (soubor OpenSCAD).

Krok 7: Případ projektu

Případ projektu
Případ projektu
Případ projektu
Případ projektu
Případ projektu
Případ projektu
Případ projektu
Případ projektu

Projekt lze uzavřít do malé lepenkové krabice, kontejneru s tupperwarem nebo do vlastní 3D vytištěné skříně. Vzhledem k tomu, že mám 3D tiskárnu, šel jsem po vlastní skříni. Soubory OpenSCAD a STL jsou zde.

Nohy jsou navrženy tak, aby se lepily (fungovalo superlepidlo) na dno a aby do nich byly přilepené lepivé gumové nožičky.

Také jsem za tepla nalepil na suchý zip jak projektový kufr, tak cvičební stroje.

Krok 8: Použijte

Použití
Použití
Použití
Použití
Použití
Použití
Použití
Použití

Dvě tlačítka mohou přepínat mezi až 16 různými režimy emulace (ve skutečnosti můžete mít více, ale v projektu jsou pouze čtyři LED diody pro zobrazení čísla režimu). Režimy emulace jsou definovány v náčrtu gamecubecontroller.h. U většiny her můžete použít režim 1, sjednocený posuvný joystick se 100% rychlostí. Emulovaný joystick má posuvník (ve skutečnosti dva posuvníky, ale oba dělají totéž), který je řízen otáčením cvičebního stroje. Samotná tlačítka a joystick jsou ovládány ovladačem Gamecube nebo Nunchuck. V systému Windows některé hry podporují ovladač XBox 360, ale nikoli USB joystick. Pro ty použijte režim 13 (stiskněte tlačítko dolů z režimu 1).

Režimy 9 a 10 vám umožňují šlapat pomaleji a přitom dosáhnout plné deprese posuvníku, což je příjemné pro děti nebo pro cvičební stroje nastavené na vyšší odpor. Rychlost můžete také upravit v souboru exercisemachine.ino.

Existuje mnoho dalších režimů emulace. Odkaz na tisk je součástí modelist.pdf spolu s náčrtem.

Když šlapete na trenažéru, LED diody na projektu přepnou ze zobrazení čísla aktuálního režimu na rychlost. Když se rozsvítí všechna čtyři světla, vaše rychlost je maximální (emulovaný jezdec má maximální prodloužení)-v tu chvíli nebudete mít žádnou výhodu ve hře, pokud budete pokračovat rychleji. Modrá LED na desce STM32F1 navíc svítí, když vše funguje, ale bliká, když se spustí snímač otáčení.

Chcete -li pohyb obrátit, otočte přepínač směru na krabici adaptéru.

V systému Windows spusťte joy.cpl, abyste provedli kalibraci a zjistili, jak věci fungují. Jelikož je obtížné kalibrovat emulovaný joystick, je nutné šlapat opravdu rychle, existuje způsob, jak podvádět při kalibraci. Pokud na ovladači Gamecube zůstanete nehybně přibližně 10 sekund, můžete začít používat ramenní tlačítka k ovládání emulovaných posuvníků joysticku. U Nunchucku, zatímco držíte tlačítko mínus, můžete místo toho použít joystick nahoru/dolů k ovládání emulovaných jezdců.

Pokud chcete GUI pro přepínání režimů emulace, ve Windows skica obsahuje mode.py, python skript s GUI pro přepínání režimů. Mode.py můžete také vyvolat v dávkovém souboru, který spouští hru.

Dvě hry, u kterých jsem zjistil, že fungují na cvičebním stroji opravdu skvěle, jsou Toybox Turbos a SuperTuxCart (zdarma).

Adaptér také obsahuje spoustu dalších funkcí emulace. Můžete jej například použít jako přímý adaptér Nunchuck nebo Gamecube Controller, který emuluje joystick, klávesnici (např. Šipky/WASD) a/nebo myš. V gamecubecontroller.h je uvedeno mnoho režimů. Můžete také připojit podložku kompatibilní s Dance Dance Revolution Gamecube/Wii a použít ji ke hraní her, které pro ni nejsou určeny, jako je Tetris, pro další zábavu a cvičení.

Doporučuje: