Начал собирать джойстик. И куда меня это завело
Делюсь своим опытом сборки. Сразу скажу - проект доступен новичку, т.к. и я паяльник взял в руки незадолго до...
Вступление
Мой хороший знакомый Саня (Лосяра) поделился ссылкой на джой, проект показался интересным, да и к тому же очень не хватало РУДа для симуляторов. (играю в 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.
Многие лоты на Али составляли бОльшее количество деталей, нежели мне было нужно + стоимость доставки уже включена в цену.
Итак, комплектующие и инструменты:
Паяльник - 352 руб
Лист фетра 2 мм - 1 шт - 100 рублей
Самоклеящиеся кружки для мебели - 4 шт - 50 рублей
Arduino ky-023 joystick - 1 шт - 52 руб.
Датчики холла Hall-effect sensor (SS49E) - 4 шт - 74 руб
Ceramic capacitor 50V 104 100nF 0.1uf - 4 шт - 59 руб
Циллиндирческие магниты (5x10mm) - 4 шт - 306 руб.
5ти позиционные переключатели 5-Way Switch 10x10x10mm Multi Direction Switch Touch Reset Button - 3 шт- 169 руб.
Нажимные кнопки Push Button 6x6 4.3mm - 5 шт - 133 руб.
Тумблеры - Miniature toggle switch- on/of/on - 5 шт - 155 руб.
Подшипники 6900 (10x22x6mm)- 8 шт. - 400 руб.
Потенциометры (WH148) 10K Ohm (B10K) - 2 шт - 220 руб.
Колпачки для потенциометров - 2 шт - 80 руб
Кабель для подлкючения к ПК - Micro-USB 5pin Micro USB 2.0 Male to USB 2.0 B Type Female Connector Cable 30cm With Panel Mount Hole cables - 1 шт - 132 руб.
Провода (лучше тонкие) - 24-28 AWG - 366 руб.
Эпоксиный клей / клей момент - 1 шт
Плата STM32F103C8 microcontroller - 1 шт - 144 руб.
Программатор ST-Link v2 для заливки прошивки на плату STM32 - 1шт - 202 руб.
Плата сдвиговых регистров + провода с коннекторами. Заказывал у этого товарища с форрума Ил-2 (пишите в личку или в тред на форуме). - 2 шт - 1940 руб.
Болты, шурупы и пр.:
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 как показано на рисунке ниже (сверяйтесь с подписями контактов на программаторе и плате контроллера):
фотка с github freejoy
Далее Подключаем программатор ST-Link v2 к компьютеру;
Запускаем программу ST-Link;
Нажмите в программе "File->Open File" и выберите файл с расширением .hex который расположен в архиве релиза FreeJoy;
Теперь вы увидите страницу загрузки бинарных кодов:
Нажмите "Target->Connect". После подключения устройства вы можете видеть такую информацию как ID устройства, размер флэш-памяти и семейство устройства в блоке сверху и просмотреть содержимое внутренней памяти в основном блоке:
На этом этапе может оказаться, что выдается такое сообщение: "STM32 cannot read memory. Disable read out protection and retry". Для того, что бы продолжить прошивку, необходимо нажать: пункты меню "Target", "Option Bytes" в окошке "Read Out Protection" (в левом верхнем углу) заменить "Enabled" на "Disabled" и нажать "Apply".
Нажмите "Targert->Erase chip" и "OK" в открывшемся окне;
Теперь нажмите "Target->Program & Verify" и в открывшемся окне нажмите "Start". Начнется программирование контроллера:
После успешного программирования контроллера отключите все соединения и подключите плату контроллера к компьютеру посреством MicroUSB кабеля.
FreeJoy устройство определится в системе как игровой контроллер.
2. Пайка осей
Начал я сразу с пайки осей - в джойстике для меня это была самая главная функция.
Для проверки что у нас уже всё будет работать - спаял по схеме первый датчик.
схема пайки датчика Хола и назначения контакта на плате STM32
Схема поключения датчиков Хола.
Между левой и центральной ножками (если смотреть на датчик "спереди") напаиваем конденсатор.
собираем датчики хола, тут же примеряем как они ложатся в паз (черная деталь на фото)
Паяем датчики Хола, сразу примеряем как они ложатся в паз (черная деталь на фото)
Правую ножку паяем на контакт А7, а в программе FreeJoy Configurator назначаем пину А7 значение Axis_Analog.
на фотке - уже промеченные мной контакты платы. А7-А0 под оси и крутилки, остальное идет под кнопки (сдвиг регистры)
Далее в программе на вкладке Axes Config в выпадающем списке выбираем нашу ось и пин А7. И записываем в плату (подключаем по USB и жмем Write Config to device).
После чего не отключая от ПК плату можем протестировать - поднести магнит к дачику на 0.5-0.7 мм и покрутить - в программе увидим что значение оси изменяется.
Мы великолепны - теперь отключаем плату от ПК и напаиваем остальные 3 датчика Хола аналогичным способом (правые ножки паяем на пины А6-А4, центральные на питание 3.3V, левые - на GND), прописываем в программе FreeJoy значения пинов, не забывая записывать наши изменения (Write config to Device).
Готово, укладываем дачики холла в джойстик. Собираем ручки осей (подшипники вставляем в пазы напечатанных деталей, наклеиваем фетр, собираем ручки).
ручка газа в сборе
фетр для "загрузки" осей, держится хорошо,+ прижимной скобой можно регулировать податливость ручки газа
Прижимаем фетр скобкой и закручиваем
запасайтесь цветными проводами! иначе придется клеить бумажки и нумеровать - что не так удобно (совсем не удобно)
И готовим ручку к прокладке проводов. В идале брать бразноцветные, у меня были черные - поэтому пронумировал их бумажками
3. Пайка кнопок, тумблеров, джойстика
Здесь мы имеем дело с а) платой сдвиговых регистров б) 5ти позиционными кнопками, (6 лапок) в) джойстиком. г) кнопками (4 лапки)
Первым делом разберемся и спаяем тестовый вариант, проверим что всё работает.
Берем сдвиговый регистр и припаиваем его к плате.
Сдвиговый регистр паяем так: вставляем коннектор с проводами с той стороны, где подписано DATA OUT (смотри на плату сверху). На моем фото это ряд контактов наверху.
Регистры можно подключать продольно, но у меня один был в ручке, а второй в корпусе - пришлось паять по отдельности
GND припаиваем к плате STM32 на землю GND.
VCC припаиваем на 3.3V.
CS припаиваем на контакт B11 на плате STM32.
DATA припаиваем на B1.
SCK припаиваем на B10.
Теперь берем коннектор, вставляем в плату сдвигового регистра - отсюда у нас выходят 5-6 проводов. Крайние провода - земля, центральные - это питание.
Начинаем паять кнопку - нам нужно припаяться к земле и к одному из проводов в центре, паяем наискосок (замыкание идет в центре, поэтому упрощаем себе задачу):
Готово - подключим плату STM32 по USB к ПК, в программе FreeJoy назначим контактам
B11 - ShiftReg Latch,
B1 - ShiftReg Data,
B10 - ShiftReg CLK
накидал себе в экселе распиновку на плате STM32 и сдвиговых регистрах, чтобы не запутаться
Соответсвие контактов на регистре пинам на плате STM32 и назначениям в программе Freejoy
На вкладке Shift Registers выбираем тип регистра CD4021 Pull Up, прописываем количество кнопок = 24 (на фото я уже припаял 2ю плату регистров)
Записываем на устройство, открываем вкладку Button Config и проверяем что наша кнопка работает при нажатии.
Кнопки в итоге спаиваем по схеме - Крайние провода это земля, их можно припаивать цепочкой, второй контакт паяем на провода посередине коннектора, не соединя между собой:
5ти позиционные кнопки паяем аналогично, только контактов понадобится больше. 1я ножка - это земля (идет к крайним проводам коннектора), остальные ножки паяем к центральным проводам коннекторов сдвигового регистра. Замыкание цепи происходит внутри между 1м контактом и N-ным.
Один коннектор дает возможность припаять до 4 проводов питания кнопок. Можно припаивать одну кнопку к разным коннекторам (т.е. земля от одного коннектора, а провод питания идет от другого коннектора).
уместить всё в ручку оказалось еще той задачей. Хорошо, что использовал сдвиговые регистры, иначе с матрицей кнопок намучился бы..
Далее я паял джойстика, тумблеры и крутилки (потенциометры).
Дальнейший процесс опишу в ближайшее время + надо схему всего этого чуда накидать.
Итоговый результат
Видео, где показываю работоспособность девайса
Спасибо за внимание. Надеюсь, статья пригодится и поможет.
Лига 3D-принтеров
2.8K поста12.6K подписчика
Правила сообщества
Запрещено хамство и оскорбления, уважайте чужой опыт и труд