Cvičebný stroj USB herný ovládač: 8 krokov (s obrázkami)
Cvičebný stroj USB herný ovládač: 8 krokov (s obrázkami)
Anonim
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač
Cvičebný stroj USB herný ovládač

Aby som povzbudil k cvičeniu seba a rodiny, vyrobil som adaptér, ktorý napodobňuje štandardný adaptér herného ovládača USB, ale rýchlosť pohybu hry ovláda šliapaním na eliptickom stroji alebo rotopede. Je obzvlášť vhodný pre závodné hry. To určite motivuje človeka rýchlo šliapať do pedálov pri hraní závodných hier.

Hlavným hardvérom je vývojová doska „čierna pilulka“STM32F103C8 „2 doláre“s jadrom stm32duino Arduino a knižnicou USB HID, ktorú som vyvinul na základe základnej vidlice libarra111. STM32F1 je rýchly a lacný a má podporu vysokorýchlostného USB, takže je pre projekt ideálny.

Na používanie musíte kliknúť na snímač otáčania na eliptickom alebo rotopede (ak váš snímač otáčania funguje inak ako na našich strojoch-asi 3 V, aktívny nízky)-možno budete musieť upraviť obvod a/alebo kód).

Eliptická/rotačná rýchlosť rotácie ovláda posúvač ovládača. Navyše do adaptéra zapojíte štandardný ovládač Wii Nunchuck alebo Gamecube pre pohyb joysticku, tlačidlá atď. Existuje mnoho rôznych režimov ovládania. Menšie deti napríklad môžu potrebovať trochu zvýšiť rýchlosť a niektoré hry môžu používať inú schému ovládania. V softvéri je množstvo vstavaných schém riadenia a ďalšie je možné ľahko pridať do kódu. Zariadenie môže emulovať herný ovládač USB, klávesnicu, myš, ovládač XBox 360 alebo kombináciu prvých troch.

Smer pohybu nie je momentálne detegovaný: na prepínanie medzi pohybom vpred a vzad má adaptér prepínač. (Alternatívne je možné použiť magnetický senzor s Hallovým efektom, ako je toto zariadenie, a zmeniť obvod a softvér.)

Adaptér funguje ako štandardný USB radič, takže ho môžete používať s Windows, Linux, OS X, Android atď.

Ako bonus má adaptér všetky funkcie tohto projektu a funguje ako plne funkčný adaptér Gamecube, ktorý vám umožňuje používať ovládače Gamecube na počítači vrátane ovládania hier pomocou tanečných podložiek Dance Dance Revolution kompatibilných s Gamecube/Wii.

Cena je nižšia ako 10 dolárov plus puzdro (mám dizajn pre 3D tlač), drôty a spájka. Diely:

  • Vývojová doska „Black Pill“stm32f103c8 (2 doláre na Aliexpress)
  • Zásuvka Gamecube (1,60 dolárov na Aliexpress, za predlžovací kábel Gamecube, ktorý je možné odrezať)
  • Oddeľovacia doska zásuvky Nunchuck (0,51 dolára na Aliexpress; vyhľadajte Wiichuck)
  • Malý dvojpolohový prepínač (pod 1 dolár na Aliexpress)
  • Váš výber dvojvodičových mužských a ženských konektorov (asi 1 dolár na Aliexpresse, ak idete s 5,5 mm konektormi napájania); na jeden cvičebný stroj potrebujete jednu zásuvku
  • 2 hmatové prepínače (pod 0,50 dolára na Aliexpress)
  • 4 červené LED diódy (na Aliexpress menej ako 0,50 dolára; môžete použiť aj malý LCD displej Nokia)
  • kondenzátory: 10uF elektrolytické a voliteľne 100nF
  • odpory: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220 ohmov
  • malá proto doska (pod 1 dolár na Aliexpress).

