В этой статье мы рассмотрим принципы работы сенсоров оптических мышей, прольем свет на историю их технологического развития, а также развенчаем некоторые мифы, связанные с оптическими «грызунами».

Кто тебя выдумал…

Привычные для нас сегодня оптические мыши ведут свою родословную с 1999 года, когда в массовой продаже появились первые экземпляры таких манипуляторов от Microsoft, а через некоторое время и от других производителей. До появления этих мышей, да и еще долго после этого, большинство массовых компьютерных «грызунов» были оптомеханическими (перемещения манипулятора отслеживались оптической системой, связанной с механической частью - двумя роликами, отвечавшими за отслеживание перемещения мыши вдоль осей × и Y; эти ролики, в свою очередь, вращались от шарика, перекатывающегося при перемещении мыши пользователем). Хотя встречались и чисто оптические модели мышей, требовавшие для своей работы специального коврика. Впрочем, такие устройства встречались не часто, да и сама идея развития подобных манипуляторов постепенно сошла на нет.

«Вид» знакомых нам нынче массовых оптических мышек, базирующихся на общих принципах работы, был «выведен» в исследовательских лабораториях всемирно известной корпорации Hewlett-Packard. Точнее, в ее подразделении Agilent Technologies, которое только сравнительно недавно полностью выделилось в структуре корпорации НР в отдельную компанию. На сегодняшний день Agilent Technologies, Inc. - монополист на рынке оптических сенсоров для мышей, никакие другие компании такие сенсоры не разрабатывают, кто бы и что не говорил вам об эксклюзивных технологиях IntelliEye или MX Optical Engine . Впрочем, предприимчивые китайцы уже научились «клонировать» сенсоры Agilent Technologies, поэтому, покупая недорогую оптическую мышь, вы вполне можете стать владельцем «левого» сенсора.

Откуда берутся видимые отличия в работе манипуляторов, мы выясним чуть позднее, а пока позвольте приступить к рассмотрению базовых принципов работы оптических мышей, точнее их систем слежения за перемещением.

Как «видят» компьютерные мыши

В этом разделе мы изучим базовые принципы работы оптических систем слежения за перемещением, которые используются в современных манипуляторах типа мышь.

Итак, «зрение» оптическая компьютерная мышь получает благодаря следующему процессу. С помощью светодиода, и системы фокусирующих его свет линз, под мышью подсвечивается участок поверхности. Отраженный от этой поверхности свет, в свою очередь, собирается другой линзой и попадает на приемный сенсор микросхемы - процессора обработки изображений. Этот чип, в свою очередь, делает снимки поверхности под мышью с высокой частотой (кГц). Причем микросхема (назовем ее оптический сенсор) не только делает снимки, но сама же их и обрабатывает, так как содержит две ключевых части: систему получения изображения Image Acquisition System (IAS) и интегрированный DSP процессор обработки снимков.

На основании анализа череды последовательных снимков (представляющих собой квадратную матрицу из пикселей разной яркости), интегрированный DSP процессор высчитывает результирующие показатели, свидетельствующие о направлении перемещения мыши вдоль осей × и Y, и передает результаты своей работы вовне по последовательному порту.

Если мы посмотрим на блок-схему одного из оптических сенсоров, то увидим, что микросхема состоит из нескольких блоков, а именно:

  • основной блок, это, конечно же, Image Processor - процессор обработки изображений (DSP) со встроенным приемником светового сигнала (IAS);
  • Voltage Regulator And Power Control - блок регулировки вольтажа и контроля энергопотребления (в этот блок подается питание и к нему же подсоединен дополнительный внешний фильтр напряжения);
  • Oscillator - на этот блок чипа подается внешний сигнал с задающего кварцевого генератора, частота входящего сигнала порядка пары десятков МГц;
  • Led Cоntrоl - это блок управления светодиодом, с помощью которого подсвечивается поверхность под мышью;
  • Serial Port - блок передающий данные о направлении перемещения мыши вовне микросхемы.

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

Нужно уточнить, что информацию о перемещении мыши микросхема оптического сенсора передает через Serial Port не напрямую в компьютер. Данные поступают к еще одной микросхеме-контроллеру, установленной в мыши. Эта вторая «главная» микросхема в устройстве отвечает за реакцию на нажатие кнопок мыши, вращение колеса прокрутки и т.д. Данный чип, в том числе, уже непосредственно передает в ПК информацию о направлении перемещения мыши, конвертируя данные, поступающие с оптического сенсора, в передаваемые по интерфейсам PS/2 или USB сигналы. А уже компьютер, используя драйвер мыши, на основании поступившей по этим интерфейсам информации, перемещает курсор-указатель по экрану монитора.

Именно по причине наличия этой «второй» микросхемы-контроллера, точнее благодаря разным типам таких микросхем, довольно заметно отличались между собой уже первые модели оптических мышей. Если о дорогих устройствах от Microsoft и Logitech слишком плохо отозваться я не могу (хотя и они не были вовсе «безгрешны»), то масса появившихся вслед за ними недорогих манипуляторов вела себя не вполне адекватно. При движении этих мышей по обычным коврикам курсоры на экране совершали странные кульбиты, скакали чуть ли не на пол Рабочего стола, а иногда… иногда они даже отправлялись в самостоятельное путешествие по экрану, когда пользователь совершенно не трогал мышь. Доходило и до того, что мышь могла запросто выводить компьютер из режима ожидания, ошибочно регистрируя перемещение, когда манипулятор на самом деле никто не трогал.

