Найти в Дзене

Вторая жизнь Thrustmaster HOTAS Cougar (ч. 3)

Оглавление

Герой сегодняшней статьи - РУД (Ручка Управления Двигателем) от Thrustmaster HOTAS Cougar.

РУД Thrustmaster HOTAS Cougar (фото из интернета)
РУД Thrustmaster HOTAS Cougar (фото из интернета)

Так почему же наш герой нуждается во второй жизни? Ответ прост. Он привязан к основному джойстик кабелем, будто сиамский близнец. Его нельзя подключить к компьютеру напрямую, поэтому любое его использование подразумевает, что комплект будет использоваться целиком. Учитывая плачевное состояние базы в стоке, а также того факта, что я буду мигрировать героя прошлых статей в базу от Thrustmaster Warthog, вполне оправдано желание сделать РУД самостоятельным девайсом. Этим мы сегодня с вами и займёмся.

Железо

Для данного проекта нам понадобится:

  • Микроконтроллер с аппаратной поддержкой USB. Наиболее простой вариант - контроллер на чипе ATMEGA 32U4. Я остановился на Pro Micro аналоге от Amperkot c Type-C разъёмом. На момент написания статьи найти можно здесь.
  • (опционально) С целью унификации, я приобрёл разъём USB-B всё там же.

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

Начинаем с разборки базы РУДа. откручиваем восемь болтов на основании и снимаем крышку.

Видим кабель, которые присоединяется к плате и выходит наружу. Помяну добрым словом конструкторов, что вывели все интересующие нас разъёмы на 16-контактную гребёнку. Помянём их ещё более добрым словом, так как вывели они контакты по порядку.
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
| 9 | 10 |
| 11 | 12 |
| 13 | 14 |
| 15 | X |

С подключением мне так же очень сильно помогла данная схема, так же найденная на просторах интернета.

Схема работы РУДа Thrustmaster HOTAS Cougar (фото из интернета)
Схема работы РУДа Thrustmaster HOTAS Cougar (фото из интернета)

Как же в итоге работает РУД?

  • Пин № 1 - это пин для подключения высокого уровня. Подключаем к пинам VCC или 5V на микроконтроллере.
  • Пины №№ 5 и 15 - низкий уровень, или земля. Подключаем к пинам GND на микроконтроллере.
  • Пины №№ 10, 11, 12, 13, 14 - на эти пины выводится информация об осях на РУДе. 10 и 11 - оси курсора X и Y, 12 - нижний энкодер ANT, управляющий углом места РЛС, 13 - верхний энкодер MAN, позволяющий вводить базу цели при использовании ВПУ, либо управлять масштабом прицельного контейнера, 14 - положение рычага тяги.

Оставшиеся пины образуют матрицу. В нормальном положении кнопки подтягиваются к плюсу (VCC микроконтроллера). Подавая на один из пинов в строке (2, 3 и 4) логический ноль, а на оставшиеся - логическую единицу, мы сможем считать в этот момент нажата ли кнопка, относящаяся к пину в этой строке и колонке (пины колонн - 6, 7, 8, 9).
К примеру, если мы хотим считать положение кнопки
T3, нам нужно выставить логический ноль на пине 2, выставить логическую единицу на пинах 3 и 4, после чего считать информацию с 7 пина. 1 - означает, что кнопка не нажата, а 0 - что нажата. Для T8 порядок действий тот же, за исключением того, что мы подаём логический ноль на пин 3 вместо 2 (считываем значение так же с пина 7).

Подключение

Безжалостно режем провода у основания кабеля. Как вариант, можно купить джамперы, и оставить базовый кабель в живых (если он вам по какой-то причине нужен). В описании контролера Pro Micro на сайте Amperkot написано, что на нём 4 пина с аналоговым входом-выходом, которые мы будем использовать для подключения наших осей. Не верьте этому, пинов с цифро-аналоговым преобразователем там целых 9 штук

Схема распиновки Pro Micro (фото из интернета)
Схема распиновки Pro Micro (фото из интернета)

Я подключал контакты следующим образом:

  • 1 контакт на гребёнке => VCC
  • 2 контакт на гребёнке => 2
  • 3 контакт на гребёнке => 3
  • 4 контакт на гребёнке => 4
  • 5 контакт на гребёнке => GND
  • 6 контакт на гребёнке => 6
  • 7 контакт на гребёнке => 7
  • 8 контакт на гребёнке => 8
  • 9 контакт на гребёнке => 9
  • 10 контакт на гребёнке => A1
  • 11 контакт на гребёнке => A2
  • 12 контакт на гребёнке => A3
  • 13 контакт на гребёнке => 10
  • 14 контакт на гребёнке => A0
  • 15 контакт на гребёнке => GND

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

Софт

Я использовал для написания кода среду разработки Platformio под VSCode, но поскольку большинству будет проще загрузить скетч под Arduino IDE - портирую скрипт и под него. Полагаю, что вы сможете загрузить прошивку самостоятельно. Найти можно как версию под platformio, так и скетч под Arduino IDE.

Вкратце, что делает наш микроконтроллер.

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

  • Первым делом - переопределить диапазон там, где он нужен. Может случиться, что энкодер не будет доходить до минимального и максимального значения, и мы будем получать не 0 и 1024, а 120 и 780. Команда map занимается тем, что модифицирует входное значение так, чтобы оно было 0 на минимальной позиции и 1024 на максимальной
  • Следующее что нам нужно это отфильтровать шум с осей. Я использовал для этого фильтр экспоненциальное бегущее среднее с адаптивным коэффициентом, взятый мной с сайта AlexGyver.
  • и наконец, передать эти данные по USB.

В коде довольно много констант для ручной настройки под конкретный РУД. Отдельно стоит упомянуть throttle_deadzone. Это позиция, соответствующая режиму Military, то есть максимальная тяга без форсажа.

Заключение

Остались небольшие штрихи. Нужно выфрезеровать разъём под USB-B, установить его и тем самым унифицировать данный девайс с моим остальным сетапом. Кроме того, есть мысли кардинально переделать девайс, сделать большую длину рычага и возможность аутентично, с наклоном, перемещать ручку между позициями Cutoff <> Idle, а также на форсаж.

Ключевые слова

  • Thrustmaster Cougar Throttle USB
  • Thrustmaster Cougar Throttle USB Standalone