Nunchuck je vhodný na používanie jednou rukou s eliptickým strojom. Na rotopede môžete použiť obojručný adaptér, akým je napríklad Gamecube. Ak chcete použiť iba jednu z týchto dvoch možností ovládania, môžete použiť menej pripojení.

Potrebujete tiež počítač, spájkovačku a multimetr. Budete tiež potrebovať most UART-to-USB (použil som Arduino Mega, ktorý som mal pre iný projekt; alebo si za dolár môžete kúpiť modul CP2102 na Aliexpress), aby ste si na čiernu pilulku nainštalovali bootloader, ktorý ho budete používať s Prostredie Arduino, inak môžete minúť pár dolárov navyše a získať vývojovú dosku RobotDyn s predinštalovaným zavádzačom Arduino.

Dodám, že sa prihlasujem do súťaže Wheels, pretože ide o spôsob prepojenia virtuálnych kolies v automobilových závodných hrách na počítači s fyzickými kolesami rotopedov a eliptických trenažérov.

Krok 1: Klepnite na snímač otáčania

Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania
Klepnite na Snímač otáčania

Oba cvičebné stroje, ktoré som hackol, majú konzolu, ktorá zobrazuje rýchlosť. Medzi konzolou a telom stroja vedú drôty. Na prístup k údajom musíte kliknúť na tieto vodiče. Ak sú vaše stroje ako moje, konzolu je možné odstrániť a nájdete tam buď plochý kábel (eliptický), alebo dva vodiče (na bicykli). Klepol som na ne odpojením vodičov a premostením jednotlivých prepojok medzi mužmi a ženami, do ktorých som mohol klepnúť.

Pomocou pokusu a omylu a multimetra identifikujte dvojicu vodičov, medzi ktorými má počas úplného otáčania napäťový impulz.

Vŕtačka je v zásade taká: zapojte multimetr za pár drôtov (dávajte pozor, aby ste nič neskratili) a spustený stroj veľmi pomaly otáčajte pedálmi. V oboch našich strojoch je pár drôtov, medzi ktorými je normálne napätie okolo +3 V, ale počas krátkej časti otáčania spadne na zem: toto je schéma aktívna-nízka. Možno zistíte, že váš stroj má schému aktívny-vysoký, kde je väčšina rotácie uzemnená a pulz je kladný, a potom budete musieť upraviť skicu Arduina.

Ak si myslíte, že je nejaká šanca, že akékoľvek káble do konzoly, s ktorou máte do činenia, sú napájané striedavým prúdom, odporúčam zastaviť, pokiaľ skutočne neviete, čo robíte. Našťastie je náš rotoped napájaný batériami a naše eliptické trenažéry sú zapojené do nástennej bradavice, takže v okolí konzoly je len asi 12 V DC.

V prípade rotopedu to bolo skutočne jednoduché. Káble boli iba štyri. Dva boli pre monitor srdcového tepu a dva boli pre snímač otáčok.

Eliptický trenažér mal oveľa viac drôtov, a preto bolo s ním viac práce. Metóda hrubej sily je taká. Pripojte multimetr k páru drôtov. Pomaly urobte úplné otáčanie (alebo trochu viac pre prípad) na pedáloch a zistite, či nedošlo k poklesu alebo skoku napätia. Ak áno, máte to. Ak nie, zopakujte pre ďalší pár. To je veľa pokusov a omylov: pre 13 drôtov je to 78 otáčok.

Tu je trik, ktorý by vám mohol pomôcť urýchliť hľadanie správneho páru drôtov. Môžete dúfať, že váš stroj, rovnako ako môj, má napätie detektora normálne vysoké s nízkym impulzom. Ak je to tak, potom ak necháte pedále na náhodnom mieste, máte veľkú šancu, že dva vodiče detektora majú medzi sebou približne +3V alebo +5V. Test rotácie pedálu preto vykonajte iba pre tie páry vodičov, ktoré majú medzi sebou +3V alebo +5V.

