Оглавление:
- Шаг 1. Нажмите на датчик вращения
- Шаг 2: Подготовьте Совет по развитию
- Шаг 3: Подготовьте Stm32duino в Arduino IDE
- Шаг 4: Схема
- Шаг 5: установите Sketch
- Шаг 6: Подключение тренажера
- Шаг 7: Пример проекта
- Шаг 8: используйте
Видео: USB-игровой контроллер на тренажере: 8 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Чтобы поощрять упражнения для себя и семьи, я сделал адаптер, который имитирует стандартный USB-адаптер игрового контроллера, но контролирует скорость движения в игре, крутя педали на эллиптическом тренажере или велотренажере. Это особенно удобно для гоночных игр. Это, безусловно, мотивирует быстро крутить педали во время гонок.
Основное оборудование - это отладочная плата STM32F103C8 стоимостью 2 доллара с ядром stm32duino Arduino и библиотекой USB HID, которую я разработал на основе вилки ядра libarra111. STM32F1 быстрый и дешевый, с полноскоростной поддержкой USB, поэтому он идеально подходит для проекта.
Для использования вам необходимо подключиться к датчику вращения на эллиптическом тренажере или велотренажере (если ваш датчик вращения работает не так, как на наших тренажерах - около 3 В, активный низкий уровень - вам может потребоваться изменить схему и / или код.).
Скорость вращения эллиптического тренажера / велосипеда регулируется ползунком контроллера. Кроме того, вы подключаете к адаптеру стандартный контроллер Wii Nunchuck или Gamecube для перемещения джойстика, кнопок и т. Д. Существует множество различных режимов управления. Например, маленьким детям может потребоваться немного повысить их скорость, а в некоторых играх может использоваться другая схема управления. В программе есть несколько встроенных схем управления, другие легко могут быть добавлены в код. Устройство может имитировать игровой USB-контроллер, клавиатуру, мышь, контроллер XBox 360 или комбинацию первых трех.
Направление движения на данный момент не определяется: для переключения между прямым и обратным ходом на адаптере есть тумблер. (В качестве альтернативы можно использовать магнитный датчик на эффекте Холла, такой как это устройство, и изменить схему и программное обеспечение.)
Адаптер работает как стандартный USB-контроллер, поэтому вы можете использовать его с Windows, Linux, OS X, Android и т. Д.
В качестве бонуса адаптер обладает всеми функциями этого проекта, работая как полнофункциональный адаптер Gamecube, позволяя использовать контроллеры Gamecube на компьютере, в том числе управлять играми с помощью танцевальных ковриков Dance Dance Revolution, совместимых с Gamecube / Wii.
Стоимость составляет менее 10 долларов, плюс чехол (у меня есть дизайн для 3D-печати), провода и припой. Части:
- Плата для разработки "Black Pill" stm32f103c8 (2 доллара на Aliexpress)
- Разъем Gamecube (1,60 доллара на Aliexpress, за удлинитель Gamecube, который можно урезать)
- Плата с разъемом для нунчака (0,51 доллара на Aliexpress; поиск Wiichuck)
- Маленький двухпозиционный тумблер (менее 1 доллара на Aliexpress)
- На ваш выбор двухпроводные штекерные и розеточные разъемы (около 1 доллара на Aliexpress, если вы выберете разъемы Power Bar диаметром 5,5 мм); вам нужен один разъем-розетка для каждого тренажера
- 2 тактильных переключателя (менее $ 0,50 на Aliexpress)
- 4 красных светодиода (менее $ 0,50 на Aliexpress; вы также можете использовать небольшой ЖК-экран Nokia)
- конденсаторы: электролитические 10 мкФ и дополнительно 100 нФ
- резисторы: 1 x 100 кОм, 2 x 10 кОм, 1 x 1 кОм, 4 x 220 Ом
- небольшая прототипная плата (до $ 1 на Алиэкспресс).
Нунчак хорош для использования одной рукой на эллиптическом тренажере. На велотренажере можно использовать адаптер для двух рук, например, Gamecube. Если вы хотите использовать только один из этих двух вариантов управления, вы можете использовать меньше подключений.
Также вам понадобятся компьютер, паяльник и мультиметр. Вам также понадобится мост UART-USB (я использовал Arduino Mega, который у меня был для другого проекта; или вы можете купить модуль CP2102 на Aliexpress за доллар), чтобы установить загрузчик на вашу черную таблетку, чтобы использовать его с Среда Arduino, иначе вы можете потратить еще пару долларов и получить плату разработки RobotDyn с предустановленным загрузчиком Arduino.
Позвольте мне добавить, что я участвую в конкурсе «Колеса», потому что это способ связать виртуальные колеса в автомобильных гоночных играх на компьютере с физическими колесами велотренажеров и эллиптических тренажеров.
Шаг 1. Нажмите на датчик вращения
На обоих тренажерах, которые я взломал, есть консоль, отображающая скорость. Между консолью и корпусом машины проложены провода. Вам нужно подключиться к этим проводам для доступа к данным. Если ваши машины похожи на мои, консоль может быть снята, и вы найдете либо ленточный кабель (эллиптический), либо два провода (велосипед). Я подключился к ним, отсоединив провода и соединив их отдельными перемычками «папа-мама», к которым я мог подключиться.
Используйте метод проб и ошибок и мультиметр, чтобы определить пару проводов, между которыми присутствует импульс напряжения во время полного вращения.
По сути, упражнение таково: подключите мультиметр к паре проводов (стараясь ничего не закоротить) при работающей машине и очень медленно вращайте педали. В обеих наших машинах есть пара проводов, между которыми обычно напряжение составляет около +3 В, но во время короткого периода вращения оно падает на землю: это схема с активным низким уровнем. Вы можете обнаружить, что ваша машина имеет схему с активным высоким уровнем, где большая часть вращения - это земля, а импульс положительный, и тогда вам нужно будет отредактировать эскиз Arduino.
Если вы считаете, что есть вероятность, что какой-либо из проводов в консоли, с которыми вы имеете дело, подключен к сети переменного тока, я рекомендую остановиться, если вы действительно не знаете, что делаете. К счастью, наш велотренажер питается от батареи, и наши эллиптические вилки подключаются к стенной бородавке, поэтому вокруг консоли находится всего около 12 В постоянного тока.
В случае с велотренажером это было действительно просто. Провода было всего четыре. Два были для пульсометра и два - для датчика вращения.
У эллиптического тренажера было намного больше проводов, поэтому работы было больше. Метод грубой силы таков. Присоедините мультиметр к паре проводов. Медленно сделайте полный оборот (или немного больше, на всякий случай) на педалях и посмотрите, есть ли провал или скачок напряжения. Если да, то она у вас есть. Если нет, повторите для другой пары. Это много проб и ошибок: для 13 проводов это 78 оборотов.
Вот прием, который может помочь вам ускорить поиск подходящей пары проводов. Вы можете надеяться, что ваша машина, как и моя, имеет обычно высокое напряжение детектора с низким импульсом. Если это так, то, если вы оставите педали в случайном месте, у вас есть хороший шанс, что между двумя проводами детектора будет около + 3 В или + 5 В. Поэтому проверяйте вращение педали только для тех пар проводов, между которыми есть + 3 В или + 5 В.
Еще одна уловка. Возможно, вы сможете определить, где при вращении педали срабатывает датчик вращения. Например, ваша машина может что-то мигать на экране, или обновлять отображение скорости, или активироваться из спящего режима, или издавать звуковой сигнал. Если это так, то переместите педали примерно на 1/3 оборота, а затем найдите пары проводов, между которыми есть 3-5 В, и проверьте их, переместив педали в положение, в котором срабатывает датчик.
Если вы можете идентифицировать заземляющий провод, вы можете значительно ускорить процесс, так как вам нужно будет пройти только между заземлением и каждым неизвестным проводом. Как ни странно, на нашем эллиптическом тренажере заземление источника питания не было таким же, как заземление детектора вращения.
Как только вы определите провода, запишите их. Убедитесь, что вы отметили:
- высокий уровень напряжения: если оно больше примерно 3,3 В, но не более 5 В, вы захотите изменить схему, чтобы использовать контакт A9 вместо A7 для обнаружения вращения, поскольку контакт A9 имеет допуск 5 В, а A7 - нет, и отредактируйте одна линия в моем эскизе; если оно больше 5 В, необходимо добавить делитель напряжения
- низкий или высокий импульс обнаружения вращения: если импульс высокий, вам нужно отредактировать строку в моем эскизе Arduino.
Если у вас есть осциллограф, а тренажер питается от батареи, вы также можете использовать осциллограф вместо мультиметра. (Если тренажер подключен к сети переменного тока, как и ваш осциллограф, вам необходимо знать о контурах заземления и о том, как их избежать. Будьте осторожны!)
Шаг 2: Подготовьте Совет по развитию
Припаяйте шесть центральных контактов перемычки к черной таблетке.
Если у вас есть плата RobotDyn с загрузчиком Arduino, подключите B0- и B1- к центральным контактам, и все готово.
В противном случае вам необходимо установить загрузчик. Вам понадобится либо автономный мост UART-USB, либо для этой цели вы можете использовать Arduino Uno или Mega. Хотя черная таблетка работает при 3,3 В, контакты UART допускают 5 В, поэтому не беспокойтесь о том, работает ли ваш разъем при 3,3 В или 5 В.
Если у вас Uno или Mega, поместите перемычку между RESET и GROUND. Это превращает Arduino в выделенный мост UART-USB, за исключением того, что контакты TX / RX являются обратными тому, как они обычно находятся на разъеме.
Загрузите двоичный файл загрузчика. Вам нужен generic_boot20_pb12.bin. В Windows установите ST's Flash Loader Demonstrator. В Linux (и, возможно, OS X и даже Windows, если вы предпочитаете инструменты командной строки), используйте вместо этого этот скрипт python, но мои инструкции будут для Windows.
Сделайте следующие подключения:
- PA9 to UART bridge RX ("TX", если вы используете трюк Arduino)
- PA10 к мосту UART TX ("RX", если вы используете трюк Arduino)
- G к заземлению моста UART
Мне нравится использовать наконечники логических пробников для подключения на стороне STM32, но вы также можете просто припаять некоторые провода, которые позже можете отрезать (или отпаять, если хотите, чтобы все было аккуратно).
Подключите мост UART к компьютеру. Включите Black Pill через USB-порт (лучше всего, если вы подключите его к зарядному устройству, а не к компьютеру, поскольку компьютер, скорее всего, будет жаловаться на нераспознанное USB-устройство). Запустите демонстратор Flash Loader. Выберите COM-порт для вашего моста UART. Если возможно, выберите «Снять защиту». Выберите версию флэш-памяти на 64 КБ, а не на 128 КБ. И загрузите бинарный загрузчик.
Отключите все и затем переместите перемычку с B0 + / center на B0- / center. Теперь у вас есть загрузчик, который можно использовать с IDE Arduino.
Шаг 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: Схема
Моя установка использует четыре светодиода, чтобы указать текущий режим эмуляции в двоичном формате (да, можно было бы использовать ЖК-дисплей, но у меня были светодиоды, когда я его построил), две кнопки для переключения режима вверх и вниз (и некоторые другие хитрости), и тумблер переключения направления движения.
Кроме того, есть вход I2C от Nunchuck и разъем для контроллера Gamecube. Если вы хотите поддерживать только один из этих двух, вы можете просто отредактировать gamecube.h в скетче и сэкономить время на пайке.
Я использовал небольшую часть прототипной платы, чтобы установить четыре светодиода режимов и две кнопки переключения режимов (вверх и вниз), а также один подтягивающий резистор для данных Gamecube. Я подал 3,3 В на макетную плату, но заземлять ее мне не пришлось, хотя вы можете, если хотите. Я использовал еще одну небольшую плату для установки разъема Nunchuck.
Обрежьте кабель Gamecube. Вы хотите работать со стороной сокета, к которой подключается ваш контроллер. Зачистите кабели для подключения.
Теперь выполните эти подключения согласно принципиальной схеме:
- Конденсатор 10 мкФ между 3,3 В и землей (отрицательная сторона любого электролита находится на земле). Он должен быть как можно ближе к микросхеме, поэтому я припаял его прямо на макетной плате, а не на макетной плате. Для удобства вы можете добавить 100 нФ, как это сделал я, но я не уверен, что это необходимо.
- Разъем Gamecube # 2 - A6 на плате stm32
- Резистор 1 кОм между гнездом Gamecube # 2 и 3,3 В на плате stm32 (или на плате protoboard)
- Разъемы Gamecube # 3 и # 4 - земля на плате stm32
- Разъем Gamecube # 6 - 3,3 В на плате stm32 (или на плате protoboard)
- Светодиод последовательно с резистором 220 Ом (или больше) между A0 на плате stm32 и 3,3 В (отрицательный конец (плоский) к PA0; положительный конец к 3,3 В)
- Повторите со светодиодом + резистор между A1 и 3,3 В, A2 и 3,3 В и A3 и 3,3 В
- Мгновенный переключатель между A5 на плате stm32 (режим инкремента) и 3,3 В и другим между A4 и 3,3 В (режим декремента); этот переключатель увеличивает номер режима
- Переключатель между A8 и 3,3 В
- тренажер наземный - stm32 Ground
- положительный сигнал тренажера - плата stm32 A7 (обратите внимание, что A7 подходит только для 3,3 В; если на вашем тренажере 5 В, используйте A9 и отредактируйте gamecube.h)
- Заземление нунчака (помечено - на моей плате адаптера) - заземление stm32
- Нунчак + 3,3 В (с маркировкой +) - stm32 3,3 В
- Нунчаки SDA (обозначены D) - stm32 B7
- Нунчаки SCL (обозначены C) - stm32 B6
- Резистор 10 кОм между Nunchuck SDA и 3,3 В на плате stm32
- Резистор 10 кОм между Nunchuck SCL и 3,3 В на плате stm32.
Шаг 5: установите Sketch
Загрузите мой эскиз USB-адаптера Gamecube и загрузите его в Arduino IDE. В gamecubecontroller.h есть несколько параметров для управления:
- remove // перед #define ENABLE_EXERCISE_MACHINE (это нужно делать всем)
- если вам нужно было переместить соединение тренажера на A9, измените PA7 на PA9 в строке const uint32_t RotationDetector = PA7
- если пульс обнаружения вращения вашего тренажера высокий, измените #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING на #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
- если вы не хотите использовать нунчаки, введите // перед #define ENABLE_NUNCHUCK
- если вы не хотите использовать контроллер Gamecube, введите // перед #define ENABLE_GAMECUBE.
В среде Arduino IDE выберите Инструменты | Доска | Универсальная серия 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 секунд, вы можете начать использовать плечевые кнопки для управления эмулированными ползунками джойстика. С нунчаком, удерживая кнопку режима минус, вы можете использовать джойстик вверх / вниз для управления эмулируемыми ползунками.
Если вам нужен графический интерфейс для переключения режимов эмуляции, в Windows эскиз включает mode.py, скрипт Python с графическим интерфейсом для переключения режимов. Вы также можете вызвать mode.py в пакетном файле, который запускает игру.
Две игры, которые, как мне кажется, отлично работают с тренажером, - это Toybox Turbos и SuperTuxCart (бесплатно).
Адаптер также включает в себя множество других функций эмуляции. Например, вы можете использовать его как простой адаптер Nunchuck или Gamecube Controller, эмулирующий джойстик, клавиатуру (например, стрелки / WASD) и / или мышь. В gamecubecontroller.h перечислено множество режимов. Вы также можете подключить панель, совместимую с Dance Dance Revolution и Gamecube / Wii, и использовать ее, чтобы играть в игры, не предназначенные для этого, например, в тетрис, для дополнительного развлечения и упражнений.
Рекомендуемые:
(ОБНОВЛЕНИЕ - ЕСТЬ НЕБОЛЬШАЯ ПРОБЛЕМА) USB-КОНТРОЛЛЕР ИГРЫ ДЛЯ ПК: 10 шагов (с изображениями)
(ОБНОВЛЕНИЕ - ЕСТЬ НЕБОЛЬШАЯ ПРОБЛЕМА) USB-КОНТРОЛЛЕР ИГРЫ ДЛЯ ПК: ИГРОВОЙ КОНТРОЛЛЕР ДЛЯ ЛЮБОЙ ИГРЫ (ПОЧТИ)
Сделайте ленточный контроллер: 11 шагов (с изображениями)
Создайте ленточный контроллер: ленточные контроллеры - отличный способ управлять синтезатором. Они состоят из сенсорной полоски, которая позволяет непрерывно контролировать высоту звука. Электропроводящая полоса, называемая «велостат», которая реагирует на изменения напряжения или сопротивления, вызванные
YABC - еще один контроллер Blynk - контроллер температуры и влажности облака IoT, ESP8266: 4 шага
YABC - Еще один контроллер Blynk - Контроллер температуры и влажности облака IoT, ESP8266: Привет, производители, недавно я начал выращивать грибы дома, вешенки, но у меня уже есть 3x таких контроллера дома для контроля температуры ферментера для моего домашнего пива, жена также сейчас занимается этим чайным грибом, и в качестве термостата для тепла
USB-контроллер низких, высоких частот и громкости со светодиодами клавиатуры: 6 шагов (с изображениями)
USB-контроллер низких и высоких частот и громкости со светодиодами на клавиатуре: у меня есть Creative SoundBlaster Audigy в моем основном настольном компьютере, и мне нужен был способ быстро настроить параметры низких и высоких частот (а также громкость) при прослушивании аудио- или видеоматериалов. . Я адаптировал код из двух источников, приведенных в
Контроллер USB NES с Arduino!: 6 шагов (с изображениями)
Контроллер USB NES с Arduino !: ОБНОВЛЕНИЕ 22-12-2014 Пользователь Instructables mattpbooth обновил код и разместил его на github: https: //github.com/mattpbooth/ArduinoNESController… Спасибо, Мэтт! ОБНОВЛЕНИЕ 03-12-2011 Заменено a println с print (derp). ОБНОВЛЕНИЕ 01-12-2011 Переделать весь код f