Кстати, если вы до сих пор боретесь с подобной проблемой, то она решается одним махом вот так: выбираем Мой Компьютер > Свойства > Оборудование > Диспетчер устройств > выбираем установленную мышь > заходим в ее «Свойства» > в появившемся окне переходим на закладку «Управление электропитанием» и снимаем галочку с пункта «Разрешить устройству вывод компьютера из ждущего режима» (рис. 4). После этого мышь уже не сможет вывести компьютер из режима ожидания ни под каким предлогом, даже если вы будете пинать ее ногами:)

Итак, причина столь разительного отличия в поведении оптических мышей была вовсе не в «плохих» или «хороших» установленных сенсорах, как до сих пор думают многие. Не верьте, это не более чем бытующий миф. Или фантастика, если вам так больше нравится:) В ведущие себя совершенно по-разному мыши часто устанавливались совершенно одинаковые микросхемы оптических сенсоров (благо, моделей этих чипов было не так уж много, как мы увидим далее). Однако вот, благодаря несовершенным чипам контроллеров, устанавливаемых в оптические мыши, мы имели возможность сильно поругать первые поколения оптических грызунов.

Однако, мы несколько отвлеклись от темы. Возвращаемся. В целом система оптического слежения мышей, помимо микросхемы-сенсора, включает еще несколько базовых элементов. Конструкция включает держатель (Clip) в который устанавливаются светодиод (LED) и непосредственно сама микросхема сенсора (Sensor). Эта система элементов крепится на печатную плату (PCB), между которой и нижней поверхностью мыши (Base Plate) закрепляется пластиковый элемент (Lens), содержащий две линзы (о назначении которых было написано выше).

В собранном виде оптический элемент слежения выглядит как показано выше. Схема работы оптики этой системы представлена ниже.

Оптимальное расстояние от элемента Lens до отражающей поверхности под мышью должно попадать в диапазон от 2.3 до 2.5 мм. Это рекомендации производителя сенсоров. Вот вам и первая причина, почему оптические мыши плохо себя чувствуют «ползая» по оргстеклу на столе, всевозможным «полупрозрачным» коврикам и т. п. И не стоит клеить на оптические мыши «толстые» ножки, когда отваливаются или стираются старые. Мышь из-за чрезмерного «возвышения» над поверхностью может впадать в состояние ступора, когда «расшевелить» курсор после пребывания мыши в состоянии покоя становится довольно проблематично. Это не теоретические измышления, это личный опыт:)