Ďalší trik. Môžete byť schopní identifikovať, kde sa v otáčaní pedála spustí snímač otáčania. Zariadenie napríklad môže potom na obrazovke niečo zablikať alebo aktualizovať zobrazenie rýchlosti alebo sa aktivovať z režimu spánku alebo pípnutia. Ak je to tak, presuňte pedále asi o 1/3 otáčky ďalej a potom vyhľadajte dvojice vodičov, ktoré majú medzi sebou 3–5 V, a otestujte ich posunutím pedálov do polohy, v ktorej sa spustí senzor.

Ak dokážete identifikovať uzemňovací vodič, môžete tento proces výrazne urýchliť, pretože potom musíte prejsť iba medzi uzemnením a každým neznámym vodičom. Zvláštne však je, že na našom eliptickom poli sa zdroj napájania nezdá byť rovnaký ako uzemnenie detektora otáčania.

Hneď ako identifikujete drôty, poznačte si ich. Nezabudnite si všimnúť:

  • úroveň vysokého napätia: ak je to viac ako asi 3,3 V, ale nie viac ako 5 V, budete chcieť zmeniť obvod tak, aby na detekciu otáčania používal namiesto A7 pin A9, pretože pin A9 má toleranciu 5 V a A7 nie, a upravte jeden riadok v mojom náčrte; ak je to viac ako 5V, budete musieť pridať delič napätia
  • či je impulz detekcie otáčania nízky alebo vysoký: ak je impulz vysoký, budete musieť v mojom náčrte Arduino upraviť riadok.

Ak máte osciloskop a trenažér je napájaný batériou, môžete namiesto multimetra použiť aj osciloskop. (Ak je trenažér zapojený do siete a váš osciloskop tiež, musíte vedieť o pozemných slučkách a ako sa im vyhnúť. Buďte opatrní!)

Krok 2: Príprava vývojovej rady

Pripravte vývojovú radu
Pripravte vývojovú radu
Pripravte vývojovú radu
Pripravte vývojovú radu
Pripravte vývojovú radu
Pripravte vývojovú radu

Pripájajte šesť stredových kolíkov na čiernu pilulku.

Ak máte dosku RobotDyn so zavádzačom Arduino, pripojte B0- a B1- k stredovým kolíkom a krok je hotový.

V opačnom prípade musíte teraz nainštalovať bootloader. Budete potrebovať buď samostatný most UART na USB, alebo na tento účel môžete použiť Arduino Uno alebo Mega. Aj keď čierna pilulka beží na 3,3 V, kolíky UART tolerujú 5 V, takže si nerobte starosti s tým, či váš konektor beží na 3,3 V alebo 5 V.

Ak máte Uno alebo Mega, zapojte prepojovací kábel medzi RESET a GROUND. To robí z Arduina vyhradený most UART na USB, s výnimkou toho, že piny TX/RX sú opakom toho, ako sú obvykle na konektore.

Stiahnite si binárny súbor bootloadera. Chcete generic_boot20_pb12.bin. V systéme Windows nainštalujte ST's Flash Loader Demonstrator. V systéme Linux (a možno aj OS X a dokonca aj Windows, ak dávate prednosť nástrojom príkazového riadka), použite namiesto toho tento pythonový skript, ale moje pokyny budú pre Windows.

Vykonajte nasledujúce pripojenia:

  • Most PA9 na UART RX („TX“, ak používate trik Arduino)
  • Most PA10 na UART TX („RX“, ak používate trik Arduino)
  • Pozemok mosta z G do UART

Rád používam tipy logickej sondy na vytváranie spojení na strane STM32, ale môžete tiež spájkovať niektoré vodiče, ktoré môžete neskôr prerušiť (alebo odspájkovať, ak chcete byť úhľadní).

