Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

А может всё-таки стоит сделать, штука весёлая и недорогая, заодно хорошая практика в паяльном деле! Но обо всём по порядку. Начну, пожалуй, с того, что такое вообще DJ Hero.

Fumo тоже понравилось!

Это такая ритм-игра, в которой вам нужно крутить DJ-диск (который можно назвать английским словом turntable, я буду использовать его в дальнейшем, русские аналоги звучат не очень) и двигать энкодер-ручку эффектов (effects knob) и кроссфейдер, имитируя таким образом работу диджея. По сути вам нужно нажимать кнопки на самом turntable (их всего три) в зависимости от того, какая из них достигает горизонтальной полосы. Вертикальных полос также три. Боковые кнопки могут содержать секции скретчинга, где вам нужно крутить диск определённым образом, а у центральной бывают секции со спамом кнопки для вызова диджейских эффектов. Энкодер отвечает за бонусные секции, а кроссфейдером нужно пользоваться, если вертикальная полоса смещается. Так и вы смещаете положение энкодера. Также существует и кнопка Euphoria, как и у игр серии Guitar Hero, при нажатии которой можно получать больше очков определённое время. Есть ещё некоторые особенности геймплея, но ограничимся базовыми знаниями. Я плохо описываю геймплей, поэтому лучше взглянуть на видео.

Вы уже могли догадаться, что серия DJ Hero связана с Guitar Hero, ведь по сути у них один издатель - Activision. Серия игр не была такой успешной, как GH, поэтому продержалась довольно недолго. Всего вышло две части, планировалась версия для 3DS, но по итогу разработку свернули. Я думаю, что игре не повезло выйти в 2009 году (вторая часть была уже через год), поскольку популярность EDM и диджеинга в целом тогда была не такой высокой, как сейчас. В любом случае, у игры до сих пор есть небольшое сообщество, где фанаты разрабатывают свои чарты (уровни) и моддят игру.

В своё время я мечтал поиграть в такое, поскольку был фанатом электронной музыки, но стоимость этой штуки была для меня большой и я отложил мечту в долгий ящик. Хотя в ритм-игры впоследствии я вошёл совсем с другой игры - Project DIVA. Игре не требовался специальный контроллер, что являлось для меня тогда плюсом. За длительный период с 2017 года я попробовал множество других ритм-игр, хотя окончательно пересел на игры с контроллерами только в 2023 году. А затем уже и про DJ Hero вспомнил.

Собственно, перейду к самому процессу создания, то, ради чего и писалась статья. Началось всё с раздумий, в какую ритм-игру ещё стоит попробовать поиграть. Я листал Авито в поисках интересных объявлений. В основном искал какие-нибудь контроллеры для BEMANI игр (beatmania, SOUND VOLTEX и т.д.), пока на глаза не попалось объявление с DJ Hero контроллером всего за 300 рублей. Но у него был один нюанс - в комплекте не было приёмника для подключения к PS3. Я думал, что соображу по ходу, как быть с этим, поэтому быстро договорился с продавцом и заказал себе это чудо через доставку DPD. Ужасный сервис, кстати, везли мне его две недели. Забрал, принёс домой, проверил - всё в порядке.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Это первая версия контроллера для первой части игры. На задней части имеется наклейка, которая это подтверждает. У контроллера для DJ Hero 2 отличается картинка на диске, а также указывается, что он только для PlayStation 3. Но так или иначе, данные контроллеры работают и на PlayStation 2 в первой части игры. Диск с кнопками съёмный - его можно переместить в левую часть, если вам так удобнее играть. Как я понял, что-то типа опции для левши.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Да, на диске имеются три мембранные кнопки, сам диск крутится, достаточно свободно… Я бы сказал даже слишком, у него вообще нет никакого сопротивления! В тот момент я начал сомневаться, что такую штуку можно использовать для игры в beatmania. Но я всё равно испытал её там, но об этом чуть позже. А на центральной панели имеется кнопка для вызова Euphoria, effects knob и ниже кроссфейдер, как на настоящем DJ-пульте, только не сильно фиксирующимся везде, кроме центра. Сверху располагаются привычные кнопки навигации PlayStation. У контроллера есть и версия для Xbox, там кнопки отличаются. Особенно выделяется версия для Wii, в ней вместо кнопок размещён слот для вставки Wii Remote. Сама панель также немного шире.