Кстати, о проблеме долговечности оптических мышей. Помниться, некоторые их производители утверждали что, дескать «они будут служить вечно». Да надежность оптической системы слежения высока, она не идет ни в какое сравнение с оптомеханической. В то же время в оптических мышах остается много чисто механических элементов, подверженных износу точно так же, как и при господстве старой доброй «оптомеханики». Например, у моей старой оптической мыши стерлись и поотваливались ножки, сломалось колесо прокрутки (дважды, в последний раз безвозвратно:(), перетерся провод в соединительном кабеле, с манипулятора слезло покрытие корпуса… зато вот оптический сенсор нормально работает, как ни в чем не бывало. Исходя из этого, мы смело можем констатировать, что слухи о якобы впечатляющей долговечности оптических мышей не нашли своего подтверждения на практике. Да и зачем, скажите на милость, оптическим мышам «жить» слишком долго? Ведь на рынке постоянно появляются новые, более совершенные модели, созданные на новой элементной базе. Они заведомо совершеннее и удобнее в использовании. Прогресс, знаете ли, штука непрерывная. Каким он был в области эволюции интересующих нас оптических сенсоров, давайте сейчас и посмотрим.

Из истории мышиного зрения

Инженеры-разработчики компании Agilent Technologies, Inc. не зря едят свой хлеб. За пять лет оптические сенсоры этой компании претерпели существенные технологические усовершенствования и последние их модели обладают весьма впечатляющими характеристиками.

Но давайте обо всем по порядку. Первыми массово выпускаемыми оптическими сенсорами стали микросхемы HDNS-2000 (рис. 8). Эти сенсоры имели разрешение 400 cpi (counts per inch), то бишь точек (пикселей) на дюйм, и были рассчитаны на максимальную скорость перемещения мыши в 12 дюймов/с (около 30 см/с) при частоте осуществления снимков оптическим сенсором в 1500 кадров за секунду. Допустимое (с сохранением стабильной работы сенсора) ускорение при перемещении мыши «в рывке» для чипа HDNS-2000 - не более 0.15 g (примерно 1.5 м/с 2).

Затем на рынке появились микросхемы оптических сенсоров ADNS-2610 и ADNS-2620 . Оптический сенсор ADNS-2620 уже поддерживал программируемую частоту «съемки» поверхности под мышью, с частотой в 1500 либо 2300 снимков/с. Каждый снимок делался с разрешением 18х18 пикселей. Для сенсора максимальная рабочая скорость перемещения по прежнему была ограничена 12 дюймами в секунду, зато ограничение по допустимому ускорению возросло до 0.25 g, при частоте «фотографирования» поверхности в 1500 кадров/с. Данный чип (ADNS-2620) также имел всего 8 ножек, что позволило существенно сократить его размеры по сравнению с микросхемой ADNS-2610 (16 контактов), внешне похожей на HDNS-2000. В Agilent Technologies, Inc. задались целью «минимизировать» свои микросхемы, желая сделать последние компактнее, экономнее в энергопотреблении, а потому и удобнее для установки в «мобильные» и беспроводные манипуляторы.

Микросхема ADNS-2610 хотя и являлась «большим» аналогом 2620-й, но была лишена поддержки «продвинутого» режима 2300 снимков/с. Кроме того, этот вариант требовал 5В питания, тогда как чип ADNS-2620 обходился всего 3.3 В.

Вышедший вскоре чип ADNS-2051 представлял собой гораздо более мощное решение, чем микросхемы HDNS-2000 или ADNS-2610, хотя внешне (упаковкой) был также на них похож. Этот сенсор уже позволял программируемо управлять «разрешением» оптического датчика, изменяя таковое с 400 до 800 сpi. Вариант микросхемы также допускал регулировку частоты снимков поверхности, причем позволял менять ее в очень широком диапазоне: 500, 1000,1500, 2000 или 2300 снимков/с. А вот величина этих самых снимков составляла всего 16х16 пикселей. При 1500 снимках/с предельно допустимое ускорение мыши при «рывке» составляло по прежнему 0.15 g, максимально возможная скорость перемещения - 14 дюймов/с (т. е. 35.5 см/с). Данный чип был рассчитан на напряжение питания 5 В.

Сенсор ADNS-2030 разрабатывался для беспроводных устройств, а потому имел малое энергопотребление, требуя всего 3.3 В питания. Чип также поддерживал энергосберегающие функции, например функцию снижения потребления энергии при нахождении мыши в состоянии покоя (power conservation mode during times of no movement), переход в режим «сна», в том числе при подключении мыши по USB интерфейсу, и т.д.. Мышь, впрочем, могла работать и не в энергосберегающем режиме: значение «1» в бите Sleep одного из регистров чипа заставляло сенсор «всегда бодрствовать», а значение по умолчанию «0» соответствовало режиму работы микросхемы, когда по прошествии одной секунды, если мышь не перемещалась (точнее после получения 1500 совершенно одинаковых снимков поверхности) сенсор, напару с мышью, переходил в режим энергосбережения. Что касается остальных ключевых характеристик сенсора, то они не отличались от таковых у ADNS-2051: тот же 16-и контактный корпус, скорость перемещения до 14 дюймов/с при максимальном ускорении 0.15 g, программируемое разрешение 400 и 800 cpi соответственно, частоты осуществления снимков могли быть точно такими же, как и у вышерассмотренного варианта микросхемы.

Такими были первые оптические сенсоры. К сожалению, им были свойственны недостатки. Большой проблемой, возникающей при передвижением оптической мыши по поверхностям, особенно с повторяющимся мелким рисунком, являлось то, что процессор обработки изображений порой путал отдельные похожие участки монохромного изображения, получаемые сенсором и неверно определял направление перемещения мыши.

В итоге и курсор на экране перемещался не так, как требовалось. Указатель на экране даже становился способен на экспромт:) - на непредсказуемые перемещения в произвольном направлении. Кроме того, легко догадаться, что при слишком быстром перемещении мыши сенсор мог вообще утратить всякую «связь» между несколькими последующими снимками поверхности. Что порождало еще одну проблему: курсор при слишком резком перемещении мыши либо дергался на одном месте, либо происходили вообще «сверхъестественные»:) явления, например, с быстрым вращением окружающего мира в игрушках. Было совершенно ясно, что для человеческой руки ограничений в 12-14 дюймов/с по предельной скорости перемещения мыши явно мало. Также не вызывало сомнений, что 0.24 с (почти четверть секунды), отведенные для разгона мыши от 0 до 35.5 см/с (14 дюймов/с - предельная скорость) это очень большой промежуток времени, человек способен двигать кистью значительно быстрее. И потому при резких движениях мыши в динамичных игровых приложениях с оптическим манипулятором может придтись несладко…

Понимали это и в Agilent Technologies. Разработчики осознавали, что характеристики сенсоров надо кардинально улучшать. В своих изысканиях они придерживались простой, но правильной аксиомы: чем больше снимков в секунду сделает сенсор, тем меньше вероятность того, что он потеряет «след» перемещения мыши во время совершения пользователем компьютера резких телодвижений:)

Хотя, как мы видим из вышеизложенного, оптические сенсоры и развивались, постоянно выпускались новые решения, однако развитие в этой области можно смело назвать «очень постепенным». По большому счету, кардинальных изменений в свойствах сенсоров так и не происходило. Но техническому прогрессу в любой области порой свойственны резкие скачки. Случился такой «прорыв» и в области создания оптических сенсоров для мышей. Появление оптического сенсора ADNS-3060 можно считать действительно революционным!

Лучший из

