
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36




За да насърча упражненията в себе си и семейството, направих адаптер, който подражава на стандартен USB адаптер за игрови контролери, но контролира скоростта на движение на играта, като върти педали върху елипсовидна машина или велоергометър. Това е особено приятно за състезателни игри. Това със сигурност мотивира човек да върти педали бързо, когато играе състезателни игри.
Основният хардуер е платка за разработка STM32F103C8 на стойност $ 2 "black pill" с ядрото stm32duino Arduino и USB HID библиотека, която разработих на базата на основната вилка на libarra111. STM32F1 е бърз и евтин и има пълна скорост на USB поддръжка, така че е идеален за проекта.
За да използвате, трябва да докоснете сензора за въртене на елиптичния или велоергометър (ако вашият сензор за въртене работи по различен начин от тези на нашите машини-около 3v, активно ниско-може да се наложи да промените веригата и/или кода).
Елиптичната скорост на въртене на велосипеда контролира плъзгача на контролера. Освен това, включвате стандартен Wii Nunchuck или Gamecube контролер в адаптера за движение на джойстика, бутони и т.н. Има много различни режими на управление. Например, по -малките деца може да се наложи да увеличат скоростта си малко, а някои игри може да използват различна схема за управление. В софтуера има редица вградени схеми за управление, а други могат лесно да се добавят в кода. Устройството може да емулира USB игрален контролер, клавиатура, мишка, XBox 360 контролер или някаква комбинация от първите три.
Посоката на движение в момента не се открива: за превключване между движение напред и назад адаптерът има превключвател. (Алтернативно, може да се използва магнитен сензор с ефект на Хол като това устройство и да се променят веригата и софтуера.)
Адаптерът работи като стандартен USB контролер, така че можете да го използвате с Windows, Linux, OS X, Android и др.
Като бонус, адаптерът има всички функции на този проект, работещ като пълнофункционален адаптер Gamecube, който ви позволява да използвате контролерите на Gamecube на компютър, включително да контролирате игри със съвместими с Gamecube/Wii танцови постелки Dance Dance Revolution.
Цената е под около 10 долара, плюс калъф (имам дизайн за 3D принтиране), проводници и спойка. Части:
- "Black Pill" stm32f103c8 дъска за разработка ($ 2 на Aliexpress)
- Гнездо за Gamecube ($ 1.60 на Aliexpress, за удължителен кабел Gamecube, който може да бъде отрязан)
- Пробивна платка за гнездо Nunchuck ($ 0,51 на Aliexpress; търсене на Wiichuck)
- Малък двупозиционен превключвател (под $ 1 на Aliexpress)
- Вашият избор на двупроводникови мъжки и женски конектори (около $ 1 на Aliexpress, ако използвате 5,5 мм конектори за захранване); имате нужда от един женски конектор на тренировъчна машина
- 2 тактилни превключвателя (под $ 0,50 на Aliexpress)
- 4 червени светодиода (под $ 0,50 на Aliexpress; можете да използвате и малък LCD екран на Nokia)
- кондензатори: 10uF електролитни и по избор 100nF
- резистори: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
- малка прото платка (под $ 1 на Aliexpress).
Нунчът е подходящ за използване с една ръка с елипсовидна машина. На велоергометър можете да използвате адаптер с две ръце като този на Gamecube. Ако искате да използвате само една от тези две опции за управление, можете да използвате по -малко връзки.
Нуждаете се също от компютър, поялник и мултицет. Ще ви е необходим и мост UART към USB (използвах Arduino Mega, който имах за друг проект; или можете да закупите модул CP2102 на Aliexpress за долар), за да инсталирате буутлоудър на черното си хапче, за да го използвате с Средата на Arduino или иначе можете да похарчите още няколко долара и да получите борда за разработка на RobotDyn с предварително инсталиран буутлоудър на Arduino.
Позволете ми да добавя, че участвам в това състезание Wheels, защото това е начин за свързване на виртуалните колела в състезателни игри с автомобили на компютър с физическите колела на велоергометри и елипси.
Стъпка 1: Докоснете Into Rotation Sensor