На следующий день я полез разбирать контроллер. Внутри всё было достаточно хорошо организовано.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Сразу бросается в глаза зелёная плата сверху. Это и есть мозг контроллера. Он разработан не только для DJ Hero, такой же установлен в гитару для Guitar Hero 5. Остальные штуки подключаются к основной плате через шлейфы и прямые подпайки. Питание через батарейки подключается отдельно. Первым делом я отключил его и убрал подальше, благо это довольно легко. Качество внутренностей оставляет желать лучшего. Компоненты используются крайне дешёвые и у многих людей при активной игре могут быстро выходить из строя. Я знаю, что механические энкодеры быстро портятся. Здесь как раз такой стоит. Для подключения диска Turntable к основе используются проприетарные разъемы, ими стоит дорожить, замену найти сложновато. Ещё одна причина отказаться от совместной реализации с beatmania.

Через пару дней я решил заняться выпаиванием основной платы. Как видно по фото, точек пайки довольно много, пришлось изрядно повозиться. Я лишь любитель, поэтому поначалу было сложно. Что-то не очень удачно отпаялось, но я всё же добился своего. Ушёл где-то вечер на это дело. И вот, перед нами обратная сторона. Маленькая плата в плате отвечает за беспроводную связь, что видно по наличию антенны.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

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

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Кнопка Euphoria же включает в себя зачем-то две мембраны и небольшой светодиод, подключаемый отдельным пином.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Что ж, теперь нам нужно дать этому телу новый мозг! Выбор пал на Raspberry Pi Pico, как самый дешёвый вариант. Где-то в районе 200 рублей на AliExpress вполне реально найти подходящий клон со всем необходимым. Бонусом взял проводочки. И вот, спустя ещё пару-тройку недель ожидания детали приходят.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Теперь пора присоединить плату. Используя паяльник и припой, я соединял проводами нужные контакты. Но сначала я не знал, что к чему подключать. Параллельно я думал над программной начинкой. Изначально хотел писать код с помощью Arduino IDE, изучил ещё существующий CircuitPython, но не понимал, как именно работает подключаемый Turntable. Немного изучил в Интернете, что вообще делают люди и выяснил, что это обычное устройство I2C, у которого есть свой метод обмена информацией. К счастью, нашлись люди, которые это дело расшифровали. Нашёл точки подключения I2C на Pico (благо их там много) и припаял. Кнопки это обычные пины, поэтому нет особой разницы куда их подключать. Энкодер и кроссфейдер необходимо подключать к аналоговым пинам. Пайка была тяжкой, из-за неумения очень тяжело было припаять всё аккуратно. Решил разместить плату справа от контактов. По итогу получилось как-то так.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Да, получилось не очень красиво. Теперь пора это тестировать! Но я так и не разобрался с прошивкой. В Интернете нашёл прошивку для Guitar Hero, там же, где и информацию про методы передачи данных с I2C устройства Turntable. Я скачал её и о чудо! Я увидел в списке доступных устройств мой контроллер.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Да, это целая программа, где можно настроить тип контроллера, кнопки назначить под пины, а затем прошить готовую прошивку в микроконтроллер. Правда, после прошивки работало далеко не всё. Кнопка Euphoria всегда светилась (кстати, в настройках кнопка Triangle и Euphoria раздельны, но по факту они идентичны даже на плате), кроссфейдер и энкодер не работали корректно, а на PS3 контроллер вообще не определялся. Я не потянул бы написание даже такой прошивки с нуля, поэтому подумал, что было бы неплохо написать автору прошивки и спросить у него, почему это всё не работает должным образом. Так началось моё небольшое сотрудничество с sanjay900, автором прошивки Ardwiino или будущей Santroller. Первым делом, я указал на проблемы прошивки. Он мне сообщил, что как бы поддержки DJ Hero и нет, но делается в другом проекте (собственно Santroller). Проблемы аналоговых частей были связаны с плохим заземлением. Но оказалось, что это не так, и я узнаю об этом сильно позже, чем нужно было.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Переписка шла достаточно, я по сути тестировал прошивку, помогал с какой-то информацией. Поведение Turntable было непредсказуемым, резким. Так, спустя время sanjay900 добавил смягчение ввода, управлять стало более приятно и в самой игре. Поначалу я тестировал это в эмуляторе, но затем уже перешёл на реальную PS3. Долго возились со странным поведением аналоговых пинов. Они выдавали странные значения. Так, спустя много проверок и замеров я отчаялся и сдался. Увы, в этот раз ничего у меня не вышло. Я подумал, что во время болезненной отпайки ножек с пинов я повредил плату. Что ж, мне оставалось только отпаять всё, что я долго припаивал, и взять за основу другую плату. Выбор пал на Pro Micro. Одна такая плата была у меня вставлена в старый DIY проект по превращению синтезатора в MIDI-клавиатуру. Я решил поменять местами платы. Также я поменял её положение с правой части на левую, так как узнал, что корпус просто не закрывался, если справа что-то было.

