понедельник, 25 мая 2015 г.

Адаптация оптических мышей для Амиги

Пошаговая инструкция по доступной для каждого адаптации


Варианты адаптации

  • Немецкий: подключение квадратурных выходов сенсора к порту Амиги напрямую. Автор MastaTabs, апрель 2014
  • Русский: подключение квадратурных выходов сенсора через буферные инверторы. Автор StarCat, февраль 2014
  • Чешский: изготовление собственной печатной платы методом ЛУТ. Автор EXA, март 2014

Как можно видеть, идея родилась впервые у Жиржи Резека из домашнего чешского сервис-центра Servis EXA, а затем была творчески переосмыслена в России (AiC), и наконец Германии (a1k.org). На изначального автора никто конечно не ссылался (первый ссылаюсь) или всех осенило одновременно (весна же). К вопросу о том откуда что берётся. =)

Наглядно покажу чем отличаются практические реализации, а Вы уже выберите по вкусу. Я буду описывать дальше свою (русскую) реализацию - те кому она не подходит (привет, Useless ;) могут дальше не читать.

Немецкая Русская Чешская
Чисто немецкая педантичность Мышь на гусеничном ходу витой паре Кнедлики

Схема подключения


StarCat был немногословен в своём сообщении, поэтому пришлось хорошо изучить вопрос. Схемы рисовать не мастак, чисто по-менеджерски нарисовал схемку в LibreOffice Draw (кликабельно). Можно опять же брать и делать. Ошибки распайки в исходной картинке StarCat были проверены на практике и исправлены, в остальном те же яйца - вид сбоку.


Для тех кто хочет указать свой копирайт (в фантазии не ограничиваю) - исходный файл.

Шаг 1 - Покупаем необходимое


Если что-то из нижеперечисленного у Вас уже есть, себестоимость будет ещё ниже. Цены приведены по состоянию на май 2015 г.

МатериалСтоимость
Оптическая мышь
(PS/2 или PS/2+USB)
от 100 р.
Мягкий патч-корд 1,5-2 м
(или любой тонкий кабель
на 8-10 solid-жил)
до 250 р.
Микросхема К561ЛН2
(аналог CD4049AE)
29 р.
DIP-панель SCS-16 8 р
Гнездо DIN DB-9F 13 р.
Корпус DP-9C 21 р.

ИТОГО: 421 р.


Необходима оптическая мышка построенная на сенсоре обладающем квадратурными выходами (Xa, Xb, Ya, Yb). Мне известны 10 таких сенсоров: ADNS-2001, ADNS-2051, ADNS-2030, PAN3201DH (1,8V!), PAN3601DH, PAN3601DH-NF, PAW3602DH, PAW3602DH-NF, PAW3603DH, GL603USB-B. Из них наиболее предпочтительны рассчитанные на напряжение 5В. Микросхема К561ЛН2 имеет рабочий диапазон от 3 до 15 В и обеспечивает согласование уровней (за что её собственно и любят). Полный аналог К561ЛН2 - микросхема CD4049AE имеет другую распиновку, причём встречается как в корпусе DIP-14, так и DIP-16. Она также подойдёт, стоит дороже.

Идеально подходят мышки Logitech M-BJ58 и M-BJ69. Если верить Google должны подойти также Logitech M-BD69, A4Tech BW-26, Oklick 710L, 725L, Cherry M-BD70, двухсенсорная мышка Logitech Mouseman Dual Optical, уникальный манипулятор RTR-720 Mark II, элитарные трекболы Kensington серии Optical Expert Mouse. Самые буйные могут попытаться сделать из беспроводных Apacer M811 и M821 проводные оптические для Амиги (это без меня).

Косвенным показателем подходящей мышки является указание производителем PS/2+USB, что требует дополнительной интерфейсной микросхемы т.к. в большинстве мышек сегодня поддержка USB интегрирована в сам сенсор, а его корпус на выводах усох до минимума необходимого USB (D+, D-, земля и питание). Стоят универсальные мышки дороже, а квадратурные сенсоры для них продолжают изготавливать и в Китае, и на Тайване.