Оптический сенсор ADNS-3060 , по сравнению со своими «предками», обладает поистине впечатляющим набором характеристик. Использование этой микросхемы, упакованной в корпус с 20-ю контактами, обеспечивает оптическим мышам невиданные ранее возможности. Допустимая максимальная скорость перемещения манипулятора выросла до 40 дюймов/с (то есть почти в 3 раза!), т.е. достигла «знаковой» скорости в 1 м/с. Это уже очень хорошо - вряд ли хоть один пользователь двигает мышь с превышающей данное ограничение скоростью столь часто, чтобы постоянно чувствовать дискомфорт от использования оптического манипулятора, в том числе это касается и игровых приложений. Допустимое же ускорение выросло, страшно сказать, во сто раз (!), и достигло величины 15 g (почти 150 м/с 2). Теперь на разгон мыши с 0 до предельных 1 м/с пользователю отводится 7 сотых секунды - думаю, теперь очень немногие сумеют превзойти это ограничение, да и то, вероятно, в мечтах:) Программируемая скорость осуществления снимков поверхности оптическим сенсором у новой модели чипа превышает 6400 кадров/с, т.е. «бьет» предыдущий «рекорд» почти в три раза. Причем чип ADNS-3060 может сам осуществлять подстройку частоты следования снимков для достижения наиболее оптимальных параметров работы, в зависимости от поверхности, над которой перемещается мышь. «Разрешение» оптического сенсора по прежнему может составлять 400 или 800 cpi. Давайте на примере микросхемы ADNS-3060 рассмотрим общие принципы работы именно чипов оптических сенсоров.

Общая схема анализа перемещений мыши не изменилась по сравнению с более ранними моделями - полученные блоком IAS сенсора микроснимки поверхности под мышью обрабатываются затем интегрированным в этой же микросхеме DSP (процессором), который определяет направление и дистанцию перемещения манипулятора. DSP вычисляет относительные величины смещения по координатам × и Y, относительно исходной позиции мыши. Затем внешняя микросхема контролера мыши (для чего он нужен, мы говорили ранее) считывает информацию о перемещении манипулятора с последовательного порта микросхемы оптического сенсора. Затем уже этот внешний контроллер транслирует полученные данные о направлении и скорости перемещения мыши в передаваемые по стандартным интерфейсам PS/2 или USB сигналы, которые уже от него поступают к компьютеру.

Но вникнем чуть глубже в особенности работы сенсора. Блок-схема чипа ADNS-3060 представлена выше. Как видим, принципиально его структура не изменилась, по сравнению с далекими «предками». 3.3 В питание к сенсору поступает через блок Voltage Regulator And Power Control, на этот же блок возложена функции фильтрации напряжения, для чего используется подключение к внешнему конденсатору. Поступающий с внешнего кварцевого резонатора в блок Oscillator сигнал(номинальная частота которого 24 МГц, для предыдущих моделей микросхем использовались более низкочастотные задающие генераторы) служит для синхронизации всех вычислительных процессов, протекающих внутри микросхемы оптического сенсора. Например, частота снимков оптического сенсора привязана к частоте этого внешнего генератора (кстати, на последний наложены не весьма жесткие ограничения по допустимым отклонениям от номинальной частоты - до +/- 1 МГц). В зависимости от значения, занесенного по определенному адресу (регистру) памяти чипа, возможны следующие рабочие частоты осуществления снимков сенсором ADNS-3060.

Значение регистра, шестнадцатеричное Десятичное значение Частота снимков сенсора, кадров/с
OE7E 3710 6469
12C0 4800 5000
1F40 8000 3000
2EE0 12000 2000
3E80 16000 1500
BB80 48000 500

Как нетрудно догадаться, исходя из данных в таблице, определение частоты снимков сенсора осуществляется по простой формуле: Частота кадров = (Задающая частота генератора (24 МГц)/Значение регистра отвечающего за частоту кадров).

Осуществляемые сенсором ADNS-3060 снимки поверхности (кадры) имеют разрешение 30х30 и представляют собой все ту же матрицу пикселей, цвет каждого из которых закодирован 8-ю битами, т.е. одним байтом (соответствует 256 градациям серого для каждого пикселя). Таким образом, каждый поступающий в DSP процессор кадр (фрейм) представляет собой последовательность из 900 байт данных. Но «хитрый» процессор не обрабатывает эти 900 байт кадра сразу по поступлении, он ждет, пока в соответствующем буфере (памяти) накопится 1536 байт сведений о пикселях (то есть добавится информация еще о 2/3 последующего кадра). И только после этого чип приступает к анализу информации о перемещении манипулятора, путем сравнения изменений в последовательных снимках поверхности.

С разрешением 400 или 800 пикселей на дюйм их осуществлять, указывается в бите RES регистров памяти микроконтроллера. Нулевое значение этого бита соответствует 400 cpi, а логическая единица в RES переводит сенсор в режим 800 cpi.

После того как интегрированный DSP процессор обработает данные снимков, он вычисляет относительные значения смещения манипулятора вдоль осей × и Y, занося конкретные данные об этом в память микросхемы ADNS-3060. В свою очередь микросхема внешнего контроллера (мыши) через Serial Port может «черпать» эти сведения из памяти оптического сенсора с частой примерно раз в миллисекунду. Заметьте, только внешний микроконтроллер может инициализировать передачу таких данных, сам оптический сенсор никогда не инициирует такую передачу. Поэтому вопрос оперативности (частоты) слежения за перемещением мыши во многом лежит на «плечах» микросхемы внешнего контроллера. Данные от оптического сенсора передаются пакетами по 56 бит.

Ну а блок Led Cотtrоl, которым оборудован сенсор, ответственен за управление диодом подсветки - путем изменения значения бита 6 (LED_MODE) по адресу 0x0a микропроцессор оптосенсора может переводить светодиод в два режима работы: логический «0» соответствует состоянию «диод всегда включен», логическая «1» переводит диод в режим «включен только при необходимости». Это важно, скажем, при работе беспроводных мышей, так как позволяет экономить заряд их автономных источников питания. Кроме того, сам диод может иметь несколько режимов яркости свечения.