Да, я вообще не занимался модификацией корпуса в моей первой “итерации” (назовём её так), ведь по сути и смысла не было, контроллер не работал до конца. Я, к слову, забыл рассказать ещё кое-что интересное про данную “итерацию”. Я тестировал Turntable в другой игре, у которой есть такой элемент управления. И, конечно, я говорю про beatmania IIDX. Я взял свою MIDI-клавиатуру, расположил её слева, а TT справа. Из последней октавы получились кнопки, а TT выполнял роль самой себя. Так получился импровизированный метод управления. И он также показал, что диск не подходит для этой игры.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Ах да, это годилось только для P2 стороны (диск справа), а я играю обычно на P1 (диск слева). Но про beatmania и свои весёлые опыты с контроллерами для неё я расскажу уже в отдельной статье. Но по итогу с друзьями повеселились, а потом я вернул прошивку на место. Да, только один вариант прошивки подошёл для такого сценария использования, поскольку алгоритмы считывания немного отличаются. Возвращаюсь к созданию второй “итерации” DJ Hero. Теперь за основу взята Pro Micro. Количество аналоговых пинов на плате в разы больше, но появилась новая проблема - плата питается от 5V, тогда как начинка контроллера, а точнее Turntable, требует 3V3. Если бы я подключил всё как есть, мог бы произойти небольшой пожар. Я написал единственному человеку, который мог помочь - sanjay900. Он сообщил мне о существовании конвертеров питания. Я купил в ближайшем магазине радиодеталей AMS1117. Эта маленькая штучка превращает напряжение 5V в 3V3. После покупки я приступил к соединению всех контактов друг с другом. Получилось это.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Снова не очень аккуратно, но работоспособно. Хотя и контакты с крестовиной были едва рабочими. Регулятор питания я разместил на весу. К нему подключены те жёлтый и оранжевый проводочки, который отвечали за питание Crossfader и Effects knob (энкодер), а также красный - питание для Turntable. От него шёл коричневый провод, который подключался уже к Pro Micro - пин VCC с питанием 5V.

Мне не нравилось, что плата перекрывает один из болтов для доступа к плате с кнопками управления, но места было не так много, я не мог двинуть плату правее. Для LED огоньков указания игрока места не нашлось, уж слишком мало пинов у Pro Micro. Да, я не паял их и в первой “итерации”, поскольку не знал, что даже это реализовано в прошивке Santroller.

Вы также могли заметить, что у платы есть прозрачное нечто внизу и по бокам. Я использовал для фиксации платы обычный клей-пистолет. Я использовал его в первый раз именно в этом проекте. И, кажется, я нашёл своего лучшего друга в DIY. Клей очень часто меня выручал и стал много чего фиксировать в моих будущих проектах! Меня навела на эту мысль моя подруга-косплеер, спасибо ей!

Теперь мне оставалось лишь загрузить прошивку в Pro Micro и… Очередная ошибка. Конечно же, я сообщил о ней sanjay900 и он её оперативно исправил. После чего я повторно загрузил и получилось! Теперь аналоговые входы работали исправно! Я долго настраивал значения Poll rate и Multiplier и нашёл более-менее рабочие с игрой значения. Не забыл поставить и опцию смягчения ввода. Так, контроллер наконец стал пригодным для игры в DJ Hero! Но не были решены некоторые проблемы. Мы оба не знали, как на самом деле должен вести себя настоящий контроллер. К тому же, режим PS3 всё ещё часто глючил. Приставка зависала после отключения контроллера или выхода из игры. Спустя долгую дискуссию оказалось, что она зависала и с оригинальным контроллером. Это так и не удалось исправить до сих пор.