Большой проблемой является кабель. Минимально нам необходимо 8 жил, если хотим добавить 3-ю кнопку - 9 жил. Можно использовать мягкий патч-корд UTP Cat 5e отрезав ~ 1,5 м. Его мягкости не вполне хватает хотя он и лучше шлейфа. Гениальные идеи насчёт кабелей ШТЛП-8 и КСПВ-10 посещали меня и моих друзей. Это ещё хуже. Часто используют промышленный кабель от амижной мышки, но это даёт нам только 2 кнопки и потерю родной ретро-мыши. Встречается гибкий монтажный кабель на 9 жил и я даже нашёл себе такой, но марку не знаю. Ищущий - да обрящет.

Внимание на панельку. Лучше использовать SCS-16, хотя у микросхемы всего 14 ног. Во-первых, CD4049(AE) чаще встречается всё-таки в корпусе DIP-16 (если не найдётся К561ЛН2 в DIP-14). Во-вторых, нам необходимы вырез между контактными группами и вырезы по бокам панельки со стороны платы. Последнее встречается по моим наблюдениям начиная с SCS-16.


Шаг 2 - Выпаиваем интерфейсную микросхему


Разбираем нашу мышку (у меня Logitech M-BJ58).


Достаём плату и смотрим на неё спереди (снимаем скобу). Интерфейсный чип CP5928AM занимается согласованием для PS/2 + USB. Вся часть схемы касающаяся его подключения к сенсору нам не нужна и более того - м.б. вредна.


Переворачиваем плату. Нам предстоит взять паяльник, оловоотсос и отпаять интерфейсный чип. Он прекрасно отпаивается при температуре ~ 350 °C. Если из паяльников у Вас кочерга, а оловоотсоса вообще нет, прежде чем продолжать - купите. Паяльник с керамическим нагревателем и регулятором 30-50 Вт типа этого стоит 500-750 руб, тут говорить вообще не о чем. Оловоотсос для этой операции также абсолютно необходим. У меня Solomon SH-817B.


Да! Мы сделали это! =)


Шаг 2 - Разводим питание и кнопки


На краю платы любой мышки есть разъём на 4-5 pin к которому подключается мышиный кабель. 5 pin в Logitech M-BJ58 как раз хватает для подключения +5В, GND и 3 кнопок мыши. Используем существующую распайку по GND и +5В, а pin относящиеся к +Data, -Data и Shield аккуратно отделим от дорожек скальпелем - к ним мы позже припаяем перемычки. Распайка разъёма:

Сигнал Цвет
+Data зелёный
-Data белый
+5V красный
Shield чёрный
GND чёрный

Подключаем GND и +5V - светодиод не загорается. Питание зависимо от интерфейсного чипа который мы выпаяли. Заводить питание через дорожки этого чипа не будем, чуть позже мы их вообще уничтожим. Гарантировано +5В доходит до штатной перемычки W1 с которой удобно бросить свою перемычку на 13-ю ногу сенсора A2051.


Аналогичным образом перемычками заводим левую, правую и среднюю (нажимаемую колёсиком) кнопки на этот разъём. Если у нас будет всего 2 кнопки - бросаем перемычку между левой и средней, они удобно находятся рядом. У Вас будет два способа нажать левую кнопку когда микрик на левой раздолбается. =)

Шаг 3 - Разделываем кабель


Сейчас мы можем разделать кабель и подключить к мышиному порту Амиги чтобы посмотреть что у нас уже получается. Для этого нам необходима программа Advanced Amiga Analyzer by Wilcom ходящая по народу под названием Full Test (скачать). Она позволяет визуализировать обращения к портам, нас пока интересуют кнопки. Поскольку мы используем витую пару будет удобным расписать по цветам сигналы, чтобы подключая к мышиной плате знать куда какой идёт. Я сделал это так:

Pin Сигнал Цвет
1 Vp синий
2 Hp бело/синий
3 VQp зелёный
4 HQp бело/зелёный
5 M btn -
6 L btn бело/оранжевый
7 +5V оранжевый
8 GND коричневый
9 R btn бело/коричневый

Со стороны порта (лучше использовать кембрики, а не как на фотографии).


Со стороны платы. У нас выделились две линии: 1) питание, земля и кнопки и 2) квадратуры которые пойдут отдельно.


Смотрим что получается в тесте - нажимаем кнопки. Имеем ввиду что после запуска теста курсор находится в верхнем левом углу и нажатие левой кнопки закроет окно. Я не сразу понял почему программа закрывается. Лучше предварительно отогнать куда-нибудь курсор старой мышкой, по горячему.. =)


Шаг 4 - Подключаем согласование