И двата тренажора, които хакнах, имат конзола, която показва скоростта. Между конзолата и корпуса на машината има проводници. Трябва да се включите в тези проводници, за да получите достъп до данни. Ако вашите машини са като моите, конзолата може да бъде премахната и там ще намерите или лентов кабел (елипсовиден), или два проводника (велосипед). Включих се в тях, като изключих проводниците и ги свързах с отделни джъмпери от мъжки към женски, в които мога да се включа.
Използвайте опит и грешка и мултицет, за да идентифицирате чифт проводници, между които има импулс на напрежение по време на пълно завъртане.
По принцип тренировката е следната: свържете мултицета към чифт проводници (внимавайте да не скъсите нищо) при работеща машина и много бавно завъртете педалите. И в двете ни машини има двойка проводници, между които обикновено напрежението е около +3V, но по време на кратка част от въртенето пада на земята: това е схема с ниско ниво на активност. Може да откриете, че вашата машина има активна висока схема, където по-голямата част от въртенето е заземена, а импулсът е положителен и след това ще трябва да редактирате скицата на Arduino.
Ако смятате, че има някакъв шанс някой от проводниците в конзолата, с която имате работа, да е мрежово променлив ток, препоръчвам да спрете, освен ако наистина не знаете какво правите. За щастие, нашият велоергометър се захранва от батерии и нашите елипсовидни щепсели се поставят в стена, така че около конзолата има само около 12V DC.
В случая с велоергометъра беше много лесно. Имаше само четири проводника. Две бяха за пулсомер и два за сензор за въртене.
Елиптичният имаше много повече проводници и затова беше повече работа. Методът на грубата сила е следният. Прикрепете мултицет към чифт проводници. Бавно извършете пълно завъртане (или малко повече за всеки случай) на педалите и вижте дали има спад на напрежението или скок. Ако да, имате го. Ако не, повторете за друга двойка. Това са много опити и грешки: за 13 проводника, това са 78 завъртания.
Ето един трик, който може да ви помогне да ускорите търсенето на правилната двойка проводници. Може да се надявате, че вашата машина, подобно на моята, има нормално високо напрежение на детектора с нисък импулс. Ако е така, тогава ако оставите педалите на произволно място, имате голям шанс двата проводника на детектора да имат около +3V или +5V между тях. Затова проверявайте само въртенето на педала за тези двойки проводници, които имат +3V или +5V между тях.
Още един трик. Може да успеете да определите къде при завъртане на педала се задейства сензорът за въртене. Например, тогава вашата машина може да мига нещо на екрана, или да актуализира дисплея на скоростта, или да се активира от режим на заспиване, или да издаде звуков сигнал. Ако е така, след това преместете педалите на около 1/3 от завъртането и след това потърсете двойки проводници, които имат 3-5V между тях, и ги тествайте, като преместите педалите в позицията, където сензорът се задейства.
Ако можете да идентифицирате заземяващия проводник, можете да ускорите процеса значително, тъй като тогава трябва само да преминете между земята и всеки неизвестен проводник. Колкото и да е странно, на нашата елиптична маса земята на захранването изглежда не е същата като земята на детектора на въртене.
След като идентифицирате проводниците, отбележете ги. Не забравяйте да отбележите:
- нивото на високо напрежение: ако е повече от около 3.3V, но не повече от 5V, ще искате да промените веригата, за да използвате щифт A9 вместо A7 за откриване на въртене, тъй като щифт A9 е 5V-толеранс, а A7 не, и редактирайте един ред в скицата ми; ако е повече от 5V, ще трябва да добавите делител на напрежение
- независимо дали импулсът за откриване на въртене е нисък или висок: ако импулсът е висок, ще трябва да редактирате ред в моята скица на Arduino.
Ако имате осцилоскоп и тренировъчната машина се захранва от батерии, можете също да използвате осцилоскопа вместо мултицета. (Ако тренажорът е включен в променлив ток и вашият осцилоскоп също трябва да знаете за земните контури и как да ги избегнете. Внимавайте!)
Стъпка 2: Подгответе борда за развитие



