Подключение джойстиков от игровых приставок к шине USB

Автор рассказывает, как изготовить простой адаптер на МК ATmega8, позволяющий подключить к разъему USB компьютера джойстик от игровой видеоприставки. Статья будет полезна не только любителям поиграть в "приставочные " игры на компьютере, но и всем, кто интересуется применением интерфейса USB в своих конструкциях.

О том, как подключать игровые манипуляторы от видеоприставок к порту LPT компьютера и какие программные драйверы для них использовать, автор рассказал в [1]. В современных ноутбуках и материнских платах компьютеров порт LPT считается чуть ли не атавизмом и во многих случаях отсутствует. На смену ему приходит порт USB, к которому подключают принтеры, модемы, FLASH-память и прочие периферийные устройства. Джойстики от игровых приставок Dendy, SEGA MegaDrive-II (Sega), Sony PlayStation (PSX) — не исключение. Подключают их к разъему USB компьютера через специальные адаптеры. Известны такие изделия как промышленного производства [2], так и любительские самоделки, например, [3, 4]. Все они выполнены на МК, но каждый из них имеет те или иные недостатки: то малое число и номенклатура подключаемых джойстиков, то высокая цена и излишняя сложность, то редкая микросхема и отсутствие чертежа печатной платы. Но хуже всего — "засекреченность" исходного текста программы, не позволяющая модернизировать и приспособить интерфейс управления под свои вкусы и потребности. По этой причине и была выполнена предлагаемая разработка на доступной элементной базе и с открытыми исходными текстами программ.

Как известно, утвержденная в 2000 г. спецификация USB-2.0 предусматривает три режима работы шины: LS (Low Speed) — скорость до 1,5 Мбит/с, FS (Full Speed) — скорость до 12 Мбит/с, HS (High Speed) — скорость до 480 Мбит/с. Самый простой из этих режимов — LS. Его сравнительно низкой скорости достаточно, чтобы обеспечить опрос кнопок джойстика с периодом 16…20 мс, как в реальной игровой приставке. USB-адаптер, работающий в режиме LS, можно построить на сравнительно дешевом МК общего назначения и соединить его с компьютером довольно длинным кабелем даже без витых пар проводов. Так как режим LS был предусмотрен и спецификацией USB-1.0, то адаптер сможет работать не только с современными, но и с морально устаревшими компьютерами.

Согласно спецификации различают два класса USB-устройств: CDC (Communication Device Class) — устройства связи, HID (Human Interface Devices) — устройства интерфейса "человек-компьютер". К первому из них обычно относят дополнительные коммуникационные порты, создаваемые в компьютере с помощью конвертеров RS-232—USB. Для работы с ними требуется, как правило, писать собственные компьютерные программы. Устройства второго класса используют готовые HID-драйверы системы Windows, что значительно облегчает задачу программиста, впервые столкнувшегося с USB. По сути дела, никакой программы составлять не приходится, достаточно разобраться в протоколе обмена информацией. Разработанные адаптеры построены на МК ATmega8 [5]. Его программа также должна содержать драйвер USB. В настоящее время подобные драйверы для МК семейства AVR разрабатывают, как правило,на базе библиотек драйверов словацкого радиолюбителя Игоря Чешко [6], написанных на языке ассемблера, или библиотек, предлагаемых фирмой Objective Development [7] (на языке С с ассемблерными вставками).

Обе библиотеки распространяются бесплатно и по объему объектного кода дают приблизительно одинаковые результаты. Однако вторая библиотека предпочтительнее по корректности обработки запросов прерываний и быстродействию. Кроме того, исходные тексты драйверов Objective Development гораздо компактнее и нагляднее, они проще в понимании и легче поддаются корректировке. По этим причинам они и использованы в предлагаемой вниманию читателей разработке. Для джойстиков от игровых приставок Dendy, Sega и PSX были разработаны отдельные адаптеры, имеющие в своей основе одинаковый микроконтроллерный узел, схема которого изображена на рис. 1. Конденсаторы СЗ и С4 — элементы типовой схемы подключения кварцевого резонатора ZQ1 к МК DD1. К унифицированной розетке USB-B (X1), аналогичной устанавливаемой в принтерах, сканерах и в других периферийных устройствах с интерфейсом USB, подключают вилку типа В стандартного USB-кабеля. Вилку типа А этого кабеля вставляют в USB-розетку компьютера.