Pripojte most UART k počítaču. Zapnite čiernu pilulku prostredníctvom portu USB (najlepšie ak ju pripojíte k nabíjačke a nie k počítaču, pretože počítač sa pravdepodobne bude sťažovať na nerozpoznané zariadenie USB). Spustite ukážku programu Flash Loader. Vyberte port COM pre svoj most UART. Vyberte možnosť „Odstrániť ochranu“, ak je k dispozícii. Vyberte radšej 64kb než 128kb flash verziu. A nahrajte binárny súbor bootloadera.

Vypnite všetko a potom presuňte prepojku z B0+/stred na B0-/stred. Teraz máte bootloader, ktorý môžete používať s Arduino IDE.

Krok 3: Pripravte Stm32duino v Arduino IDE

Pripravte si Stm32duino v Arduino IDE
Pripravte si Stm32duino v Arduino IDE
Pripravte si Stm32duino v Arduino IDE
Pripravte si Stm32duino v Arduino IDE

Predpokladám, že máte nainštalované najnovšie IDE Arduino.

V Nástroje | Dosky | Boards Manager, nainštalujte podporu pre Arduino Zero (stačí vložiť Zero do vyhľadávania, kliknúť na nájdený záznam a potom nainštalovať). Áno, nepracujete s nulou, ale týmto sa nainštaluje správny kompilátor gcc.

Ďalej si stiahnite jadro stm32duino. V systéme Windows odporúčam stiahnuť súbor zip, pretože keď som si súbory rezervoval (pravdaže so svn), mal som určité problémy s povoleniami v súboroch v adresári nástrojov systému Windows, ktoré bolo potrebné opraviť. Vložte vetvu do Arduino/Hardware/Arduino_STM32 (aby ste mali priečinky ako Arduino/Hardware/Arduino_STM32/STM32F1 atď.) V systéme Windows nainštalujte ovládače spustením ovládačov / win / install_drivers.bat.

Nainštalovať moju knižnicu USBHID: Prejdite na položku Skica | Zahrnúť knižnicu | Spravujte knižnice a vyhľadajte USBHID. Kliknite naň a kliknite na Inštalovať.

Nainštalovať moju knižnicu GameControllersSTM32: Prejsť na Skicu | Zahrnúť knižnicu | Spravujte knižnice a hľadajte GameControllery. Kliknite naň a kliknite na Inštalovať.

Krok 4: Okruh

Obvod
Obvod
Obvod
Obvod
Obvod
Obvod
Obvod
Obvod

Moje nastavenie používa štyri LED diódy na indikáciu aktuálneho emulačného režimu binárne (áno, dalo by sa použiť LCD displej, ale keď som ho postavil), ležali mi LED diódy, dve tlačidlá na prepínanie režimu nahor a nadol (a niektoré ďalšie triky) a prepínač na prepínanie smeru pohybu.

Okrem toho je tu vstup I2C od Nunchuck a konektor k ovládaču Gamecube. Ak chcete podporiť iba jednu z týchto dvoch možností, stačí upraviť gamecube.h v náčrte a ušetriť si tak spájkovanie.

Malým kúskom protoboardu som namontoval štyri diódy LED a dve tlačidlá prepínania režimov (hore a dole), ako aj jeden výsuvný odpor pre údaje Gamecube. Na protoboard som priviedol 3,3 V, ale nepotreboval som na to zviesť zem, aj keď môžete, ak chcete. Ďalší malý kúsok protoboardu som použil na montáž konektora Nunchuck.

Odrežte kábel Gamecube. Chcete pracovať so stranou zásuvky, s ktorou sa zapojí váš ovládač. Odizolujte káble na pripojenie.

