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

Подписаться на 3Dtoday
hockey
Идет загрузка
Загрузка
06.03.18
8366
38
печатает на Flyingbear P902
Применение
25
Здравствуйте коллеги!
Данная история взяла свое начало с прочтения статьи "Классный игровой руль за копейки" 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
ec7fca630dd02112c5bc87b668590586.jpg
- Датчик Холла 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
bde2d70ee4b882dbe16d2cdee1bec1cb.jpg
- Б/У «спортивный» руль от Жигулей на Avito за 400 руб.
- Шпилька М12 х 1000, плюс куча болтиков, гаечек и шайб в общей сложности на 150-200 руб.
- 2 Подшипника с внутренним диаметром 12мм по 50 руб. за штуку
- 2 подшипника 626z 6 мм x 19 мм x 6 мм, были в загашнике, а так стоят рублей по 10.
- Б/У левый подрулевой переключатель от приоры на Avito за 200 руб.

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

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

Что получилось
b884b530ff2db779f67f2324adb4fc4e.jpg
56176853238afdc832054d87bcef216f.jpg
PREVIEW
ac4ec19abba234b074b7756ba179431c.jpg
50c077e17c62a949ee20d1010433e681.jpg
25e36e13e5bf770f398c93b9d2800dc0.jpg
К столу вся конструкция крепится обычными струбцинами через распечатанные подкладки.

Сборка механической части.
Во время изготовления фотографий я не делал, но тут в общем-то все открыто, все и так видно.
1. В качестве основы я взял обрезок 18мм мебельного щита размерами 11х22 см. Посередине него закрепил 2 крепления для подшипников.
2. Собрал и установил рулевую ось с ведущей шестерней на место.
3. Собрал приемную шестерню и датчик Холла на креплении, установил ограничители поворота. Ось крепления ведомой шестерни вращается на подшипниках и соединена с валом датчика муфтой.
4. Плотно прижал крепление приемной шестерни к шестерне рулевого вала, разметил отверстия, просверлил и закрепил.
5. Выставил ведомою шестерню в ноль (ограничитель поворота вверх) и прикрутил руль также выставив его ровно.

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

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

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

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

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

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

Комментарии

06.03.18 в 11:47
1
Класс... !
06.03.18 в 13:10
0
спасибо!
06.03.18 в 12:38
1
Бомба. А вибро чего не приделали?
06.03.18 в 12:43
1
к сожалению MMJoy не поддерживает вибру, хотел бы конечно, но увы. Пока намерен двигаться в сторону увеличения количества органов управления, потом возможно автор прошивки прикрутит обратную связь или что-то другое найду.
06.03.18 в 12:43
2
Ну для ETS2 кнопок мало не бывает... :D
P.S. Сам в ETS2 уже приличную компанию развил... но катаюсь с "клавы", поскольку руль сын "прихватизировал" когда-то для TDU2... да и руль тот мне не очень понравился.. всего 200° (или чуть более) всего от конца до конца (хотя и три педали)... А с таким рулём как у вас - уже ощущения нормальные от поворотов.
06.03.18 в 13:09
1
Доп кнопок обязательно надо сделать. Хочу такого плана https://evolpcgaming.com/uploads/monthly_2017_09/59bb310069c56_HHBoxLabel.png.d2b1d710635cffa20520b9e998581a3e.png
По углу поворота руля после помоечного defender на 180 градусов, 900 - это просто фантастика.
06.03.18 в 13:26
1
Ну это, конечно, для совсем уж сильно "фанатеющих" :) ... хотя народ, видел, чуть ли не полкабины реальной "городит"... и настоящий рычаг КПП с кнопками демультипликаторов от настоящих откуда-то достают даже... :)
06.03.18 в 14:02
0
вдохновение черпалось именно с этих фанатов, но такие вещи быстро не делаются. Как уже писал, если не пропадет желание все это потихоньку сделаю. Для buttonbox уже прикупил несколько тумблеров, но пока руки не доходят начать.
06.03.18 в 15:54
2
Проект MMjoy появился лет 15 назад и осчастливил огромную толпу авиасимуляторщиков. Сильно расширял возможности при постройке самодельных джойстиков. Очень жаль, что тогда не была доступна 3D печать.
07.03.18 в 17:15
1
Шикарно! Лепесток поворота шикарный!
Мне кажется можно было бы добавить ограничители на поворот руля, чтобы не сломать потенциометр.
39000aebe7454bea70a6d6394e08feed.png

