Начал собирать джойстик. И куда меня это завело

Делюсь своим опытом сборки. Сразу скажу - проект доступен новичку, т.к. и я паяльник взял в руки незадолго до...

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Вступление

Мой хороший знакомый Саня (Лосяра) поделился ссылкой на джой, проект показался интересным, да и к тому же очень не хватало РУДа для симуляторов. (играю в DCS, Ил-2 Штурмовик, War Thunder).
В основу лег вот такой проект от товарища MagniBY https://www.thingiverse.com/thing:4935709 , который в свою очередь, брал наработки пользоватей @busel и @propeler с форума "Ил-2: Штурмовик".
Отличие моей версии - буду использовать платы сдвиговых регистров.

4 оси, 2 крутилки потенциометров, 5 тумблеров, 1 джойстик (как на джойстиках от плойки/Xbox), 3 хатки (5ти позиционные кнопки), 5 кнопок.

Прошивка для платы - Freejoy

Комплектующие и цены

Общая стоимость проекта - 11 тыс. руб.
* Из них комплектующие - 4200 руб. 3д печать - 7000 руб. Заказывал у этих товарищей - https://3ddworld.ru/ Кажется, можно было найти дешевле. Если есть свой принтер, то на пластик ушло бы тысячи 2-3.

Многие лоты на Али составляли бОльшее количество деталей, нежели мне было нужно + стоимость доставки уже включена в цену.
Итак, комплектующие и инструменты:

Болты, шурупы и пр.:

  • M4 болт 20mm - 26 шт

  • M4 гайка - 32 шт

  • M3 болт 10mm - 36 шт

  • M3 болт 20mm - 8 шт

  • M3 гайка - 8 шт

  • M2 болт- 8 шт

  • M1.7 болт - 4 шт

Процесс сборки

1. Прошивка.
Первое что я сделал - подключил программатор и прошил плату. Это делается один раз. В дальнейшем при изменении конфигурации пинов - просто подлючаем по USB плату и меняем в программе что нам нужно, программатор ST-link больше не потребуется.
Ниже детали, как накатить прошивку:

Скачиваем утилиту https://www.st.com/en/development-tools/stsw-link004.html и прошивку FreeJoy (ссылка на последние релизы)

Подключаем программатор ST-Link v2 как показано на рисунке ниже (сверяйтесь с подписями контактов на программаторе и плате контроллера):

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

фотка с github freejoy

Далее Подключаем программатор ST-Link v2 к компьютеру;

Запускаем программу ST-Link;

Нажмите в программе "File->Open File" и выберите файл с расширением .hex который расположен в архиве релиза FreeJoy;

Теперь вы увидите страницу загрузки бинарных кодов:

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Нажмите "Target->Connect". После подключения устройства вы можете видеть такую информацию как ID устройства, размер флэш-памяти и семейство устройства в блоке сверху и просмотреть содержимое внутренней памяти в основном блоке:

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

На этом этапе может оказаться, что выдается такое сообщение: "STM32 cannot read memory. Disable read out protection and retry". Для того, что бы продолжить прошивку, необходимо нажать: пункты меню "Target", "Option Bytes" в окошке "Read Out Protection" (в левом верхнем углу) заменить "Enabled" на "Disabled" и нажать "Apply".

Нажмите "Targert->Erase chip" и "OK" в открывшемся окне;

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Теперь нажмите "Target->Program & Verify" и в открывшемся окне нажмите "Start". Начнется программирование контроллера:

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

После успешного программирования контроллера отключите все соединения и подключите плату контроллера к компьютеру посреством MicroUSB кабеля.

FreeJoy устройство определится в системе как игровой контроллер.


2. Пайка осей
Начал я сразу с пайки осей - в джойстике для меня это была самая главная функция.

Для проверки что у нас уже всё будет работать - спаял по схеме первый датчик.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

схема пайки датчика Хола и назначения контакта на плате STM32

Схема поключения датчиков Хола.

Между левой и центральной ножками (если смотреть на датчик "спереди") напаиваем конденсатор.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

собираем датчики хола, тут же примеряем как они ложатся в паз (черная деталь на фото)

Паяем датчики Хола, сразу примеряем как они ложатся в паз (черная деталь на фото)

Правую ножку паяем на контакт А7, а в программе FreeJoy Configurator назначаем пину А7 значение Axis_Analog.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

на фотке - уже промеченные мной контакты платы. А7-А0 под оси и крутилки, остальное идет под кнопки (сдвиг регистры)

