Автор делится с читателями описанием конструкции универсальной танцевальной платформы для игр серий Dance Dance Revolution и Pump It Up и её контроллера. Благодаря сочетанию оригинальных технических решений платформу удалось сделать лёгкой, несложной в сборке без применения каких- либо специфических инструментов, но в то же время весьма прочной и пригодной для игр высокого уровня сложности. Он хочет, чтобы как можно больше читателей открыли для себя мир танцевальных игр. Ведь это так весело и увлекательно, да ещё и полезно для здоровья.
Начнём с краткого экскурса в историю танцевальных игр. Согласно [1], Dance Dance Revolution (DDR) — серия музыкальных видеоигр, разработанных фирмой Konami Digital Entertainment. Игра проходит на танцевальной платформе с четырьмя панелями-кнопками «Вверх», «Вниз», «Влево” и «Вправо». Во время игры по экрану в ритм исполняемой песне перемещается последовательность стрелок. Игрок должен в такт музыке нажимать ногами на соответствующие панели-кнопки в те моменты, когда стрелки совпадают с полупрозрачным трафаретом, обычно расположенным в верхней части экрана.
Впервые DDR была представлена в виде аркадного игрового автомата в 1998 г. на игровой выставке Tokyo Game Show в Японии. Наиболее яркая демонстрация аркадного автомата DDR широкой публике произошла в фильме «Васаби» с Жаном Рено в главной роли.
Около года спустя корейская фирма Andamiro создала фактически копии DDR — игры серии Pump It Up (PIU). Игровой процесс PIU аналогичен DDR с той лишь разницей, что на танцевальной платформе PIU имеются пять панелей-кнопок: «Центр», «Влево-вверх», «Вправо-вверх», «Влево-вниз», «Вправо-вниз». Более подробно об играх серии PIU можно узнать в [2].
В 2004 г. фирма Roxor Games разработала свой вариант аркадного автомата под названием In The Groove (ITG), отличавшийся от DDR более сложными композициями. История In The Groove завершилась в 2006 г. получением фирмой Konami Digital Entertainment всех авторских прав на эти игры [3]. В 2008 г. Голландская фирма Positive Gaming выпустила свою линейку игр под названием iDance [4].
Уместно будет добавить, что фирмой Konami Digital Entertainment, помимо аркадных автоматов, игры серии DDR с 1999 г. и по сегодняшний день выпускаются в вариантах для всех известных игровых консолей (Sony PS One, Sony PS2. Sony PS3, Microsoft XBOX. Microsoft XBOX 360, Nintendo 64, Nintendo Game- cube, Nintendo Wii). К сожалению, консольные версии этих игр в нашей стране практически неизвестны. Причин этому великое множество. Упоминать их в рамках журнальной статьи не имеет смысла.
Для возможности играть на персональном компьютере командой энтузиастов был создан бесплатный симулятор аркадных автоматов DDR и PIU под названием Stepmania [5], распространяемый в том числе и в исходных кодах. На момент написания статьи вышла версия Stepmania 5.0.7. Кроме того, в Интернете есть много сайтов (например, [6, 7]), содержащих доступные для скачивания композиции практически всех когда-либо выходивших аркадных и консольных версий игр серий DDR, PIU и даже ITG. Танцевальная платформа, о которой пойдёт речь в предлагаемой статье, как раз и рассчитана на совместное использование с программой Stepmania на компьютере с операционной системой Windows.
Для домашнего освоения игр серий DDR и PIU существуют два варианта игровых приспособлений: танцевальные коврики и танцевальные платформы [6], обладающие своими достоинствами и недостатками.
Танцевальные коврики считают устройствами начального уровня, предназначенными для игроков, только приступивших к освоению игр. Они относительно недороги, имеют небольшую массу, их можно хранить в свёрнутом состоянии. Из недостатков можно назвать невысокую точность срабатывания, что делает невозможным исполнение сложных насыщенных «стрелками» композиций, и скольжение коврика по полу во время игры. Со временем коврики сминаются и практически неремонтопригодны.
Танцевальные платформы ориентированы на игроков, уже в значительной степени освоивших игровой процесс. Их варианты для домашнего использования в основном повторяют конструкции платформ аркадных автоматов. Отсюда достоинства — высокая точность срабатывания, отличный тактильный эффект, отсутствие перемещений во время игры. За это приходится платить большой массой (в среднем около 15 кг). Высокая стоимость доступных на рынке образцов платформ плюс расходы на пересылку [6] также не способствуют их широкому распространению Читатели, обладающие некоторыми слесарными навыками, могут изготовить танцевальную платформу самостоятельно. В Интернете имеются описания конструкций, разработанных как зарубежными [7, 8], так и отечественными [9] авторами. Однако выбирая конструкцию для повторения, необходимо учитывать стоимость материалов и наличие не только навыков, но ещё и соответствующих инструментов.
Танцевальная платформа, о которой пойдёт речь, — плод примерно трёх лет изысканий. При её создании ставились следующие цели:
- минимизировать массу платформы (не более нескольких килограммов) и сделать обращение с ней доступным хрупкой девушке или даже ребенку. Под обращением подразумевается не только игровой процесс, но и установка, подключение и все другие манипуляции с платформой;
- минимизировать расходы. Желательно, чтобы стоимость набора материалов и деталей для платформы не превышала средней цены танцевального коврика. Для сборки не должны требоваться какие-либо специфические инструменты;
- добиться высокой точности срабатываний. Платформа не должна ограничивать возможности игрока и должна быть пригодной для исполнения композиций, по крайней мере, уровня «Difficult» по шкале сложности DDR;
- обеспечить пригодность платформы для игр как DDR, так и PIU, для чего предусмотреть девять активных панелей-кнопок;
- связать платформу с компьютером по интерфейсу USB-2.0.
Анализ опубликованных в [7—9] описаний танцевальных платформ позволяет сделать вывод, что в их панелях- кнопках применяются только механические контакты. Чтобы обеспечить долговечность, контакты и платформы в целом обладают большим запасом механической прочности, что и обусловливает большую массу.
При создании предлагаемой танцевальной платформы было принято решение отказаться от механических контактов. В результате анализа доступных и теоретически пригодных для использования вариантов выбор был сделан в пользу ёмкостных датчиков. В подтверждение выбора удалось отыскать в Интернете описания трёх, по-видимому, работоспособных танцевальных платформ с ёмкостными датчиками [10-12].
Первый изготовленный автором макет танцевальной платформы был оборудован четырьмя ёмкостными датчиками. В качестве её основания использовался лист ДВП размерами 840×840 мм и толщиной 3,5 мм. На обратную сторону листа в тех местах, где должны располагаться панели- кнопки, были наклеены четыре квадрата размерами 250×250 мм из алюминиевой фольги. Макет измерителя ёмкости был собран на микроконтроллере ATmega8535 [13]. Соединение с компьютером было организовано через покупной джойстик, как это сделано в конструкциях [7—9].
Для измерения ёмкости использовался известный принцип определения продолжительности её зарядки или разрядки. Допустим, датчик (конденсатор) подключён к одной из линий порта ввода-вывода микроконтроллера. Сначала этот вывод конфигурируют как выход и на нём устанавливают высокий логический уровень. Поскольку выходное сопротивление линии порта в таком состоянии невелико, датчик (конденсатор) практически в тот же момент заряжается до напряжения питания микроконтроллера. После этого линию конфигурируют как вход. Конденсатор начинает разряжаться через подключённый параллельно ему резистор. Напряжение на конденсаторе постепенно уменьшается, а программа микроконтроллера отсчитывает время, за которое оно падает до логически низкого уровня. Чем больше ёмкость датчика, тем больше времени требуется для разрядки, и наоборот.
Сравнивая продолжительность разрядки с заранее установленными порогами, можно выделить два состояния «кнопки» — «нажата» и «отпущена». Именно такой принцип использован в конструкции [12], что установлено анализом исходного текста программы имеющегося в ней микроконтроллера.
Возможна небольшая модификация описанного принципа. Если спустя фиксированное время после переконфигурации линии с выхода на вход запускать встроенный АЦП микроконтроллера, то результат преобразования будет пропорционален ёмкости датчика. Такой принцип использован в конструкциях [10, 11].
По результатам испытаний первого макета танцевальной платформы были выявлены следующие недостатки:
- ёмкостные датчики одинаково чувствительны к предметам, находящимся сверху и снизу от них. Следовательно, на полу, в котором имеется металлическая арматура, играть не удаётся;
- датчики имеют очень низкую помехоустойчивость, что обусловлено относительно большой площадью образующих их пластин и длиной идущих к ним проводов. Об этом написал на своей интернет-странице автор конструкции [11]. Это, пожалуй, самый большой недостаток, ставящий под вопрос саму идею реализации ёмкостной танцевальной платформы.
На первом макете получаемые значения продолжительности разрядки имели большой разброс. Восьмикратное повторение измерения с последующим усреднением результатов ситуацию кардинально не улучшило. Частично помог гистерезис, введённый в характеристику переключения датчика. Но даже при индивидуальной для каждого датчика подстройке порогов так и не удалось добиться чёткого определения «нажатий» и «отпусканий».
Анализ источников был продолжен. Через некоторое время было найдено техническое решение, позволяющее полностью устранить чувствительность датчика снизу и существенно улучшить чёткость срабатывания. Это — активное экранирование, известное в зарубежной литературе под названием «driven shield». Его широко применяют для снятия сигналов с высокоомных цепей. Ссылки на конкретные источники информации приводить не буду, поскольку их очень много. Интересующийся читатель без труда сможет отыскать их в Интернете самостоятельно.
Идею активного экранирования иллюстрирует рис. 1. Оно достигается с помощью повторителя напряжения DA1 с хорошей нагрузочной способностью. Выход повторителя соединён с экраном сигнального провода, идущего от датчика, а экран этого провода — с экраном самого датчика (проводящей пластиной, идентичной по размерам пластине датчика и прикрывающей ее нижнюю сторону). Благодаря повторителю напряжение на экране всегда равно напряжению на датчике. Поскольку теперь разность потенциалов между датчиком и его экраном равна нулю, ток через ёмкость между ними не течёт. За счёт низкого выходного сопротивления повторителя нижняя сторона пластины-датчика и идущий от датчика экранированный провод теряют всякую чувствительность к окружающим предметам, даже металлическим.
Хотелось бы отметить, что помехоустойчивость конструкций [10—12], упомянутых выше, можно существенно улучшить, применив в них активное экранирование ёмкостных датчиков. В первом макете танцевальной платформы активное экранирование позволило добиться более чётких срабатываний датчиков. Но выяснилось, что это только половина решения проблемы, так как помехоустойчивость осталась всё-таки недостаточной.
В результате изучения различных интернет-источников были обнаружены серии микросхем QTouch и QMatrix [14] для работы с ёмкостными датчиками, обеспечивающими повышенную помехоустойчивость. Но они оказались неспособны работать с датчиками размерами 250×250 мм. Однако меня очень заинтересовал использованный в них принцип измерения ёмкости, кардинально отличающийся от описанного выше.
В основе принципа, используемого в микросхемах QTouch и QMatrix, лежит перенос заряда из конденсатора-датчика в накопительный конденсатор, ёмкость которого должна быть во много раз больше ёмкости датчика. В зарубежной литературе это решение известно под названием «charge pump».
Упрощённая схема измерения ёмкости по принципу переноса заряда изображена на рис. 2, где приняты следующие обозначения: Сд — ёмкостный датчик; Сн — накопительный конденсатор; S1—S3 — ключи, управляемые микроконтроллером; DD1 — компаратор напряжения.
В первый момент времени ключ S1 замкнут, ключи S2 и S3 разомкнуты. Конденсатор Сд заряжен до напряжения питания Uпит. Ключ S1 размыкают, а ключ S3 замыкают одновременно. Этим конденсаторы Сд и Сн соединяют параллельно, в результате чего большая часть заряда перетекает из Сд в Сн. Так происходит цикл «зарядка—перенос». Поскольку ёмкость накопительного конденсатора Си много больше ёмкости датчика Сд, чтобы зарядить Сн до напряжения, близкого к Uпит требуется много циклов «зарядка—перенос».
В те отрезки времени, когда ключ S1 замкнут, напряжение на инвертирующем входе компаратора DD1 тем меньше, чем больший заряд накоплен в конденсаторе Сн. Когда это напряжение опустится ниже порога, заданного напряжением на неинвертирующем входе компаратора (например, 0,7 В), на выходе компаратора будет установлен высокий логический уровень напряжения.
Ёмкость датчика Сд определяют путём подсчёта циклов «зарядка—перенос», выполненных до срабатывания компаратора. Чем ёмкость Сд больше, тем большее количество заряда она запасает в начале каждого цикла, и меньшее число циклов «зарядка—перенос» требуется для зарядки конденсатора Cн до заданного порога. Как только компаратор DD1 сработает, ключи S1 и S2 будут одновременно замкнуты, а ключ S3 разомкнут. Конденсатор Сн разрядится, после чего циклы «зарядка- перенос” могут быть повторены для следующего измерения ёмкости Сд.
Схема, представленная на рис. 2, проста в реализации с помощью современных микроконтроллеров, имеющих порты дискретного ввода—вывода общего назначения и встроенные компараторы напряжения. Более того, фирма Atmel разработала реализующую описанный метод библиотеку QTouch Library [15] для различных серий выпускаемых ею микроконтроллеров. Сегодня указанная библиотека при необходимости может быть подключена к среде разработки программ микроконтроллеров Atmel Studio [16].
Почему же метод переноса заряда даёт более стабильные результаты измерения ёмкости датчика, чем традиционный метод? Дело в том, что конденсатор Сд в схеме, изображённой на рис. 2, находится преимущественно в двух состояниях: заряжен до напряжения питания и разряжен до текущего значения напряжения на накопительном конденсаторе. В интервале времени, когда происходит перекачка заряда из Сд в Сн и чувствительность к воздействию помех наибольшая, датчик и идущие от него провода зашунтированы конденсатором Сн большой ёмкости.
Сочетание двух технических решений (активное экранирование и измерение емкости по принципу переноса заряда) позволило успешно достичь целей, обозначенных в начале статьи. С их использованием был собран второй макет танцевальной платформы (точнее, модифицирован первый) с четырьмя кнопками-датчиками. Датчики были сделаны из фольгированного с двух сторон стеклотекстолита толщиной 1,6 мм. Их размеры остались прежними — 250×250 мм. С печатной платой контроллера датчики были соединены коаксиальными кабелями. По-прежнему использовались микроконтроллер ATmega8535 и соединение с компьютером через джойстик.
Испытания второго макета показали, что он свободен от недостатков, свойственных первому. Точность срабатывания датчиков оказалась неотличимой от достигаемой при использовании одной из лучших покупных танцевальных платформ «Cobalt Flux”. К величайшему сожалению. выпуск этих платформ прекращён несколько лет назад.
Здесь необходимо сделать уточнение. Мне не удалось найти отличий на уровне «Difficult» по шкале сложности DDR. Композиции проходились и на «Cobalt Flux», и на втором макете с одинаковыми результатами. Быть может, на более высоких уровнях сложности отличия и проявятся, но проверить это у меня нет возможности. Те, кто знаком с DDR, меня поймут.
Были и особенности:
- упомянутая библиотека QTouch Library оказалась слишком громоздкой и неудобной в использовании. Взамен неё была написана очень простая программная реализация принципа переноса заряда, впоследствии проверенная на практике;
- установлена необходимость оперативной подстройки уровней переключения индивидуально для каждого датчика. Хранение уровней непосредственно в программе и их изменение путём её корректировки, повторной компиляции и перепрограммирования микроконтроллера, как это сделано в [12], нельзя считать лучшим решением. Лучше изменять уровни с помощью предусмотренного в рабочей программе несложного меню и хранить их в EEPROM микроконтроллера.
Интерфейс пользователя может быть реализован с использованием небольшого ЖКИ либо путём вывода через UART микроконтроллера сообщений, принимаемых и отображаемых компьютером. Во втором макете опробованы оба варианта и установлено следующее:
- необходимо хранить в микроконтроллере несколько наборов уровней переключения, поскольку пользователи разного возраста и комплекции по-разному изменяют ёмкость датчиков. Реализовано хранение и оперативное переключение пяти наборов;
- при домашнем использовании играть на платформе лучше в носках (без обуви), поскольку в этом случае лучше чувствуются рельефные границы панелей-кнопок, хотя ёмкостные датчики оказались способны реагировать и на игрока в обуви;
- отсутствует тактильное ощущение нажатий, но, как мне кажется по личному опыту, это не так уж и важно.
Ещё одно преимущество танцевальной платформы с ёмкостными датчиками перед традиционными [7—9] — меньшая подверженность механическому износу (иными словами, большая долговечность), поскольку в предлагаемой конструкции полностью отсутствуют подвижные части.
В целом второй макет оказался удачным сочетанием технических решений, пригодным для повторения читателями, поскольку вполне соответствовал поставленным целям (кроме универсальности). Но мне захотелось сделать конструкцию более завершённой, повысить уровень технической эстетики (например, для связи с компьютером по интерфейсу USB-2.0 не использовать джойстик, а подключать микроконтроллер непосредственно). Хотелось и оптимизировать конструкцию с целью её дальнейшего удешевления. В результате после испытания двух макетов была разработана описываемая ниже конструкция, основные технические характеристики которой представлены в таблице Платформа структурно состоит из модуля контроллера, к которому подключены девять экранированных ёмкостных датчиков. В свою очередь, контроллер подключают к компьютеру по интерфейсу USB-2.0.
Схема модуля контроллера представлена на рис. 3. Его основной элемент — микроконтроллер DD1. Тактовая частота микроконтроллера стабилизирована кварцевым резонатором ZQ1 на 8 МГц. Конденсаторы С1, СЗ, С5, С7, С9, С11, С13, С15, С17 — накопительные. Их емкость выбрана равной 10 нФ, чем при выбранных размерах ёмкостных датчиков достигнут компромисс между их чувствительностью и затратами процессорного времени на измерение их ёмкости.
На счетверённых ОУ DA1 —DA3 выполнены повторители напряжения для активных экранов. Всего используется девять элементов ОУ (по числу датчиков). Резистивные делители напряжения на входах повторителей уменьшают их коэффициент передачи приблизительно на 2 %, что повышает стабильность, снижая риск самовозбуждения. Сами датчики и их экраны подключают к разъёму ХР1.
Светодиод HL1 сигнализирует о наличии питания. Светодиод HL2 показывает режим работы интерфейса USB. Светодиоды HL3—HL11 отображают состояние ёмкостных датчиков и расположены на печатной плате согласно расположению датчиков на платформе. О срабатывании, например, датчика 0 сигнализирует светодиод HU3, датчика 1 — HL4 и т. д.
Кнопки SB1 (установка микроконтроллера в исходное состояние) и SB2 (активирование загрузчика) используют при загрузке программы во FLASH-память микроконтроллера DD1 по интерфейсу USB-2.0. Кнопки SB3—SB6 — органы управления платформой. С их помощью выбирают наборы порогов переключения, а также устанавливают эти пороги индивидуально для каждого ёмкостного датчика.
Конденсаторы С23—С36 — фильтрующие в цепи питания, диод VD1 защищает устройство от подачи напряжения питания в неправильной полярности.
Разъём XS1 — розетка USB-BF. К её контактам подключены интерфейсные линии USB, с неё же берут напряжение питания +5 В для всего контроллера.
На разъём ХР2 выведен общий провод устройства. У меня не возникало необходимости в его использовании, но читатели, которые захотят ещё более повысить помехозащищённость платформы, могут покрыть её основание сплошным слоем металлической фольги и соединить его с разъёмом ХР2, обеспечив лучшее экранирование.
Для минимизации размеров модуля контроллера в нём использованы компоненты в основном для поверхностного монтажа. В качестве DD1 можно использовать любой из микроконтроллеров AT90USB646-AU, AT90USB647-AU, AT90USB1286-AU или AT90USB1287-AU (при этом необходимо загружать в программную память каждого микроконтроллера коды из соответствующего НЕХ-файла).
Все резисторы — типоразмера 0805. Конденсаторы С23— С27 — оксидные танталовые 293D476X0016С2 в корпусе типоразмера D. К выбору накопительных конденсаторов С1, СЗ, С5, С7, С9, С11, С13, С15, С17 следует отнестись с особой тщательностью. Рекомендую применить плёночные конденсаторы К73-17А, обладающие по сравнению с керамическими лучшей температурной стабильностью, или аналогичные импортные. На печатной плате предусмотрена возможность установки этих конденсаторов различного размера. Конденсатор С37 — керамический типоразмера 1206. Все остальные конденсаторы — керамические типоразмера 0805.
ЛИТЕРАТУРА
- Dance Dance Revolution. — URL https://ru.wikipedia.org/wiki/Dance_Dance_Revolution (15.05.2015).
- Pump It Up. — URL: https://ru.Wikipedia.org/wiki/Pump_lt_Up (15.05 2015).
- In the Groove. —URL:https://ru.org/wiki/ln_the_Groove (15 05.2015).
- — URL: https://en.Wikipedia. org/wiki/IDance (15.05.2015).
- — URL: http://www. stepmania.com/ (15.05 2015).
- Танцующий Бегемотик. — URL: http:// www.dancinghippo.ru/ (15 05.2015).
- The DDR homepad building and softpad modding thread. — URL: https://zenius-i-vanisher.com/v5.2/viewthread.php?threadid =3350(15.05.2015).
- Home Built Dance Dance Revolution Arcade Style Metal Pad. — URL: http://www. com/d20/ddrhomepad/
- Как самому сделать танцевальную платформу для Dance Dance Revolution. — URL: http://habrahabr.ru/post/235323/ (15.05 2015).
- Capacitive Dance Pad — URL: http://simon.derr.free.fr/site/spip/spip.php?rubrique3 (15.05.2015).
- usbddr — V-USB — URL: http://vusb. wikidot.com projectiusbddr (15 05 2015).
- Кучин А. Танцевальный коврик с USB-интерфейсом (USB DANCE PAD) — URL: http://www.artem.ru/cgi-bin/news?c=v&id=744( 05.2015).
- 8-bit AVR Microcontroller with 8K Bytes In-System Programmable Flash ATmega8535. ATmega8535L — URL: http://www.atmel.com/ images/doc2502.pdf (15.05 2015).
- Dedicated Touch Devices — URL http:// www. atmel. com/products -TouchSolutions/b sw/dedicated-touch-devices.aspx
- Atmel QTouch Ubrary — URL: http://www.atmel.com/products/TouchSolutions/touchsoftwareatmelaspx.
- Atmel Studio. — URL: http://www.atmecom/tools/atmelstudio.aspx (15.05.2015).
Автор: А. ГЕННО, г. Таганрог Ростовской обл.
Источник: журнал Радио №10, 2015