Через резистор R1 на интерфейсную линию D- подано напряжение, необходимое, чтобы компьютер мог опознать подключенный к нему адаптер как USB-устройство, работающее в режиме LS. Резисторы R3, R4 подавляют "звон" на перепадах передаваемых импульсных сигналов, стабилитроны VD1, VD2 — защитные. Напряжение питания 5 В поступает на адаптер по линии VBus интерфейса USB. Конденсаторы С1 и С2 снижают уровень импульсных помех. Установка МК в исходное состояние происходит автоматически при подаче питания. Ток, потребляемый адаптером вместе с джойстиками, не превышает 20…30 мА. Для защиты от случайных замыканий последовательно в цепь VBus рекомендуется включить плавкую вставку на 0,1…0,25 А. Яркость светодиода HL1 зависит от номинала резистора R2. Мигание светодиода приблизительно два раза в секунду свидетельствует о нормальной работе адаптера. Разъем Х2 служит для загрузки программы в МК, уже установленный на плату. Назначение его контактов соответствует рекомендованному в [8]. Этот разъем можно исключить, если М К будет заранее запрограммирован в панели программатора, и в дальнейшем модифицировать его программу не предполагается. Джойстики соединяют с микроконтроллерным узлом по схемам, показанным на рис. 2 (до четырех джойстиков от Dendy), на рис. 3 (до двух джойстиков от Sega) и на рис. 4 (до двух джойстиков от PSX). Возможность подключить одновременно несколько джойстиков удобна для любителей игр с несколькими участниками.


Вилки ХЗ—Х6 на рис. 2 — DB-9M или DB-15M в зависимости от типа розеток, которыми оснащены подключаемые джойстики. Номера выводов девятиконтактных разъемов приведены в скобках. Вилки на рис. 3 — DB-9M, а розетки на рис. 4 — специальные от приставки PSX. На рис. 4 есть диод VD4, показанный пунктиром. Теоретически, чтобы понизить напряжение питания с 5 до 3,5 В, необходимых для джойстика от приставки PSX, такой диод должен быть. Однако на практике с его установкой возникают ложные срабатывания при одновременном нажатии четырех и более кнопок джойстика. К входным линиям портов МК программно подключены внутренние резисторы, соединяющие их с плюсом источника питания. Это уменьшает наводки и устраняет ложные срабатывания, когда контакты разъемов, к которым не подключены джойстики, "висят в воздухе".

Адаптеры собирают на печатных платах, изображенных на рис. 5—7, для джойстиков от видеоприставок Dendy, Sega и PSX соответственно. Плата для Dendy рассчитана на подключение к ней не более двух джойстиков, и только с разъемами DB-9. Под большее число джойстиков или под разъемы DB-15 ее придется переделать. Как вариант, допускается обойтись вообще без разъемов, припаяв провода джойстиков прямо к контактным площадкам на плате. Наиболее дефицитные разъемы для джойстиков от приставки PSX можно заменить семью одиночными проводами с припаянными к ним гнездами подходящего размера от других разъемов. Изолировав места пайки отрезками полихлорвиниловой трубки, гнезда надевают на штыри вилки джойстика.



Расположение деталей адаптеров, практически идентичное на платах всех трех вариантов, показано на рис. 8. Исключение представляет диод VD3, его устанавливают только на плате для PSX. На ней же иначе расположены контактные площадки под разъемы ХЗ и Х4. При отсутствии указанного на схеме микроконтроллера ATmega8-16PI с максимальной тактовой частотой 16 МГц можно попробовать заменить его на ATmega8L-8PI. Формально его максимальная тактовая частота — 8 МГц, но практика показывает, что при напряжении питания 5 В ±5 % большинство этих микросхем на частоте 12 МГц paботают устойчиво. Возможна и замена микроконтроллера с "индустриальным" допустимым интервалом рабочей температуры (буквы I или U в индексе) на "коммерческий" (с буквой С в индексе), не рассчитанный на работу при отрицательной температуре. Каждый из трех вариантов адаптера использует свою собственную программу МК, причем разную, в зависимости от максимального числа подключаемых джойстиков. Например, для джойстиков от Dendy имеются четыре версии программы, обслуживающие один, два, три или четыре джойстика. Дело в том, что информация по интерфейсу USB в режиме LS передается пакетами (транзакциями), следующими с периодом 10 мс. Определение состояния кнопок и рычагов джойстика программой МК занимает приблизительно 9 мс. Поэтому за одну транзакцию компьютер имеет возможность получить информацию о состоянии только одного джойстика. В случае, когда джойстиков несколько, адаптер передает информацию о них поочередно по кругу. При двух джойстиках период обновления информации о каждом из них равен 20 мс, а при четырех достигает 40 мс, что может заметно ухудшить оперативность управления объектами игры. Поэтому, если не планируются игры с большим числом участников, стоит загрузить в МК версию программы, рассчитанную на минимально необходимое число джойстиков. Если потребуется, то МК можно перепрограммировать практически неограниченное число раз. Состояние конфигурационных битов при его программировании должно соответствовать рис. 9.

 