Teraz vykonajte tieto pripojenia podľa schémy zapojenia:

  • 10uF kondenzátor medzi 3,3 V a zemou (s mínusovou stranou akýchkoľvek elektrolytov na zemi). Toto by malo byť čo najbližšie k čipu, a preto som ho spájkoval priamo s vývojovou doskou, a nie s protoboardom. Na dobrú mieru môžete pridať 100 nF ako ja, ale nie som si istý, či je to potrebné.
  • Zásuvka Gamecube #2 - A6 na doske stm32
  • 1Kohmový odpor medzi päticou Gamecube #2 a 3,3 V na doske stm32 (alebo na protoboarde)
  • Zásuvka Gamecube č. 3 a č. 4 - uzemnená na doske stm32
  • Zásuvka Gamecube #6 - 3,3 V na doske stm32 (alebo na protoboarde)
  • LED v sérii s odporom 220 ohmov (alebo väčším) medzi A0 na doske stm32 a 3,3 V (záporný koniec (plochý) na PA0; kladný koniec na 3,3 V)
  • Opakujte s LED+odporom medzi A1 a 3,3 V, A2 a 3,3 V a A3 a 3,3 V.
  • Okamžité prepínanie medzi A5 na doske stm32 (prírastkový režim) a 3,3 V a ďalším medzi A4 a 3,3 V (znížený režim); tento prepínač zvyšuje číslo režimu
  • Prepínač medzi A8 a 3,3V
  • cvičebný stroj zem - stm32 zem
  • cvičebný stroj pozitívny signál - doska stm32 A7 (všimnite si, že A7 je vhodná iba pre 3,3 V; ak je váš cvičebný stroj 5 V, použite A9 a upravte gamecube.h)
  • Uzemnenie Nunchuck (označené - na mojej doske adaptéra) - uzemnenie stm32
  • Nunchuck +3,3 V (označené +) - stm32 3,3 V
  • Nunchuck SDA (označené D) - stm32 B7
  • Nunchuck SCL (označené C) - stm32 B6
  • Rezistor 10Kohm medzi Nunchuck SDA a 3,3 V na doske stm32
  • Rezistor 10Kohm medzi Nunchuck SCL a 3,3 V na doske stm32.

Krok 5: Nainštalujte náčrt

Nainštalovať Sketch
Nainštalovať Sketch
Nainštalovať Sketch
Nainštalovať Sketch

Stiahnite si moju skicu USB adaptéra Gamecube a načítajte ju do Arduino IDE. V gamecubecontroller.h existuje niekoľko možností, ako ovládať:

  • odstrániť // pred #define ENABLE_EXERCISE_MACHINE (každý to musí urobiť)
  • ak ste potrebovali presunúť pripojenie cvičebného stroja na A9, zmeňte PA7 na PA9 v riadku const uint32_t rotationDetector = PA7
  • ak je impulz detekcie rotácie cvičebného stroja vysoký, zmeňte #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING na #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • ak nechcete používať Nunchuck, dajte // pred #define ENABLE_NUNCHUCK
  • ak nechcete používať ovládač Gamecube, dajte // pred #define ENABLE_GAMECUBE.

V IDE Arduino zvoľte Nástroje | Rada | Generická séria STM32F103C.

Stlačte tlačidlo nahrávania šípky doprava. Ak dostanete správu, že doska nie je rozpoznaná, možno budete musieť v správnu chvíľu stlačiť tlačidlo reset (alebo odpojiť/zapojiť) dosku.

Krok 6: Pripojenie cvičebného stroja

Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja
Pripojenie cvičebného stroja

Spojte konektor s konektorom pre pripojenie vášho trenažéra. Na našom eliptickom stroji som ho zapájal, zatiaľ čo na rotopede som mohol použiť dupontné konektory pre mužov a ženy. Na elipticale som na boku konzoly urobil otvor, aby zodpovedal spojeniu. Na cvičebnom stroji z neho len trčia drôty a zvonku malá 3D tlačená škatuľka (súbor OpenSCAD).

Krok 7: Prípad projektu

Prípad projektu
Prípad projektu
Prípad projektu
Prípad projektu
Prípad projektu
Prípad projektu
Prípad projektu
Prípad projektu

Projekt je možné uzavrieť do malej kartónovej škatule, kontajnera z tupperwaru alebo vlastného 3D tlačeného puzdra. Keďže mám 3D tlačiareň, išiel som po kryte na mieru. Tu sú súbory OpenSCAD a STL.