Запояйте шестте централни щифта на черния хапче.
Ако имате платка RobotDyn с буутлоудъра Arduino, свържете B0- и B1- към централните щифтове и сте готови със стъпката.
В противен случай сега трябва да инсталирате буутлоудъра. Ще ви трябва или самостоятелен UART към USB мост, или можете да използвате Arduino Uno или Mega за тази цел. Въпреки че черното хапче работи на 3.3V, UART щифтовете са 5V толерантни, така че не се притеснявайте дали вашият конектор работи на 3.3V или 5V.
Ако имате Uno или Mega, поставете джъмпер кабел между RESET и GROUND. Това превръща Arduino в специален UART към USB мост, с изключение на това, че пиновете TX/RX са обратно на това, което обикновено са на конектора.
Изтеглете двоичния файл на зареждащия механизъм. Искате generic_boot20_pb12.bin. В Windows инсталирайте демонстратора на Flash Loader на ST. В Linux (и може би OS X и дори Windows, ако предпочитате инструментите на командния ред), използвайте този скрипт на python вместо това, но моите инструкции ще бъдат за Windows.
Направете следните връзки:
- PA9 към UART мост RX ("TX", ако използвате трика Arduino)
- PA10 към UART мост TX ("RX", ако използвате трика Arduino)
- G към моста UART
Обичам да използвам съвети за логическа сонда, за да направя връзките от страната на STM32, но можете също така просто да запоите някои проводници, които по-късно можете да отрежете (или да ги спойкате, ако искате да сте спретнати).
Свържете вашия UART мост към компютъра. Захранвайте Black Pill чрез USB порта (най -добре, ако го свържете към зарядно устройство, а не към компютъра, тъй като компютърът вероятно ще се оплаче от неразпознато USB устройство). Стартирайте демонстратора на Flash Loader. Изберете COM порта за вашия UART мост. Изберете „Премахване на защитата“, ако има такава. Изберете 64kb, а не 128kb flash версия. И качете двоичния файл на зареждащия механизъм.
Изключете захранването на всичко и след това преместете джъмпера от B0+/център към B0-/център. Вече имате буутлоудър, който можете да използвате с Arduino IDE.
Стъпка 3: Подгответе Stm32duino в Arduino IDE


Предполагам, че имате инсталирана най -новата Arduino IDE.
В Инструменти | Табла | Boards Manager, инсталирайте поддръжка за Arduino Zero (просто поставете Zero в търсенето, щракнете върху намерения запис и след това инсталирайте). Да, не работите с Zero, но това ще инсталира правилния gcc компилатор.
След това изтеглете ядрото stm32duino. В Windows препоръчвам да изтеглите zip файла, тъй като когато проверявах файловете (да си призная, със svn), имах някои проблеми с разрешенията с файлове в директорията с инструменти на Windows, които се нуждаеха от поправяне. Поставете клона в Arduino/Hardware/Arduino_STM32 (така че ще имате папки като Arduino/Hardware/Arduino_STM32/STM32F1 и т.н.) В Windows инсталирайте драйвери, като стартирате drivers / win / install_drivers.bat.
Инсталирайте моята USBHID библиотека: Отидете на Sketch | Включване на библиотека | Управлявайте библиотеките и търсете USBHID. Щракнете върху него и щракнете върху Инсталиране.
Инсталирайте моята библиотека GameControllersSTM32: Отидете на Sketch | Включване на библиотека | Управлявайте библиотеки и търсете GameControllers. Щракнете върху него и щракнете върху Инсталиране.
Стъпка 4: Схема