На этом, собственно, все с базовыми принципами работы оптического сенсора. Что еще можно добавить? Рекомендуемая рабочая температура микросхемы ADNS-3060, впрочем как и всех остальных чипов этого рода, - от 0 0С до +40 0С. Хотя сохранение рабочих свойств своих чипов Agilent Technologies гарантирует в диапазоне температур от -40 до +85 °С.

Лазерное будущее?

Недавно сеть наполнили хвалебные статьи о мыши Logitech MX1000 Laser Cordless Mouse, в которой для подсветки поверхности под мышью использовался инфракрасный лазер. Обещалась чуть ли не революция в сфере оптических мышей. Увы, лично попользовавшись этой мышью, я убедился, что революции не произошло. Но речь не об этом.

Я не разбирал мышь Logitech MX1000 (не имел возможности), но уверен, что за «новой революционной лазерной технологией» стоит наш старый знакомый - сенсор ADNS-3060. Ибо, по имеющимся у меня сведениям, характеристики сенсора этой мыши ничем не отличаются от таковых у, скажем, модели Logitech МХ510 . Вся «шумиха» возникла вокруг утверждения на сайте компании Logitech о том, что с помощью лазерной системы оптического слежения выявляется в двадцать раз (!) больше деталей, чем с помощью светодиодной технологии. На этой почве даже некоторые уважаемые сайты опубликовали фотографии неких поверхностей, дескать, как видят их обычные светодиодные и лазерные мыши:)

Конечно, эти фото (и на том спасибо) были не теми разноцветными яркими цветочками, с помощью которых нас пыталась убедить на сайте Logitech в превосходстве лазерной подсветки системы оптического слежения. Нет, конечно же, оптические мыши не стали «видеть» ничего подобного на приведенные цветные фотографии с разной степенью детализации - сенсоры по-прежнему «фотографируют» не более чем квадратную матрицу серых пикселей, отличающихся между собой лишь разной яркостью (обработка информации о расширенной цветовой палитре пикселей непомерным грузом легла бы на DSP).

Давайте прикинем, для получения в 20 раз более детализированной картинки, нужно, извините за тавтологию, в двадцать раз больше деталей, передать которые могут только дополнительные пиксели изображения, и ни что иное. Известно, что Logitech MX 1000 Laser Cordless Mouse делает снимки 30х30 пикселей и имеет предельное разрешение 800 cpi. Следовательно, ни о каком двадцатикратном росте детализации снимков речи быть не может. Где же собака порылась:), и не являются ли подобные утверждения вообще голословными? Давайте попробуем разобраться, что послужило причиной появления подобного рода информации.

Как известно, лазер излучает узконаправленный (с малым расхождением) пучок света. Следовательно, освещенность поверхности под мышью при применении лазера гораздо лучше, чем при использовании светодиода. Лазер, работающий в инфракрасном диапазоне, был выбран, вероятно, чтобы не слепить глаза возможным все-таки отражением света из-под мыши в видимом спектре. То, что оптический сенсор нормально работает в инфракрасном диапазоне не должно удивлять - от красного диапазона спектра, в котором работает большинство светодиодных оптических мышей, до инфракрасного -«рукой подать», и вряд ли для сенсора переход на новый оптический диапазон был труден. Например, в манипуляторе Logitech MediaPlay используется светодиод, однако также дающий инфракрасную подсветку. Нынешние сенсоры без проблем работают даже с голубым светом (существуют манипуляторы и с такой подсветкой), так что спектр области освещения - для сенсоров не проблема. Так вот, благодаря более сильной освещенности поверхности под мышью, мы вправе предположить, что разница между местами, поглощающими излучение (темными) и отражающими лучи (светлыми) будет более значительной, чем при использовании обычного светодиода - т.е. изображение будет более контрастными.

И действительно, если мы посмотрим на реальные снимки поверхности, сделанные обычной светодиодной оптической системой, и системой с использованием лазера, то увидим, что «лазерный» вариант куда более контрастен - отличия между темными и яркими участками снимка более значительны. Безусловно, это может существенно облегчить работу оптическому сенсору и, возможно, будущее именно за мышами с лазерной системой подсветки. Но назвать подобные «лазерные» снимки в двадцать раз более детализированными вряд ли можно. Так что это еще один «новорожденный» миф.

Какими будут оптические сенсоры ближайшего будущего? Сказать трудно. Вероятно, они перейдут таки на лазерную подсветку, а в Сети уже ходят слухи о разрабатываемом сенсоре с «разрешением» 1600 cpi. Нам остается только ждать.

Компьютерная мышь – это манипулятор для управления компьютером. Такое название манипулятор получил за свое внешнее сходство с природным грызуном. На сегодня она является неотъемлемым атрибутом ПК и позволяет наиболее эффективно взаимодействовать с ним.

До появления операционных систем с графическим интерфейсом, мышь была не так широко распространена. Управление компьютером осуществлялось с помощью ввода команд через клавиатуру, а работа на компьютере требовала высокой квалификации. В принципе и с графическим интерфейсом можно обойтись одной клавиатурой, но это потребует заучивание необходимых комбинаций клавиш для управления, что неприемлемо для рядового пользователя, а мышь очень простое устройство, и научиться работать с ней несложно. Самая простая мышь имеет пару кнопок и колесико между ними, с помощью которых осуществляется какое-либо действие при работе с компьютером. Мышь подключается к компьютера с помощью провода – проводные мыши, или по беспроводному каналу – так называемые беспроводные мыши.