Nohy sú navrhnuté tak, aby prilepili (funguje superlepidlo) k spodnej časti a aby do nich boli prilepené lepivé gumené nožičky.

Tiež som za tepla prilepil nejaký suchý zips na projektový kufor a cvičebné stroje.

Krok 8: Použite

Použite
Použite
Použite
Použite
Použite
Použite
Použite
Použite

Dve tlačidlá môžu prepínať až zo 16 rôznych režimov emulácie (v skutočnosti môžete mať viac, ale v projekte sú iba štyri diódy LED na zobrazenie čísla režimu). Emulačné režimy sú definované v gamecubecontroller.h v náčrte. Na väčšinu hier môžete použiť režim 1, zjednotený posuvný joystick so 100% rýchlosťou. Emulovaný joystick má posuvník (v skutočnosti dva posuvníky, ale oba robia to isté), ktorý je ovládaný otáčaním trenažéra. Samotné tlačidlá a joystick sa ovládajú ovládačom Gamecube alebo Nunchuck. V systéme Windows niektoré hry podporujú ovládač XBox 360, ale nie joystick USB. Na to použite režim 13 (v režime 1 stlačte tlačidlo nadol).

Režimy 9 a 10 vám umožňujú šliapať pomalšie a napriek tomu dosiahnuť plný útlak jazdca, čo je príjemné pre deti alebo pre cvičebné stroje nastavené na vyšší odpor. Rýchlosti môžete nastaviť aj na cvičcisemachine.ino.

Existuje mnoho ďalších režimov emulácie. Odkaz na tlač je súčasťou modelist.pdf spolu so skicou.

Keď šliapnete na cvičebnom stroji, diódy LED na projekte prepnú zo zobrazenia čísla aktuálneho režimu na rýchlosť. Keď svietia všetky štyri svetlá, vaša rýchlosť je maximálna (emulovaný posúvač má maximálne rozšírenie)-v tom momente nebudete mať žiadnu výhodu v hre, ak budete postupovať rýchlejšie. Okrem toho modrá dióda LED na doske STM32F1 svieti, keď všetko funguje, ale bliká, keď sa spustí snímač otáčania.

Ak chcete otočiť pohyb, otočte prepínač smeru na skrinke adaptéra.

V systéme Windows spustite joy.cpl, aby ste vykonali kalibráciu a zistili, ako veci fungujú. Pretože na kalibráciu emulovaného joysticku je potrebné šliapať skutočne rýchlo, existuje spôsob, ako podvádzať pri kalibrácii. Ak na ovládači Gamecube zostanete nečinný asi 10 sekúnd, môžete začať používať ramenné tlačidlá na ovládanie emulovaných posúvačov joysticku. Keď na Nunchucku držíte tlačidlo mínus-mínus, namiesto neho môžete pomocou emulátora ovládať joystick hore/dole.

Ak chcete GUI na prepínanie režimov emulácie, v systéme Windows skica obsahuje mode.py, pythonový skript s GUI na prepínanie režimov. Mode.py môžete vyvolať aj v dávkovom súbore, ktorý spustí hru.

Dve hry, o ktorých som zistil, že s cvičebným strojom fungujú skutočne skvele, sú Toybox Turbos a SuperTuxCart (zadarmo).

Adaptér obsahuje aj mnoho ďalších funkcií emulácie. Môžete ho napríklad použiť ako jednoduchý adaptér Nunchuck alebo Gamecube Controller, ktorý napodobňuje joystick, klávesnicu (napríklad šípky/WASD) a/alebo myš. V gamecubecontroller.h je uvedených veľa režimov. Môžete tiež pripojiť podložku kompatibilnú s Dance Dance Revolution Gamecube/Wii a používať ju na hranie hier, ktoré nie sú na to určené, ako napríklad Tetris, na ďalšiu zábavu a cvičenie.