Игровой руль на Arduino с напечатанной механикой

hockey
Идет загрузка
Загрузка
06.03.2018
40817
65
Применение

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

31
Здравствуйте коллеги!

Данная история взяла свое начало с прочтения статьи 'Классный игровой руль за копейки' http://3dtoday.ru/blogs/mell2010/a-cool-gaming-steering-wheel-for-peanuts/ нашего коллеги MELL2000. Имея такой же, руль загорелся я идеей тоже его переделать. Списался с MELL2000 и оказалось что модели утрачены в виду гибели жесткого диска. Ну думаю, ладно, смоделирую сам, хотя стоп, а может сделать полностью с нуля?

По принятию решения сделать руль собственной конструкции встали два основных вопроса:

- изготовление механики

- электронная составляющая

Методом научного гугления достаточно быстро нашел простую схему изготовления механической части, которая при наличии 3D-принтера упрощается до предела. А вот мозги для проекта с ходу найти не удалось. Изначально я понимал, что надо искать проект на Arduino, а точнее даже на Arduino Leonardo так как она определяется как HID устройство (вроде клавиатуры или мыши), пришлось прочитать несколько десятков страниц разных форумов пока я не нашел то что нужно. Проект MMJoy Виталия “mega_mozg” Найденцева. Это бесплатное ПО для не коммерческого использования. https://sites.google.com/site/mmjoyproject/ работает как раз на чипах компании ATMEL at90usb646, at90usb1286, atmega32u4 (в развязке 5 вольт питания и 16 МГц кварц) к которым как раз и относятся Arduino Leonardo и pro-micro. Поддерживается до 8 осей и до 128 кнопок. Не буду углубляться в возможности прошивки MMJoy, кому интересно тот сам все прочитает, скажу лишь что поддерживается куча всякой всячины. Единственный минус проекта – это скудная информация на его страничке. Вся информация раскрыта на страницах форумов и там мне пришлось провести не мало времени, прежде чем найти требуемые мне схемы подключения.

Прошу прощения за длинную преамбулу, далее постараюсь более кратко и по делу.

Что было приобретено:

- плата Arduino pro-micro 350 руб.

https://ru.aliexpress.com/item/ATmega32U4-5-16-ATmega328-Arduino-Pro-Mini-2/32834015299.html?spm=a2g0s.9042311.0.0.e1AuBP
Игровой руль на Arduino с напечатанной механикой
- Датчик Холла 5в 1150 руб. Вместо него можно использовать потенциометр на 10 кОм, но у него ограниченный срок службы и малая точность позиционирования. Или можно купить датчик Холла без корпуса и магнит, но я решил не заморачиваться и сделать максимально быстро пока есть запал.

https://ru.aliexpress.com/item/Full-Circle-No-Dead-Angle-12-Bit-Holzer-Angle-Sensor-0-360-Degree-0-5V-Output/32422949989.html?spm=a2g0s.9042311.0.0.e1AuBP
Игровой руль на Arduino с напечатанной механикой
- Б/У «спортивный» руль от Жигулей на Avito за 400 руб.

- Шпилька М12 х 1000, плюс куча болтиков, гаечек и шайб в общей сложности на 150-200 руб.

- 2 Подшипника с внутренним диаметром 12мм по 50 руб. за штуку

- 2 подшипника 626z 6 мм x 19 мм x 6 мм, были в загашнике, а так стоят рублей по 10.

- Б/У левый подрулевой переключатель от приоры на Avito за 200 руб.

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

Распечатанные детали:

- ступица крепления руля на шпильке. Дырка под гайку со стороны руля, смоделирована чуть меньшего размера и гайка вплавляется в нее намертво, чтобы было удобно накручивать руль вместе с прикрученной ступицей.
Игровой руль на Arduino с напечатанной механикой
- Крепление подшипника из 2 частей. Распечатаны с небольшим запасом, подшипники посажены на сантехнический герметик.
Игровой руль на Arduino с напечатанной механикой
- Пара шестерен смоделированы с помощью http://geargenerator.com и экспортированы в SVG формат. Передаточное число выбрано 2,5 к 1, то есть на 2,5 оборота руля будет совершаться один оборот датчика (из-за ограничителя получается чуть меньше 2,5). Вкладыш в ведомую шестерню для крепления ограничительного болта. Изначально я рассматривал другой вариант реализации ограничителя поворота, поэтому ограничитель печатался отдельно.
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
- Крепление вала ведомой шестерни и датчика Холла.
Игровой руль на Arduino с напечатанной механикой
- Крепление подрулевого переключателя. Предварительно с корпуса переключателя были удалены защелки крепления ибо нам они не нужны.
Игровой руль на Arduino с напечатанной механикой
- Бампер для крепления pro-micro взят отсюда https://www.thingiverse.com/thing:1628980 -Муфта соединения оси ведомой шестерни и датчика.
Игровой руль на Arduino с напечатанной механикой
Крепление pro-micro и соединительная муфта напечатано из черного ABS от FD-plast, все остальные детали печатались белым PET-G от АБС Мейкер. Все детали распечатаны соплом 0,4 слоем от 0,1 (шестерни) до 0,3 (крепления подшипников) со 100% заполнением на скорости 65мм/сек, слайсер Simplify 3D.