Принцип работы мыши.

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

Виды компьютерных мышей.

Долгое время для управления компьютером использовались механические мыши, в которых в качестве датчика движения использовался металлический обрезиненный шар.


Механическая мышь

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

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


Оптическая мышь

В лазерной мыши , в качестве оптического источника используется лазер, что позволяет увеличить точность позиционирования. Кроме того, лазерная мышь неприхотлива к качеству поверхности, по которой перемещается.


Лазерная мышь

Существуют также более сложные и дорогие манипуляторы – сенсорные, индукционные, гироскопические мыши, которые имеют иной принцип преобразования движения в управляющий сигнал.

Для решения одной из задач мне потребовалось программно получать и обрабатывать изображения небольшого участка поверхности бумаги с очень близкого расстояния. Не получив достойного качества при использовании обычной USB камеры и уже на пол пути в магазин за электронным микроскопом, я вспомнил одну из лекций, на которой нам рассказывали как устроены различные девайсы, в том числе и компьютерная мышка.

Подготовка и немного теории

В подробности принципа работы современной оптической мыши я вдаваться не буду, очень подробно об этом написано (рекомендую прочитать для общего развития).

Погуглив информацию по этой теме и разобрав старую PS/2 мышку Logitech, я увидел знакомую по статьям из интернета картину.

Не очень сложная схема «мышей первого поколения», оптический сенсор по центру и чип интерфейса PS/2 чуть выше. Попавшийся мне оптический сенсор является аналогом «популярных» моделей ADNS2610/ADNS2620/PAN3101. Я думаю, они и их аналоги были массово произведены на одном и том же китайском заводе, получив на выходе разную маркировку. Документация на него нашлась очень легко, даже вместе с различными примерами кода.

Документация гласит, что этот сенсор до 1500 раз в секунду получает изображение поверхности размером 18x18 точек (разрешение 400cpi), запоминает его и с помощью алгоритмов сравнения изображений вычисляет смещение по координатам Х и Y, относительно предыдущей позиции.

Реализация

Для «общения с сенсором» я использовал популярную вычислительную платформу Arduino, а припаяться решил прямо к ножкам чипа.

Подключаем 5V и GND к соответствующим выходам Arduino, а ножки сенсора SDIO и SCLK к цифровым пинам 8 и 9.

Для получения смещения по координатам нужно прочитать значение регистра чипа по адресу 0x02 (X) и 0x03 (Y), а для дампа картинки нужно, сначала записать значение 0x2A по адресу 0x08, а потом 18x18 раз его прочитать оттуда же. Это и будет последнее «запомненное» значение матрицы яркости изображения с оптического сенсора.

Как я реализовал это на Arduino можно посмотреть тут: http://pastebin.com/YpRGbzAS (всего ~100 строк кода).

А для получения и отображения картинки была написана программа на Processing.

Результат

После небольшого «допиливания» программы для своего проекта, я смог получать картинку прямо с оптического сенсора и производить над ней все необходимые вычисления.

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

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

Если вы вдруг захотите повторить это дома, для нахождения мышки с аналогичным сенсором рекомендую искать старые девайсы с интерфейсом PS/2.

Заключение

Хотя получаемое изображение и не очень большое, этого вполне хватило для решения моей задачи (сканнер штрих кода). Получилось очень даже экономично и быстро (мышка за ~100р + Arduino + пару дней на написание кода).

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

Компьютерная мышь является очень полезным и удобным устройством ввода графической информации.

В настоящее время практически каждый персональный компьютер оснащен этим устройством. Операционная система Windows и все программы, предназначенные для работы в ее среде, целиком ориентированы на использование мыши. Фактически все действия в Windows, кроме набора текста, можно сделать без использования клавиатуры, пользуясь только одной мышью. Более того, при отсутствии мыши работа с Windows значительно затрудняется и замедляется.

Конструктивно мышь представляет собой пластмассовую коробочку обтекаемой формы, в которой размещены:

    массивный обрезиненный шарик, вращающийся при перемещении мыши по гладкой поверхности;

    две или три кнопки;

    механизм преобразования вращения шарика в электрические сигналы;

    электронная схема приема и обработки данных о состоянии мыши (координаты мыши и положение кнопок).

Гибким кабелем мышь соединяется с системным блоком компьютера. Иногда вместо кабеля для связи компьютера с мышью используются инфракрасные лучи. В этом случае мышиный провод отсутствует и не мешает работе.

На рисунке показано внутреннее устройство манипулятора "мышь". На рисунке отмечены следующие обязательные компоненты мыши:

1.Фотоизлучатель

2.Фотоприемник

3.Шарик (обычно для лучшего сцепления с поверхностью стола он покрыт резиной.)

4.Вращающийся валик

5.Прижимное колесико

6.Кнопка

7.Кабель

8.Контроллер (специальная микросхема)