Что ж, контроллер работает, теперь надо привести в порядок корпус. Я попытался закрыть крышку, но не получалось. Чуток подпилил верхнюю часть и он влез. Теперь нужно было выяснить, что делать с отверстием под разъем Micro USB. Я подставил крышку другой стороной к разъему и начертил карандашом примерное расположение. Затем нужно было убрать эту часть пластика. Сначала пытался нагреть иглу и ей всё это разрезать, но это было слишком долго и неэффективно. Затем меня осенило использовать обычный паяльник. Вонь на всю комнату была обеспечена! Я “разрезал” паяльником пластик по линиям, что наметил. Я немного перестарался, но вышло неплохо.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Исправить и уменьшить дыру я решил, используя тот же клей-пистолет. Я аккуратно им прошёлся по пустотам. Прозрачность клея я исправил чёрной акриловой краской. Получилось не идеально, но вполне аккуратно и функционально - провод фиксировался без проблем.

Я начал использовать контроллер для игры, потихоньку осваивал, мои друзья тоже играли. Но, конечно, не могло всё так гладко быть. Произошла проблемка, которая затянула проект до третьей “итерации”.

Я брал контроллер в Москву для демонстрации тамошним друзьям и заметил, что как-то далеко не всегда он опознается компьютером. Я смог дать поиграть другу, кое-как подключив его в определённом положении. Вернувшись домой, я снял крышку, чуток пошевелил разъём… И он отвалился. Мой самый большой просчёт в надёжности таких плат с Pro Micro на борту. Сразу же могу вам сказать, что если вы собираетесь использовать такую штуку, то подключите к разъёму удлинитель и больше не трогайте! Используйте удлинитель. Причина такой хрупкости была в том, что у разъёма всего лишь две небольшие контактные площадки с одной стороны, никакой фиксации с другой не имеется.

Press F to pay respects<br />
Press F to pay respects

Впрочем, я не сдавался и купил парочку таких разъёмов для перепаивания. К сожалению, ничего толкового у меня не вышло, да и у меня по итогу полностью отвалились остальные дорожки, которые ведут к разъёму. Можно было почти что похоронить Pro Micro, но, к счастью, я смог спасти плату. Уже не в том виде, теперь от неё идёт обычный USB-A кабель и используется она в моём маленьком проекте по созданию GIMX переходника. Полезная в хозяйстве штука, позволяющая играть в игры на приставках, используя любой ввод с компьютера.

Но вернёмся к нашему несчастному DJ Hero. Проект был немного заброшен на 2-3 месяца, пока я не нашёл небольшую сумму денег и купил ещё одну плату. Снова на основе Raspberry Pi Pico. Так как теперь у меня есть отверстие для разъема на корпусе, менять расположение платы я не могу. Я еле-еле смог расположить её слева, поскольку она примерно в полтора раза больше Pro Micro. Часть проводов я заменил жёсткими проводами из старого медного кабеля для Интернета, который был демонтирован после обновления линий. Я также припаял провода и к LED индикаторам игрока. Получилось что-то типа такого.

Обезвредить бомбу было бы тяжело...<br />
Обезвредить бомбу было бы тяжело...

Регулятор питания снова больше не требовался и ушёл в другой проект, остальное всё осталось на месте. Третья “итерация” контроллера готова!

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Снова возникли маленькие проблемы с обновлением прошивки, которые sanjay900 оперативно исправил. Но есть ещё кое-что.