Что получилось
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
Игровой руль на Arduino с напечатанной механикой
К столу вся конструкция крепится обычными струбцинами через распечатанные подкладки.

Сборка механической части.

Во время изготовления фотографий я не делал, но тут в общем-то все открыто, все и так видно.

1. В качестве основы я взял обрезок 18мм мебельного щита размерами 11х22 см. Посередине него закрепил 2 крепления для подшипников.

2. Собрал и установил рулевую ось с ведущей шестерней на место.

3. Собрал приемную шестерню и датчик Холла на креплении, установил ограничители поворота. Ось крепления ведомой шестерни вращается на подшипниках и соединена с валом датчика муфтой.

4. Плотно прижал крепление приемной шестерни к шестерне рулевого вала, разметил отверстия, просверлил и закрепил.

5. Выставил ведомою шестерню в ноль (ограничитель поворота вверх) и прикрутил руль также выставив его ровно.



Сборка электронной части.


На данной схеме (взято с сайта MMJoy) показано какие ноги для каких целей могут использоваться.
Игровой руль на Arduino с напечатанной механикой
Датчик Холла подключается к 5в питания, земле и к любому из контактов обозначенных как AI (Axis Internal). В данном случае это вывод F4
Игровой руль на Arduino с напечатанной механикой
Кнопки подключаются матрицей через диоды. Для примера рассмотрим подключение 8 кнопок в двух вариантах для наглядности. В первом варианте 8 кнопок подключаем в 8 столбцов и 1 строку.
Игровой руль на Arduino с напечатанной механикой
Для подключения 8 кнопок мы использовали 9 контактов

Во втором варианте мы подключим те же 8 кнопок, но уже в 4 столбца и 2 строки.
Игровой руль на Arduino с напечатанной механикой
Здесь для подключения 8 кнопок мы использовали не 9, а всего 6 контактов.

Если подключить 4 оси для подключения руля и трех педалей, то у нас останется 14 контактов для подключения кнопочной матрицы, а это ТА-ДАМ 7х7 целых 49 кнопок. Но пока в моем проекте только руль и подрулевой переключатель с четырьмя «кнопками», поэтому подключаю его в 4 столбца и 1 строку.

Не буду останавливаться на прошивке pro-micro поскольку подробная инструкция есть на сайте проекта, а вот на настройке подключенных кнопок и датчика остановлюсь подробнее.

Настройка MMjoy

Запускаем MMJoySetup. В списке контроллеров выбираем MMJoy и считываем настройки из контроллера. Выбираем настройку осей. В качестве источника выбираем внутренний датчик, порт МК в моем случае будет F4 (см. по схеме подключения и маркировке MMJoy), так как это руль выбираем в качестве назначения ось X. Точность в битах выбираем эмпирически исходя из чувствительности датчика, в моем случае более 12 бит выставлять оказалось бессмысленно. Автокалибровку поставил сохранять с центром. Остальное не трогал.
Игровой руль на Arduino с напечатанной механикой
Далее идем на вкладку «настройка кнопок». Первым делом выбираем контакты к которым мы подключали нашу матрицу. Назначаем нашим кнопкам функции, которые они будут исполнять в нашем устройстве. Назначаем кнопки как, вы не поверите, КНОПКИ =) 1 и 2 - это поворотники, 4 у меня – это дальний (от себя), назначаем их как тумблеры. То есть при переключении тумблера в состояние ВКЛ, контроллер пошлет в компьютер кратковременное нажатие кнопки и аналогично при переключении в ВЫКЛ. Кнопка 3 у меня – это нажатие переключателя на себя, то есть «моргание» дальним, это обычная кнопка. В игре повесил на нее сигнал. После этих настроек жмем «Записать в контроллер».
Игровой руль на Arduino с напечатанной механикой
После этого переходим к настройке джойстика через Панель управления WINDOWS, калибруем как обычный джойстик и запускаем игру.

C этим рулем я уже намотал не один десяток тысяч виртуальных километров в Euro Truck Simulator 2, руль работает на отлично. Педали пока от старого руля, скоро их тоже переключу на MMjoy.

Если хватит душевного порыва хотелось бы все это дело окультурить и еще реализовать педальный блок на 3 педали и КПП 8+1 с переключателем демультипликатора и прочие плюшки, но а пока наслаждаюсь тем что уже есть.

Если кому-то будет интересно, модели выложу или скину на почту.

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

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

31
Комментарии к статье