Моята настройка използва четири светодиода, за да покаже текущия режим на емулация в двоичен формат (да, може да се използва LCD дисплей, но имах светодиоди, които лежаха наоколо, когато построих това), два бутона за превключване на режим нагоре и надолу (и направете някои други трикове) и превключвател за превключване на посоката на движение.
Освен това има вход I2C от Nunchuck и конектор към контролера Gamecube. Ако искате да поддържате само един от тези два, можете просто да редактирате gamecube.h в скицата и да си спестите малко запояване.
Използвах малко протоборд, за да монтирам четирите светодиода за режима и два бутона за превключване на режима (нагоре и надолу), както и един издърпващ се резистор за данни на Gamecube. Изведох 3.3V на протоборда, но не трябваше да го извеждам, въпреки че можете, ако искате. Използвах друг малък прототип за монтиране на конектора Nunchuck.
Изрежете кабела на Gamecube. Искате да работите със страната на гнездото, тази, към която ще се включи вашият контролер. Лентови кабели за свързване.
Сега направете тези връзки съгласно електрическата схема:
- 10uF кондензатор между 3.3v и маса (с минус страна на всяка електролитика на земята). Това трябва да е възможно най -близо до чипа, така че го запоявах директно върху платката за разработка, а не върху протоборда. За добра мярка можете да добавите 100nF, както направих аз, но не съм сигурен, че това е необходимо.
- Gamecube гнездо #2 - A6 на платка stm32
- Резистор 1Kohm между гнездото Gamecube #2 и 3.3V на платката stm32 (или на протоборда)
- Gamecube гнездо #3 и #4 - заземяване на stm32 платка
- Gamecube гнездо #6 - 3.3V на платка stm32 (или на протоборд)
- LED последователно с резистор 220ohm (или по -голям) между A0 на платка stm32 и 3.3V (отрицателен край (плосък) към PA0; положителен край до 3.3V)
- Повторете с LED+резистор между A1 и 3.3V, A2 и 3.3V и A3 и 3.3V
- Моментно превключване между A5 на платка stm32 (режим на нарастване) и 3.3V и друго между A4 и 3.3V (режим на намаляване); този превключвател увеличава номера на режима
- Превключвайте между A8 и 3.3V
- тренажор маса - stm32 земя
- положителен сигнал на тренировъчната машина - stm32 дъска A7 (имайте предвид, че A7 е подходящ само за 3.3V; ако вашата тренировъчна машина е 5V, използвайте A9 и редактирайте gamecube.h)
- Nunchuck ground (с етикет - на адаптерната ми платка) - stm32 мас
- Nunchuck +3.3V (с етикет +) - stm32 3.3V
- Nunchuck SDA (обозначен с D) - stm32 B7
- Nunchuck SCL (с етикет C) - stm32 B6
- 10Kohm резистор между Nunchuck SDA и 3.3V на stm32 платка
- 10Kohm резистор между Nunchuck SCL и 3.3V на stm32 платка.
Стъпка 5: Инсталирайте Sketch


Изтеглете скицата на USB адаптера ми Gamecube и я заредете в Arduino IDE. Има някои опции за управление в gamecubecontroller.h:
- премахнете // пред #define ENABLE_EXERCISE_MACHINE (всеки трябва да направи това)
- ако трябва да преместите връзката на тренировъчната машина към A9, променете PA7 на PA9 в const uint32_t rotationDetector = PA7 ред
- ако пулсът ви за откриване на въртене на тренировъчната машина е висок, променете #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING на #deteine ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
- ако не искате да използвате Nunchuck, поставете // пред #define ENABLE_NUNCHUCK
- ако не искате да използвате Gamecube контролер, поставете // пред #define ENABLE_GAMECUBE.
В IDE на Arduino изберете Инструменти | Дъска | Обща серия STM32F103C.
Натиснете бутона за качване със стрелка надясно. Обърнете внимание, че може да се наложи да натиснете бутона за нулиране (или да изключите/включите) платката в подходящия момент, ако получите съобщение, че платката не е разпозната.
Стъпка 6: Свързване на машина за упражнения




Свържете в жак за свързване на вашата тренировъчна машина. На нашата елипсовидна машина го запоявах, докато на велотренажера успях да използвам мъжки и женски съединители dupont. На елипсовидната направих дупка отстрани на конзолата, за да пасне на връзката. На тренировъчната машина имам просто стърчащи проводници от нея и малка 3D отпечатана кутия (файл OpenSCAD) отвън.
Стъпка 7: Казус на проекта




Човек може да затвори проекта в малка картонена кутия, контейнер за тупервауер или персонализиран 3D печат. Тъй като имам 3D принтер, отидох за персонализирания корпус. Файловете OpenSCAD и STL са тук.
Краката са проектирани да залепват (суперлепило работи) към дъното и да имат залепени гумени крачета в тях.
Също така залепих горещо някои закопчалки с кука и към корпуса на проекта, и към тренировъчните машини.
Стъпка 8: Използвайте