В настоящее время наиболее распространены оптомеханические мыши . Их популярность объясняется в первую очередь невысокой стоимостью. Вращение обрезиненного металлического шарика при движении такой мыши передается на два ролика. Один из них расположен вдоль мыши, а второй - поперек. В этом и состоит «механика». Преобразование вращения роликов в электрический сигнал осуществляется с помощью оптоэлектронных датчиков, состоящих из светодиода и приемника, между которыми расположен закрепленный на ролике диск с щелевидными прорезями. При вращении диска луч светодиода то проходит через щели, то прерывается, и на выходе приемника формируются импульсы. Встроенный микропроцессор подсчитывает их и вырабатывает цифровой код, поступающий через интерфейс в ПК, где он обрабатывается драйвером. У оптомеханической мыши есть два ненадежных элемента. Во-первых, это механизм, который превращает перемещение шарика во вращение дисков датчиков. Во-вторых, соединительный кабель, который постоянно подвергается изгибу в процессе работы.

Для устранения первого недостатка вместо шарика в ряде современных моделей мышей используется оптический сенсор перемещения . В таких мышах нет движущихся узлов, поэтому у них высокая точность позиционирования. Первые модели таких устройств поставлялись со специальным «разлинованным» ковриком. При движении датчик работал подобно примитивному сканеру, преобразуя чередование темных и светлых участков на коврике в электрические импульсы. Современные оптические мыши могут работать практически на любой поверхности - датчик реагирует на естественную неравномерность отражательной способности материала. Вместо шарика в нее помещен чувствительный оптический датчик, способный отслеживать движение относительно мельчайших текстур на поверхности скольжения (коврик, лист бумаги и пр.), не заметных для глаза, не говоря уже о царапинах и прочих механических и цветовых неоднородностях. Их перемещение в поле зрения датчика специализированный процессор пересчитывает в приращение линейных координат, соответствующих движению руки пользователя. Оцифровка поверхности под мышью происходит с частотой 1500 раз в секунду.

Устройство и принцип работы оптической мыши

Сегодня оптической мышью уже никого не удивишь. Но лет десять назад, когда только появилось первое поколение оптических "грызунов", не многие могли похвастать таким диковинным манипулятором. А между тем, возможность перемещать курсор с помощью "грызуна" с красным светодиодом в "брюшке" была еще одним шагом вперед в компьютерных технологиях.

Вообще-то в первых оптических мышах было два светодиода, и один из них излучал свет в красном диапазоне, а другой - в инфракрасном. Соответственно было и два фотодиода, которые работали "в паре" с вышеозначенными светодиодами. Для такой мыши был необходим специальный коврик с поверхностью из специального светоотражающего материала, на который наносилась мелкая сетка из синих и перпендикулярных им черных линий. Синие линии поглощали свет красного светодиода, а черные - инфракрасного.

Таким образом, один фотодиод "замечал" проход над синими линиями коврика, а другой - над черными. В момент прохода над линией фотодиод генерировал соответствующий электрический импульс. Контроллер мыши, подсчитывая импульсы, определял направление и величину перемещения.

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

К достоинствам таких мышей можно отнести отсутствие движущихся и инерционных частей, надежность в работе, точность позиционирования. А к недостаткам - коврик, который требовал постоянного ухода и чистки, ну и, как всегда (куда ж без денег), - высокую стоимость. К тому же, при утрате или повреждении коврика мышь утрачивала свою работоспособность. Но в 1999 году фирмой Agilent Technologies была разработана своя технология оптической навигации, для которой коврик и вовсе не требовался. И так как на сегодняшний момент фирмой Agilent выпущено более 75 миллионов сенсоров различных модификаций для оптических мышей, то можно предположить, что данная технология пришлась ко двору как производителям, так и пользователям. К тому же, вышеозначенная фирма выпускает не только оптические сенсоры, но еще и практически все необходимые компоненты для сбора оптической мыши (этакий наборчик "сделай сам" (см. рис.1)), что делает доступным производство оптических мышей даже для небольших (так и хочется добавить "китайских") компаний. На рис.1 показаны два варианта линзы и зажима. Но какой бы из них ни предпочел производитель, принципиально на работу оптической системы это не влияет.

Суть данной технологии заключается в следующем: оптический сенсор последовательно считывает изображения поверхности (кадры), а затем математически определяет направление и величину перемещения.

красный

светодиод

зажим для светодиода

Полная оптическая система состоит из четырех компонентов: оптического сенсора, линзы, красного светодиода и зажима для светодиода. Как она выглядит в собранном виде, можно посмотреть на рис.2.

Оптический

Оптический сенсор включает в себя три функциональных блока: систему считывания изображения (IAS); цифровой сигнальный процессор(DPS); последовательный интерфейс передачи данных.

Конструктивно же оптический сенсор представляет собой микросхему с шестнадцатью ножками (хотя есть вариант и с восемью), на нижней части которой (со стороны ножек) расположен объектив.

За объективом расположена монохромная КМОП (CMOS) камера, которая и фотографирует небольшой участок поверхности площадью около квадратного миллиметра. Кадр поверхности разбивается на маленькие участки (квадраты). Для каждого такого участка вычисляется усредненное значение яркости. Диапазон присваиваемых значений - от 0 до 63, где 0 присваивается черному участку, а 63