Далее в программе на вкладке Axes Config в выпадающем списке выбираем нашу ось и пин А7. И записываем в плату (подключаем по USB и жмем Write Config to device).

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

После чего не отключая от ПК плату можем протестировать - поднести магнит к дачику на 0.5-0.7 мм и покрутить - в программе увидим что значение оси изменяется.

Мы великолепны - теперь отключаем плату от ПК и напаиваем остальные 3 датчика Хола аналогичным способом (правые ножки паяем на пины А6-А4, центральные на питание 3.3V, левые - на GND), прописываем в программе FreeJoy значения пинов, не забывая записывать наши изменения (Write config to Device).
Готово, укладываем дачики холла в джойстик. Собираем ручки осей (подшипники вставляем в пазы напечатанных деталей, наклеиваем фетр, собираем ручки).

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

ручка газа в сборе

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

фетр для "загрузки" осей, держится хорошо,+ прижимной скобой можно регулировать податливость ручки газа

Прижимаем фетр скобкой и закручиваем

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

запасайтесь цветными проводами! иначе придется клеить бумажки и нумеровать - что не так удобно (совсем не удобно)

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

3. Пайка кнопок, тумблеров, джойстика

Здесь мы имеем дело с а) платой сдвиговых регистров б) 5ти позиционными кнопками, (6 лапок) в) джойстиком. г) кнопками (4 лапки)

Первым делом разберемся и спаяем тестовый вариант, проверим что всё работает.
Берем сдвиговый регистр и припаиваем его к плате.
Сдвиговый регистр паяем так: вставляем коннектор с проводами с той стороны, где подписано DATA OUT (смотри на плату сверху). На моем фото это ряд контактов наверху.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

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

GND припаиваем к плате STM32 на землю GND.

VCC припаиваем на 3.3V.

CS припаиваем на контакт B11 на плате STM32.

DATA припаиваем на B1.

SCK припаиваем на B10.

Теперь берем коннектор, вставляем в плату сдвигового регистра - отсюда у нас выходят 5-6 проводов. Крайние провода - земля, центральные - это питание.

Начинаем паять кнопку - нам нужно припаяться к земле и к одному из проводов в центре, паяем наискосок (замыкание идет в центре, поэтому упрощаем себе задачу):

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Готово - подключим плату STM32 по USB к ПК, в программе FreeJoy назначим контактам

B11 - ShiftReg Latch,

B1 - ShiftReg Data,

B10 - ShiftReg CLK

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

накидал себе в экселе распиновку на плате STM32 и сдвиговых регистрах, чтобы не запутаться

Соответсвие контактов на регистре пинам на плате STM32 и назначениям в программе Freejoy

На вкладке Shift Registers выбираем тип регистра CD4021 Pull Up, прописываем количество кнопок = 24 (на фото я уже припаял 2ю плату регистров)

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Записываем на устройство, открываем вкладку Button Config и проверяем что наша кнопка работает при нажатии.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Кнопки в итоге спаиваем по схеме - Крайние провода это земля, их можно припаивать цепочкой, второй контакт паяем на провода посередине коннектора, не соединя между собой:

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

5ти позиционные кнопки паяем аналогично, только контактов понадобится больше. 1я ножка - это земля (идет к крайним проводам коннектора), остальные ножки паяем к центральным проводам коннекторов сдвигового регистра. Замыкание цепи происходит внутри между 1м контактом и N-ным.

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Один коннектор дает возможность припаять до 4 проводов питания кнопок. Можно припаивать одну кнопку к разным коннекторам (т.е. земля от одного коннектора, а провод питания идет от другого коннектора).

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост
Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

уместить всё в ручку оказалось еще той задачей. Хорошо, что использовал сдвиговые регистры, иначе с матрицей кнопок намучился бы..

Далее я паял джойстика, тумблеры и крутилки (потенциометры).
Дальнейший процесс опишу в ближайшее время + надо схему всего этого чуда накидать.

Итоговый результат

Начал собирать джойстик. И куда меня это завело Joystick, Руд, Своими руками, Dcs, Авиасимулятор, Кокпит, 3D печать, Видео, YouTube, Длиннопост

Видео, где показываю работоспособность девайса

Спасибо за внимание. Надеюсь, статья пригодится и поможет.

Лига 3D-принтеров

2.8K постов12.5K подписчиков

Правила сообщества

Запрещено хамство и оскорбления, уважайте чужой опыт и труд