Микросхему будем ставить на панельку SCS-16 и подключать согласно схеме в начале статьи. Все дорожки на плате касающиеся интерфейсного чипа нам не нужны. Поэтому обводим скальпелем все его контакты на обратной стороне платы. Также нам не нужны все SMD-компоненты которые там напаяны. Грубо говоря, сенсор будет "висеть в воздухе", получать свои +5В и GND, управлять светодиодом и отдавать нам квадратуры.

Будем аккуратны и не повредим дорожки необходимые для управления светодиодом. К светодиоду подключаются 6-я нога (XY_LED - управление светодиодом) и 14-я нога (R_BIN - текущий резистор) сенсора A2051. Для изменения яркости свечения светодиода он просто запитывается через разные сопротивления. На 13-ю ногу (Vdd) сенсора A2051 подаётся +5V, а на 12-ю и 10-ю ноги (GND) - земля. Вот дорожки с этих ног/выводов - жалеем. Всё остальное уничтожается. Затем запаиваем панельку.

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

Удобно использовать разноцветные провода от той же витой пары для обозначения сигналов. Они достаточно жесткие (и здесь это - плюс), чтобы сохранять свою форму будучи выгнутыми. Также их толщина не нарушит клиренс сенсора равный 2,1 мм. При его нарушении сенсор просто не будет работать. Вот как выглядит клиренс с запаянными проводами. Также здесь хорошо видно как из под панельки через отсверленную прорезь выведены квадратуры с обратной стороны платы.


Помним что панелька у нас 16-ти ногая, интерфейсный чип был вообще 18-ти ногий, а наша микросхема имеет 14-ть ног и не ошибаемся в распайке! Проще всего припаять выводы со 2-й (V) и 4-й (H) ног к одной витой паре (синий и бело/синий) и выводы с 6-й (VQ) и 8-й (HQ) ног - ко второй витой паре (зелёный и зелёно/белый). После этого нам останется самая малость.

Припаиваем 4 перемычки между микросхемой К561ЛН2 и нашим сенсором (распайка для A2051). Всё очень удобно находится рядом.

К561ЛН2 <- сигнал -> ADNS-2051
1 Ya 5
3 Xb 4
5 Yb 3
9 Xa 2

Самые внимательные заметят здесь ошибку: Xb и Yb поменялись местами. Но иначе нам пришлось бы бросать перемычку поверх перемычки что недопустимо. Проще поменять их обратно при подключении выведенных ранее квадратур.

Теперь запитаем нашу микросхему от сенсора. С 13-й ноги сенсора на 14-ю ногу К561ЛН2 бросим перемычку +5V (красный). С 10-й ноги сенсора на 7-ю ногу К561ЛН2 бросим GND (коричневый). Прикладываем площадку с линзами HDNS-2100 и убеждаемся что никакие перемычки не мешают ей стоять как положено. С схемой закончили, должно получиться что-то вроде этого:



Шаг 4 - Подключаем плату


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

Кабель <- сигнал -> Плата
синий Ya бело/зелёный
бело/синий Xb бело/синий
зелёный Yb зелёный
бело/зелёный Xa синий

Если Вы в точности следовали инструкциям после подключения светодиод загорится и тест покажет перемещение курсора с зажигающимися контактами на мышином порту. Если нет - смотрите где ошиблись при подключении платы. Косвенную информацию может дать перемещение курсора только по горизонтали или только по вертикали. Если курсор кружит и елозит на одном месте - все сигналы на плате подключены неверно. Ничего страшного: отпаиваем по одному (отключая мышь) и смотрим на результат, комбинаций не так много (подключение по цветам выше - верное). LEFT/RIGHT/UP/DOWN на рисунке разъёма в тесте ничего не значат (и распайка эта неверна), направления верны только для джойстика. Но пары сигналов H и HQ, также как V и VQ отвечают за горизонтальное и вертикальное перемещение соответственно.

Шаг 5 - Собираем мышку


После того как Вы добились работающей мышки (800 dpi !) осталось только подкоротить и уложить провода. Рекомендую пользоваться кембриками. На фотографии ниже мышка у меня подключена уже не по витой паре, а по 9-ти жильному монтажному кабелю (подключена и 3-я кнопка). Фотографию платы с уложенной витой парой своевременно не сделал, извиняюсь. =)


И небольшой ролик демонстрирующий работу адаптированной для Амиги оптической мыши Logitech M-BJ58:


Надеюсь что доставил Вам интересное хобби выходного дня. ;)

понедельник, 4 мая 2015 г.