Белому. Таким образом, получается мозаичное изображение, состоящее из квадратов различной яркости. Вот один такой квадрат, т.е. элемент изображения, и является точкой привязки, а точнее сказать, одним отсчетом (см. рис.3). И разрешающая способность оптической мыши определяется в отсчетах на дюйм (counts per inch), т.е. cpi, а не dpi, как у обычных мышей. Фирма Agilent выпускает сенсоры с разрешением как 400, так и 800 cpi, причем модели с разрешением 800 cpi могут быть запрограммированы на работу с разрешением 400 cpi. К слову сказать, некоторые фирмы в технических характеристиках своих оптических мышей заявляют разрешение в 420 или 500 cpi. Но просматривая техническую документацию на различные сенсоры, таких характеристик я не встречал. А в то, что какая-нибудь небольшая китайская компания выпускает сенсоры собственной разработки, когда такой признанный авторитет в этой области "мышестроения", как Logitech, покупает их у Agilent, очень слабо верится. И если уж я упомянул Logitech, то хочу добавить, что большинство своих моделей, за исключением самых дешевых, она снабжает сенсорами с разрешением в 800 cpi.

Но вернемся назад к технологии. Помня о том, что сенсор фотографирует очень небольшой участок поверхности, а курсор по экрану должен двигаться плавно и без запаздывания, а для этого последовательно считываемые кадры поверхности должны накладываться друг на друга с небольшим смещением, поверхность фотографируется с очень большой скоростью - 1500 снимков в секунду. Это позволяет перемещать мышь со скоростью до 12 дюймов (30 сантиметров) в секунду. Также существуют варианты сенсоров, которые фотографируют поверхность со скоростью в 2000 или 2300 снимков в секунду и позволяют перемещать мышь со скоростью в 14 дюймов (35 см) в секунду. Причем фирма Microsoft заявляет, что в ее последних разработках находятся сенсоры со скоростью съемки в 6000 кадров в секунду. Опять же, технического описания на

такой сенсор я не видел, но думаю, что в данном случае такое вполне возможно. Все вышерассмотренное относится к системе считывания изображения. Далее отснятые кадры обрабатываются цифровым сигнальным процессором по специальному, естественно, запатентованному алгоритму. Сравнивая полученные кадры, процессор определяет величину и направление перемещения мыши (см. рис.3), после чего преобразует эти данные в координаты.

Так как кварцуются сенсоры в большинстве своем генератором с частотой 18 МГц (есть варианты на 24 МГц), то можно предположить, что мощность цифрового процессора составляет 18 миллионов операций в секунду. Затем вычисленные координаты при помощи последовательного интерфейса передаются в компьютер. Первые модели сенсоров умели "общаться" с компьютером по интерфейсу PS/2, а для работы по интерфейсу USB требовался дополнительный контроллер. Кстати, частота посылки координат по умолчанию при использовании интерфейса USB - 125 раз в секунду, PS/2 - 100 раз. Но через последовательный порт могут устанавливаться некоторые параметры самого сенсора - в частности, разрешающая способность и частота посылки координат.

Теперь рассмотрим назначение других компонентов оптической системы. Так как под мышкой темно даже днем, то поверхность, которую фотографирует сенсор, необходимо подсвечивать. Камера сенсора настроена на восприятие света в красном спектре излучения (l= 639 nm). Поэтому и используется красный светодиод, главная задача которого - даже минимальным количеством излучаемого света обеспечивать работу сенсора на всей рабочей поверхности. Чем выше яркость освещения, тем на большем количестве поверхностей будет работать сенсор.

Чтобы обеспечить равномерное освещение поверхности, свет от светодиода проходит по световоду и рассеивается линзой. Через другую линзу сенсор считывает изображение поверхности. Конструктивно две линзы и световод выполнены как одна деталь и называются один словом "линза".

Кроме функции рассеивания и фокусирования света, линза выполняет еще одну важную функцию - защиту сенсора от разряда электростатического напряжения. Понятно, что линза должна располагаться на строго определенном расстоянии от рабочей поверхности и от сенсора. Поэтому печатная плата (PCB) и опорная поверхность (base plate), на которые устанавливаются элементы оптической системы, должны иметь строго определенные параметры, в том числе и по толщине. Ну и последний элемент оптической системы - это защелка. Служит она для фиксации элементов оптической системы относительно друг друга.

На этом можно оставить оптическую систему в покое и поговорить о поверхности, на которой должна работать данная система. Так как сенсор использует микроскопические особенности поверхности, то чем больше таких особенностей, тем лучше. К таковым можно отнести поверхности с хорошей текстурой (чем обладает любая ткань) и узорчатыми особенностями. Да и на обычной белой бумаге оптические мыши работают совсем неплохо. А вот с любой отражающей поверхностью сенсор работает плохо, будь то зеркало, стекло либо просто пластиковая поверхность коврика. Также к числу "плохих" поверхностей относятся полутоновые поверхности и коврики с трехмерным изображением.

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

И если взять мыши в ценовой категории до 20 у.е., то, скорее всего, они будут иметь один и тот же тип сенсора и, соответственно, идентичные характеристики. В этом случае стоит обратить внимание на эргономику изделия, наличие

дополнительных кнопок, качество материалов и имя производителя. К тому же, важным моментом для оптических мышей является качество сборки. И если название фирмы вы слышите в первый раз, то стоит задуматься, брать такую мышь или нет. Во всяком случае, перед покупкой совсем не помешает почитать обзоры, посвященные конкретным моделям.

Вот, пожалуй, и все. Всего хорошего.

Игорь Масловский, [email protected]

Световод приподнят над микросхемой

Линза и рассеиватель

Вид на объективную часть оптической мыши

Вид снизу на объективную часть в собранном состоянии