Адаптер для подключения PS/2 мыши к COM порту

 ps/2 to serial

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

old serial mouse

Интерфейс PS/2 активно использовался в "фирменных" компьютерах начиная с 286 (IBM PS/2), но COM-порт ещё долго оставался стандартом для подключения мыши и активно применялся до начала 2000 годов (вплоть до "вторых пентиумов" включительно). Т.к. мыши для COM-порта уже давно не производят, то для компьтеров без PS/2 порта остаётся два варианта: приспособить PS/2 или USB мышь. С PS/2 всё намного проще - этот протокол можно реализовать практически на любом бюджетном микроконтроллере, например, на atmega8. В случае USB придётся использовать более серьёзные чипы с аппаратной поддержкой USB в режиме хоста. Да, рано или поздно PS/2 мыши отомрут, но посколько сейчас их ещё можно приобрести без проблем, то этот вариант видится наиболее оптимальным.

В сети попалось готовое решение адаптера (к сожалению, автор его уже удалил). Исходный код был переписан под компилятор AVR GCC и частично переработан, в схему и прошивку были внесены некоторые изменения, и исправлена ошибка в схеме (хоть и запозданием - уже после изготовления печатных плат), увеличена скорость опроса мыши и внесены мелкие улучшения.

Адаптер построен на микроконтроллере atmega8 и преобразователи уровней для COM-порта MAX232. Микроконтроллер принимает данные от PS/2 мыши и передаёт их через UART.

Схема адаптера:

схема адаптера

Плату развёл так, чтобы на ней можно было установить как DB-9 вилку, позволяющую втыкать плату адаптера в компьютер вместо мыши, так и разъём IDC-10 для подключения шлейфом непосредственно к материнской плате или мультикарте. В последнем случае адаптер можно установить в корпус и вывести наружу PS/2 розетку.

печатная плата адаптера

Адаптер требует питания +5В для себя и подключаемой мыши. Увы, запитать его от COM-порта не представляется возможным, т.к. оптические мыши едят электричества больше, чем их механические соплеменники. Да и сам адаптер тоже надо чем-то питать, и нагрузочный способности выводов COM-порта для этого явно недостаточно. Отдельного разъёма питания на плате я делать не стал, питание подаётся на 6-выводный разъём программатора ISP, на плате эти выводы подписаны.

адаптер в сборе

Кроме перечисленных разъёмов на плате присутствуют три джампера:

Mode
Если джампер не замкнут, адаптер эмулирует обычную serial-мышь, работающую по протоколу Microsoft. Протокол обмена 1200 бод, 7 бит данных, 1 стоп-бит, без контроля чётности. Если джампер замкнут, адаптер эмулирует мышь с протоколом EM84520.
Speed
Этой группой джамперов можно настроить скорость перемещения мыши: 1, 2, 3 - чем больше, тем быстрее. Вообще, эта группа джамперов работает как кнопки и выбор запоминается в энергонезависимой памяти МК (т.е., после сохранения скорости джампер можно вынуть)
PWR: DTR/RTS
Обычная Serial-мышь питается от COM-порта. Она может питаться либо от сигнала DTR (Data terminal ready), либо от RTS (Request to send). Т.е., чтобы включить мышь, компьютер выставляет на одном из этих выводов высокий уровень. Адаптер использует этот вывод в качестве сигнала включения, чтобы он начал посылать данные в компьютер, на входе PWR должен быть высокий уровень.

Светодиод D1 светится при получении данных от PS/2 мыши, т.е., при её перемещении, нажатии клавиш или вращении колёсика.

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

Ошибка была исправлена в плате v1.1 (синяя паяльная маска). Кроме того, на плате был разведён разъём для подключения внешней планки с PS/2 гнездом и второй светодиод (показывает, что компьютер включает мышь, подавая на неё питание).

печатная плата адаптера v.1.1
адаптер в сборе v.1.1

Конфигурация фьюзов:

фьюзы адаптера

Исходники проекта на github

Излишки плат и собранные устройства - в магазине

Рейтинг: 
0
Голосов еще нет