Вы же помните, что при разработке первой "итерации" контроллера у меня были проблемы с аналоговыми пинами? Да, они вернулись! Теперь я точно был убеждён в том, что проблема не в поломанной плате, она была исправна. И эта, получается, тоже исправна. Так что же было не так? Оказывается, у китайского клона существует определённый переключатель, с помощью которого необходимо активировать аналоговые пины - VREF. Внимательные уже могли заметить, что я это сделал, соединив VREF и 3V3 на плате. Есть способ ещё проще - просто пропаять два контакта на площадке VREF. Если бы я знал это раньше, сколько бы я времени и нервов сэкономил?.. Небольшой недостаток в том, что аналоговый сигнал достаточно шумный и не такой точный, как у Pro Micro, но для нашего контроллера это особо не мешает.

Кстати, можно также заметить, что LED индикатор для Euphoria перекочевал в аналоговый пин. Оказалось, что он умеет принимать такой ввод. Хотя при этом мой контроллер не мигал так плавно, как в теории должен был. Оказалось, что в версии для Xbox светодиод действительно аналоговый и плавный, а вот на PlayStation он может только светиться и не светиться.

И вот, передо мной полноценно рабочий контроллер для игры в DJ Hero. Единственный нюанс в том, что индикаторы некорректно показывают номера игроков с 5 по 7. Да, в PlayStation 3 по сути заложена поддержка достаточно большого количества одновременно подключенных контроллеров. Эта вещь до сих пор не исправлена, хотя по сути это лишь небольшая косметическая проблемка. Периодически выходили обновления для Santroller прошивки, я ставил некоторые. В одном из них немного поломался ввод, но я немного подустал от проекта и оставил его в покое. В декабре 2023 года в группе Discord по DJ Hero появилась информация о том, что sanjay900 сделал релизную версию своей прошивки для DJ Hero. Также были указаны технические особенности, как в идеале надо настроить прошивку для корректной игры. Так, оказалось, что функция сглаживания сигнала некорректно обрабатывается игрой, поскольку в ней самой находились такие алгоритмы. Multiplier тоже нужно выставлять по-минимуму. Такие тонкости получилось узнать благодаря парочке активных ребят из самого сообщества. В одну из переписок с sanjay900 я затянул его в этот Discord сервер, а впоследствии он стал работать с сообществом. Я уже не особо знаю деталей, что именно происходило там после создания моего контроллера, но один человечек с никнеймом Crafty реализовал интересный проект - собственная PCB плата, которая позволяет заменить мембранные кнопки Turntable на механические. Разумеется, контроллер также переведён с батареек на провод. Как я понимаю, это небольшой коммерческий проект, и sanjay900 также помогал с прошивкой.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

Кстати, задержек по проводу в разы меньше и он работает даже лучше оригинала. Ещё одним неоспоримым плюсом является то, что контроллер работает не только с PS3, но и с Xbox 360. Я был лишь первопроходцем, до меня в сообществе особо никто и не занимался переносом начинки на другу плату. Теперь это поставлено на поток. Я сыграл лишь маленькую роль в этом.

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

Если вдруг кто-то всё же захочет повторить мой опыт, я могу поделиться нужной информацией. Ниже я привожу картинку с пинами, которые я соединил между оригинальной платой управления и Pi Pico. Именно так сейчас подключено у меня самого.

Модифицировал контроллер для DJ Hero, чтобы тебе не пришлось этого делать

А здесь вы можете скачать прошивку для контроллера. Как я и говорил, она подходит и для множества других вещей, в том числе для гитар Guitar Hero.

А вот и фанатский Discord-сервер. Фанаты делают множество неплохих кастомных чартов для игры, а также там можете найти всевозможные гайды по настройке. На английском языке, конечно.

Такие вот дела. Я надеюсь, что вам понравилась статейка. Я не очень опытен, буду рад видеть любые ваши отзывы. Они будут меня мотивировать писать ещё. Из других готовых контроллеров у меня есть для игр beatmania IIDX и Chunithm. Если я смогу набраться сил, я сделаю статьи и про них! У них обоих куда более интересная разработка, больше труда вложено. Спасибо вам за внимание и до встречи! 😊

77
3 комментария

Есть у меня такая штука, где-то раз в год достаю покрутить. Правда, провод на приемнике уже на ладан дышит

1
Ответить

О да, он, видимо, очень хрупкий. Я недавно видел у человека купленный контроллер в полном комплекте с Авито, там этот провод уже был перевязанный

Ответить

Уважаемо. Но лонг не осилил.

Ответить