Желтым - упор на креплении, черным зуб на шестерне.

При повороте в крайнее левое или правое положение чтобы упор с шестерни упирался в упор на креплении.
И удобнее наверное было бы, чтобы руль был под наклоном как в машине. Распечатать и прикрутить ножки впереди конструкции, чтобы переднюю часть поднять =).

Обязательно буду следить за развитием проекта =)

P.S.
Детали из статьи статьи про модернизацию руля смоделировал по новой и выложил тут
08.03.18 в 11:27
1
Дмитрий, так есть ограничитель-то. Под шестерней в креплении 2 дырки и в них засунут гвоздь, а на ведомой шестерне вкладка с винтом. Единственное, на расчитал и винт при повороте упирался в гайку, которая держит шестерню на валу, пришлось сдвинуть шестерню немного, надо распечатать полый цилиндр и поставить между шестерней и гайкой. Датчик Холла даже без упоров, так как он свободного вращения, у него нем конечных точек.
f446811880fa1ce5469aff5239758b72.jpg

Под наклоном тоже буду делать. Еще хочу за рулем сделать крепление для телефона и использовать в качестве панели приборов через сервер телеметрии для ETS2. Он устанавливается на компьютер с игрой и открывается через браузер на любом устройстве в твоей сети. Пока отображаю на второй монитор.
4b4da6df6722150ed3d7ed5715bdb787.jpg
09.03.18 в 00:52
0
Панель делал Вова В на Ютубе
https://www.youtube.com/watch?v=uR6tcqwX42I
Но со смартфона проще всего будет панель организовать.
Еще хотел бы посоветовать vrbox подключить(смартфон+очки наподобии Google cardboard) или хотя бы freetrack или аналог Opentrack. Это программы для управления обзором с помощью поворота головы и вебкамеры. Она не только поворот головы фиксирует по сторонам, но еще и приближение от монитора и перемещение влево вправо
09.03.18 в 22:20
0
все бы хорошо, но меня от vr тошнит =(
10.03.18 в 21:21
1
Пружина для возврата в центр будет?
10.03.18 в 21:34
0
Еще не решил, вроде бы и так нормально. Если буду делать, то не пружину а резинку как для крепления грузов. Закрепить справа и слева и пропустить через одетый на ось эксцентрик.
23.05.18 в 17:37
0
Круто сделано. Только как с шестернями не понял.
Можете шестерни скинуть?
14.08.18 в 20:04
0
здравствуйте, купил с китая резистор на 10 ком 10 оборотов какие настройки для его?
15.08.18 в 09:59
0
по сути датчик Холла и есть переменный резистор на 10кОм просто его сопротивление меняется не от физического перемещения бегунка а от изменения напряженности магнитного поля. Для arduino же это не имеет значения, она просто считывает текущее напряжение на входе. Так что настройки будут такие же как у меня.
26.11.18 в 13:01
0
Я купил такие же резисторы, но у меня не хочет работать с ними. В самом конце только доли миллиметра считывает. Думал проблема в резисторах, но нет, пробовал разные, все тоже самое. Подключил модуль джостика - работает, а резистор нет. Была у вас такая проблема?
26.11.18 в 13:06
0
Нет у меня все сразу завелось без танцев с бубном. А резистор проверяли? Измерьте его и модуль джойстика, цифры одинаковые получаются?
26.11.18 в 14:06
0
К сожалению, нет возможности проверить сейчас. Но пробовал 3 разные резисторы (один проволочный а два других с угольной дорожкой) и на всех троих такая ситуация.
27.11.18 в 17:23
1
Решил еще экспериментировать на свой страх и риск, и нашел проблему (видимо, из-за отсутствия опыта пайки было плохое соединение из-за чего этот вариант не работал). Прилагаю изображение где позначил как подключать такие как у меня, может кому-то пригодится.
0e6dd1e97f62999a4b5644b1fa7be4b1.png
15.08.18 в 11:29
0
Если бы можно это доделать до WoT-а...

Мечты...
Мечты...

bc6a0e514b04978e14f8197be02e2022.jpg


ee03ee1ce8e70c70606bdb6da1180ff8.jpg
15.08.18 в 11:54
0
а почему собственно нет? не кабину танка конечно, а органы управления вполне себе можно сделать.
11.09.18 в 07:03
2
У меня возник такой вопрос, я подключил через диод одну кнопку, в программе она нажимается, а вот в калибровке ничего не происходит? В чем может быть проблема?
11.09.18 в 08:47
1
Наверное в окне настройки кнопок не указали назначение кнопок. Что физическая кнопка будет назначена как "Кнопка 1" джойстика. Настроить как у меня кнопка 3.
5f80f1665ea7eee5f5037c8ea785c2ee.jpg
16.09.18 в 07:52
2
Доброго времени суток. Появилась небольшая проблемка. Спаял матрицу 7х7, мультиметром проверил- замыканий нет, но в программме вот что.(см.видео) и в диспетере джойстков винды не все кнопки. Всего 32. Подскажете дальнейшие действия? https://youtu.be/s6E7u3vDL1o
16.09.18 в 17:25
1
Здравствуйте!
1) в MMJOY видно все кнопки?
2) В MMJOY как я понял тоже при нажатии на некоторые кнопки загорается по 3 штуки? Если да надо искать ошибку в схеме или настройке. Может попробовать подключить часть матрицы поменьше?
3) Насчет отображения скорее всего проблема в плоскости драйвера устройства.
Вы продвинулись дальше чем я, сложно советовать что-то =)
29.10.18 в 16:04
0
Здравствуйте! Можете пожалуйста скинуть 3д модели всех печатный деталей
29.10.18 в 20:59
0
Отправил на почту.
07.11.18 в 07:10
0
Доброго дня! Не подскажите как можно связаться с Виталием “mega_mozg”? На странице проекта я не могу залогинится и соответсвенно не могу прочесть страницу с часто задаваемыми вопросами. К сожалению ISQ и Skype я не пользуюсь
07.11.18 в 21:11
0
Я с ним общался по скайпу
16.11.18 в 09:22
0
здравствуйте. диоды на кнопку на сколько ватт ампер?
16.11.18 в 09:37
0
читайте технические характеристики arduino pro-micro
Постоянный ток через входные/выходные выводы40 мА
Напряжение питания5 В
19.11.18 в 00:16
0
Скажите, пожалуйста, питание от USB или дополнительное подводили? На сколько я помню, в USB нет 5В (не считая usb 3.0) (с Arduino не работал раньше, потому извините если вопрос глупый)
19.11.18 в 11:17
0
В USB 2.0 напряжение также 5 В, дополнительного питания не нужно.
25.11.18 в 03:31
0
Здравствуйте. Можете скинуть 3d модели всех печатаемых деталей?
01.12.18 в 21:12
0
Если вам нужны файлы с деталями, пишите ваш адрес мне в личку, я все вышлю.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

MKS Robin. Часть вторая - укрощение строптивой прошивки.

Panda 3D предлагает фотополимерные 3D-принтеры Paladin стоимостью от $299

3D-технологии для литейного производства: как создать форму для отливки за неделю

Истории участников 3Dtoday Fest: Илья и Анастасия Никоновы

3D-печать помогает восстанавливать популяцию белых журавлей

3Dtoday приглашает на первый в России фестиваль 3D-печати!