Симулятор сноуборда своими руками

Приветствую, Самоделкины!
Из этой статьи вы узнаете, как прокатиться на сноуборде дома, что собственно, для этого понадобится и как сделать этот процесс максимально интерактивным.

Дальнейшая инструкция взята с YouTube канала «AlexGyver».
Основная идея этого проекта пришла к автору во время рядовой закупки всяких железок на китайской торговой площадке Аliexpress. Буквально случайно среди множества электронных компонентов на глаза попался вот такой комплект, состоящий из четырех датчиков веса, который ко всему прочему стоил всего сотку.

Обычные привычные датчики из бруска металла продаются в количестве одной штуки за такую же цену.

Когда автор увидел 4 датчика рядом, то сразу представил платформу, которая на них опирается.

Измеряя сигналы с каждого датчика, при помощи школьной математики можно определить положение груза, который лежит на платформе. Еще можно определить направление момента силы, создаваемого перемещением центра тяжести груза, закрепленного на этой самой платформе. Проще говоря, если закрепить человека на такой платформе, то можно будет определить направление, в котором он наклоняется. Думаю, вы уже поняли, что мы будем делать игровой контроллер для компьютера в виде сноуборда. То есть получим прямо-таки аркадный симулятор горнолыжного отдыха.

Для повторения данного проекта понадобятся:
1. Сноуборд с креплениями и ботинками;
2. Показанные ранее 4 датчика веса;
3. Мощный вентилятор, для создания эффекта;
4. Аrduino Pro micro, которая позволит подключить датчики компьютеру и имитировать геймпад;
5. Модули на базе микросхемы HX711;
6. Несколько резисторов на 1кОм;
7. Винтики М6, чтобы в дальнейшем можно было собирать и разбирать всю конструкцию.

Подключается это все следующим образом:

Это собственно и есть схема сегодняшнего проекта. Ещё можно добавить кнопочку для калибровки веса. Вообще, один модуль способен обслуживать сразу 4 датчика веса, но в этом случае мы получим одно общее значение, то есть по сути получатся цифровые весы.

Взвеситься после праздников идея конечно хорошая, но нам не это сейчас надо. Нам нужно получить значение с каждого датчика индивидуально, поэтому схема будет вот такая:

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

Таким образом у нас получится платформа с большой площадью опоры. Сноуборд отлично зажался и дополнительных продольных креплений можно даже не городить. И так держит отлично, можно наклоняться во все стороны, что уже не плохо. Конечно ощущения от наклонов совсем не те, которые дает доска на скорости, но в качестве домашнего симулятора очень даже неплохо. Конструкция ведет себя как надо, видно, как загружается и разгружается правая и левая сторона при наклонах.

Теперь, что касается крепления датчиков веса. У них с обратной стороны есть выпирающие заклепки, поэтому на плоскость датчик крепить нельзя.

Поэтому, отступим условный сантиметр от края бруска, возьмем в руки стамеску и сделаем углубление — место для датчика.

Затем просто прижимаем датчик саморезами в трех точках.

Теперь касаемо электроники. Резисторы паяем прямо на модуль, все в точности как на схеме:

И можно подключать USB.

Теперь надо немножечко покодить. На изображениях ниже, можно видеть, как происходит опрос датчиков. Имеются 4 графика на каждый датчик и можно посмотреть, как все это дело работает.

Можно собирать установку и тестировать ее в деле.

Для визуализации сигналов с датчиков, автор решил написать простенькую программку на processing. Выбираем порт, жмем «подключить» и видим показания датчиков.

Все нагрузки отрабатываются правильно, можно работать дальше. Итак, у нас есть 4 сигнала с датчиков веса, но при управлении с джойстика используются всего 2 сигнала, то есть две оси вперед-назад и влево-вправо. Нам необходимо перевести данные с датчиков в позицию джойстика. Сперва может показаться, что здесь будет какая-нибудь геометрия/тригонометрия, но все оказалось очень сильно проще. Для определения горизонтального направления момента с верхних датчиков, достаточно вычесть показания правого датчика из левого. Для нижних датчиков делаем то же самое и получим две горизонтальные оси. Чтобы сделать из них одну, достаточно вычислить среднее арифметическое, то есть просто их сложить и поделить на два.

Для вертикальной оси делаем все то же самое и это все, никакой тригонометрии здесь не будет.
Все работает очень плавно, распознается замечательно.

Касаемо калибровки. У нас есть калибровочная кнопочка. Первый этап калибровки такой: встаем ровно на доску, центр тяжести по центру доски, и кликаем на кнопочку. Таким образом мы откалибровали центр.

Далее удерживаем кнопочку около секунды и у нас появляется 10 секунд на то, чтобы проверить все максимумы и минимумы, то есть мы совершаем наклоны по всем направлениям на такой угол, который должен быть в игре максимальным.

Все, 10 секунд прошло, калибровка закончилась, кнопочку можно вообще убрать, потому что все данные записались в память, и при последующих запусках все установится автоматически.

Небольшая заметка для тех, кто захочет повторить проект. Все исходники, инструкции, схемы и прочая информация, есть на странице проекта.

Также более подробно ознакомиться с проектом можно, посмотрев оригинальный видеоролик автора:

Все готово, теперь можно перейти к игре. Выбор пал на «Steep», потому что в ней есть вид от первого лица.

Игра установлена, симулятор сноуборда настроен и подключен к компьютеру, поехали!

В принципе, все управляется нормально. Теперь попробуем вид от первого лица. Не забываем поставить вентилятор.

Помимо направления, в игре также нужен прыжок, чтобы скакать с трамплинов. На геймпаде это правый триггер, который нужно зажать, чтобы присесть и отпустить, чтобы подпрыгнуть. Это уже третья ось — ось Z. Давайте добавим возможность прыгать и в наш самодельный контроллер.
Итак, что происходит во время прыжка? Игрок плавно приседает и фиксируется в нижней точке. Сигнал со всех датчиков резко идет вверх, показывая скачок нагрузки.

Во время отталкивания наблюдается следующая картина: сначала скачок нагрузки по всем датчикам, то есть это отталкивание ногами, а затем резкое падение, так как скорость уже набрана и буквально доска идет вверх следом за игроком, и нагрузка на датчиках уменьшается.

Но так как во время управления доской значения постоянно меняются, отследить такой прыжок будет непросто. Но обладая некими познаниями в математике, мы можем искать скорость изменения значения, то есть производную. Достаточно вычитать предыдущее значение с датчиков из текущих. Таким вот не хитрым образом получаем отличный стабильный график, прыжок на котором выглядит как одновременное изменение всех скоростей.

В свойствах контроллера это будет выглядеть следующим образом:

Прыжок засчитывается и вроде все шикарно работает, но в игре данная фишка к сожалению, не заработала. Так что с прыжками к сожалению напряг, и прыгать в симуляции не получится.
Благодарю за внимание. До новых встреч!

Источник (Source)

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Подборки: Arduino Спорт

Источник: usamodelkina.ru

Понравилась статья? Поделиться с друзьями:
KIA