Двата бутона могат да превключват между 16 различни режима на емулация (всъщност можете да имате повече, но в проекта има само четири светодиода за показване на номера на режима). Режимите на емулация са дефинирани в gamecubecontroller.h в скицата. За повечето игри можете да използвате режим 1, унифициран джойстик за плъзгач със 100% скорост. Емулираният джойстик има плъзгач (всъщност два плъзгача, но и двата правят едно и също нещо), който се контролира от въртенето на тренировъчната машина. Бутоните и самият джойстик се управляват от контролера Gamecube или Nunchuck. В Windows някои игри поддържат XBox 360 контролер, но не и USB джойстик. За тези използвайте режим 13 (натиснете бутона надолу от режим 1).
Режимите 9 и 10 ви позволяват да въртите педали по -бавно и все пак да получите пълна депресия на плъзгача, което е приятно за деца или за тренировъчни машини, настроени на по -високо съпротивление. Можете също да регулирате скоростите в упражнениеmachine.ino.
Има много други режими на емулация. Референцията за печат е включена в modelist.pdf със скицата.
Когато педалирате на тренировъчната машина, светодиодите на проекта преминават от показване на номера на текущия режим към скоростта. Когато и четирите светлини светят, скоростта ви е максимална (емулираният плъзгач има максимално разширение)-в този момент нямате никакво предимство в играта, ако вървите по-бързо. Освен това, синият светодиод на платката STM32F1 свети, когато всичко работи, но мига, когато сензорът за въртене се задейства.
За да обърнете движението обратно, завъртете превключвателя за посоката на адаптерната кутия.
В Windows стартирайте joy.cpl, за да калибрирате и да видите как работят нещата. Тъй като е неудобство да се налага да въртите педали много бързо, за да калибрирате емулирания джойстик, има начин да мамите за калибриране. На контролера Gamecube, ако останете неподвижни за около 10 секунди, можете да започнете да използвате бутоните на рамото, за да управлявате емулираните плъзгачи на джойстика. С Nunchuck, докато държите бутона минус режим, можете да използвате джойстика нагоре/надолу, за да контролирате вместо това емулираните плъзгачи.
Ако искате GUI за превключване на режими на емулация, в Windows скицата включва mode.py, скрипт на python с GUI за превключване на режими. Можете също да извикате mode.py в партиден файл, който стартира игра.
Две игри, които открих, че работят наистина страхотно с тренировъчната машина, са Toybox Turbos и SuperTuxCart (безплатно).
Адаптерът включва и много други функции за емулация. Например, можете да го използвате като прост адаптер за Nunchuck или Gamecube контролер, емулиращ джойстик, клавиатура (например стрелки/WASD) и/или мишка. В gamecubecontroller.h са изброени много режими. Можете също да включите Dance Dance Revolution Gamecube/Wii-съвместима подложка и да я използвате, за да играете игри, които не са предназначени за нея, като тетрис, за допълнително забавление и упражнения.
Препоръчано:
Сгъваема тренировъчна машина: 4 стъпки

Обучителна машина за сгъване: Проектирам този проект, защото сега навсякъде страдат от коронавирус и хората се чувстват отегчени да стоят вкъщи, без да правят нищо. Тази машина може да тренира вашето тяло и вашите спринтови умения. Тази машина прави хората, които обичат, но не могат да излязат на
Фитнес тренировъчна машина: 4 стъпки

Машина за фитнес тренировки: Направих тази машина за хора, които не са добри във фитнеса, като хрускат, седнал, скок на дължина и бягане. Това може да им помогне да правят добра стойка всеки път, когато го правят. Следователно те могат да знаят колко пъти го правят. Много хора не се справят добре с фитнес
Манекен за тренировъчна реакция: 9 стъпки (със снимки)

Реактивен тренировъчен манекен: Като искане от приятел спортист за изграждане на евтино, но ефективно устройство за подобряване на тренировките за реакция, измислих това! Идеята беше да се създаде набор от LED устройства, които потребителите трябва да деактивират чрез разпознаване на близост. При деактивиране на устройства на случаен принцип
USB контролер за бас, високите и силата на звука със светодиоди за клавиатурата: 6 стъпки (със снимки)

USB контролер за баси, високи и силни звуци със светодиоди за клавиатурата: Имам Creative SoundBlaster Audigy в основния си настолен компютър и имах нужда от начин за бързо регулиране на настройките на басите и високите честоти (както и силата на звука) при слушане на аудио или видео носител . Адаптирах кода от два източника, дадени в
Разбъркване на NES контролер (Nintendo контролер MP3, V3.0): 5 стъпки (със снимки)

Разбъркване на контролера на NES (Nintendo Controller MP3, V3.0): Напълно изтръгнах ryan97128 от неговия дизайн за Nintendo Controller MP3, версия 2.0 и чувам, че той е получил идеята от всички мъдри Morte_Moya, така че не мога да взема кредит за целия им гений. Просто исках да добавя удобство и презареждане