Имена прилагаемых к статье загрузочных файлов (НЕХ-файлов) состоят из сокращенного названия видеоприставки и цифры, означающей максимальное число подключаемых к адаптеру джойстиков. Для приставки Sega имеется вариант (Segal-2.hex), позволяющий пользоваться двумя подключенными к адаптеру джойстиками поочередно. В этом случае мигание светодиода HL1 с частотой 0,5 Гц показывает, что действует джойстик, подключенный к разъему ХЗ, а с частотой 5 Гц — подключенный к разъему Х4. К собранному и запрограммированному адаптеру подключают один или несколько джойстиков. Их число не должно превышать допустимого для используемой версии программы МК. Затем адаптер стандартным USB кабелем соединяют с компьютером (допускается "горячее" подключение к работающему компьютеру). Через несколько секунд адаптер будет автоматически опознан системой Windows-XP как HID-устройство. В системе Windows-98SE необходимо предварительно установить все предлагаемые фирмой Microsoft патчи, в том числе 240075up.exe (). Просмотреть свойства вновь подключенных USB-джойстиков можно, пройдя по пути "Пуск->Настройка->Панель управления—>Игровые устройства->Свойства". Например, у джойстика от Dendy будут отображены четыре кнопки и одна ось, от Sega — восемь кнопок и одна ось, для PSX — 12 кнопок, одна ось и две ручки управления, причем две кнопки и обе ручки действуют только в "аналоговом" режиме джойстика. Калибровать джойстики не требуется. HID-джойстики могут заменять друг друга. Например, в эмуляторах игр Dendy успешно функционируют джойстики от Sega и PSX. Можно и наоборот, только кнопок в некоторых играх не хватит. Перед игрой джойстики настраивают в меню опций. Еще одна возможность — использовать USB-джойстики от игровых приставок в обычных компьютерных играх. Это вполне реально, поскольку джойстики прописываются в системе как стандартные HID-манипуляторы с возможностью последующего переназначения кнопок.

Скачать прошивку и печатные платы (P-CAD 2001) , а также схемы



   
zaa-1978 # 1
 
 
прикольно я когдато мучился подключал!!!прям к ком порту!!!


   
Fermer12 # 2
 
 
ктонибуть собрал эту схему! cool


   
zaa-1978 # 3
 
 
пока вроде никто несобирал! wink


   
Nikolaich # 4
 
 
Я вот чето не понял… Я конечно не радиоэлектронщик но мне спаяет такую плату знакомый. А вот че дальше делать? Я имею ввиду с прогами! НУ подключу я а дальше то что? непонимаю.... sweated


   
zaa-1978 # 5
 
 
нужно прошить микруху тоисть контроллер атмегу8! после всего етого ты подключаеш джойстик через ету плату в юсб и всё можеш на компе играть с помощью джойстика! biggrin


   
iRed # 6
 
 
я собирал ! оч прикольная весчь wink


   
pokorchik # 7
 
 
Я тоже собрал!!!Все заработало и определило сразу же!Главное собрать все по схеме !!!


   
Payotainnom # 8
 
 
Собираем базы клиентов по интернет
Тел +79133913837
ICQ: 6288862
Skype: s.3837
Email: prodawez@mixmail.com


   
кт3102 # 9
 
 
у меня не заработало.....=((
система видит как неизвестное устройство.....


   
SolderMan # 10
 
 
Тут по-моему контакты ISP неправильно расположены, на плате


   
SolderMan # 11
 
 
а для чего нужен R5? про него ничего не сказано, для подтяжки? или от помех?


   
Nikolai4 # 12
 
 
SolderMan, R5 подтяжка, это стандартное решение для AVR контроллеров, пойдет и 10к, это выход сброса. ISP - смотри сам, я стандарта не знаю у меня все программаторы самодельные.


   
кт3102 # 13
 
 
заработало без вопросов при первом же включени.
тогда как собирал раньше били проблеми с фюзами.
Пробовал с джостиками денди 1
работает отлично
большое спасибо !


   
Steklorez # 14
 
 
Цитата: кт3102
у меня не заработало.....=((
система видит как неизвестное устройство.....

у меня было так же, проблема была в инверсии фыюзов, т. к. прошивал в uniprof

подскажите кто-нибуть, собрал, как джойстик денди комп определяет, но в свойствах нет реакции от нажатия какой-либо кнопки джойстика. джойстик 100п рабочий. Что это может быть, с чего начать искать причину?


   
lucifern # 15
 
 
в архиве не вижу плат и схем


Обновления

Сообщения ФорумаОтветов
3D Модели для Авто0
Бакометр 2335
Touch Start-Stop Engine.587
Кодграберр17
Исправляем AVR фьюзы при помощ …109
Бакометр - измеритель остатка…4
IR конструктор на PIC12F62977
Универсальное зарядное устройство103
бaкoмeтр1974
Двунаправленный автомобильный…2
Программатор GENIUS G8401
Светодиодный тахометр34
Индикаторы ГРИ ИН1 - ИН141
Multiprog1
Управляющая программа LED CUB959
Универсальное зарядное устройство9
Изготовлю печатные платы29
Простой автоматический выключа…25