Получаем изображение с оптического сенсора комьютерной мыши с помощью Arduino
Для решения одной из задач мне потребовалось программно получать и обрабатывать изображения небольшого участка поверхности бумаги с очень близкого расстояния. Не получив достойного качества при использовании обычной USB камеры и уже на пол пути в магазин за электронным микроскопом, я вспомнил одну из лекций, на которой нам рассказывали как устроены различные девайсы, в том числе и компьютерная мышка.
Подготовка и немного теории
В подробности принципа работы современной оптической мыши я вдаваться не буду, очень подробно об этом написано вот тут (рекомендую прочитать для общего развития).
Погуглив информацию по этой теме и разобрав старую PS/2 мышку Logitech, я увидел знакомую по статьям из интернета картину.

Не очень сложная схема «мышей первого поколения», оптический сенсор по центру и чип интерфейса PS/2 чуть выше. Попавшийся мне оптический сенсор является аналогом «популярных» моделей ADNS2610/ADNS2620/PAN3101. Я думаю, они и их аналоги были массово произведены на одном и том же китайском заводе, получив на выходе разную маркировку. Документация на него нашлась очень легко, даже вместе с различными примерами кода.
Документация гласит, что этот сенсор до 1500 раз в секунду получает изображение поверхности размером 18×18 точек (разрешение 400cpi), запоминает его и с помощью алгоритмов сравнения изображений вычисляет смещение по координатам Х и Y, относительно предыдущей позиции.
Реализация
Для «общения с сенсором» я использовал популярную вычислительную платформу Arduino, а припаяться решил прямо к ножкам чипа.

Подключаем 5V и GND к соответствующим выходам Arduino, а ножки сенсора SDIO и SCLK к цифровым пинам 8 и 9.
Для получения смещения по координатам нужно прочитать значение регистра чипа по адресу 0x02 (X) и 0x03 (Y), а для дампа картинки нужно, сначала записать значение 0x2A по адресу 0x08, а потом 18×18 раз его прочитать оттуда же. Это и будет последнее «запомненное» значение матрицы яркости изображения с оптического сенсора.
Как я реализовал это на Arduino можно посмотреть тут: http://pastebin.com/YpRGbzAS (всего ~100 строк кода).
А для получения и отображения картинки была написана программа на Processing.
Результат
После небольшого «допиливания» программы для своего проекта, я смог получать картинку прямо с оптического сенсора и производить над ней все необходимые вычисления.
Можно заметить текстуру поверхности (бумага) и даже отдельные буквы на ней. Следует отметить, что такое четкое качество картинки получается из-за того, что разработчики этой модели мыши добавили в конструкцию специальную стеклянную подставку с небольшой линзой прямо под сенсором.
Если начать приподнимать мышку над поверхностью даже на пару миллиметров, четкость сразу пропадает.
Если вы вдруг захотите повторить это дома, для нахождения мышки с аналогичным сенсором рекомендую искать старые девайсы с интерфейсом PS/2.
Заключение
Хотя получаемое изображение и не очень большое, этого вполне хватило для решения моей задачи (сканнер штрих кода). Получилось очень даже экономично и быстро (мышка за ~100р + Arduino + пару дней на написание кода).
Оставлю ссылки на материалы, которые мне очень пригодились для решения этой задачи. Это реально было не сложно и делалось с большим удовольствием. Сейчас я ищу информацию о чипах более дорогих моделей современных мышек для получения качественных изображений с большим разрешением. Возможно, мне даже удастся собрать что-то вроде микроскопа (качество изображений с текущего сенсора для этого явно не подходит). Спасибо за внимание!
На каких поверхностях может работать оптическая мышка
![]()
Компьютерная мышь — это манипулятор без которого не обойдется ни один офисный работник или геймер. Пользователи не всегда задумываются над тем, на какой поверхности лучше всего перемещать своего «грызуна». А между тем, этот фактор является немаловажным.
Немного истории
Первоначальный облик компьютерной мыши был несколько непривычен современным пользователям, так как прямо в центре «грызуна» находился круглый шарик, который и отвечал за функционал мыши. В начале 80-х годов была создана мышка, которая начинает отслеживать движения пользователя не шариком, а светом. Это была оптическая мышь первого поколения. Второе поколение оптических «грызунов» появилось в конце 90-х годов. Они полностью избавились от шариков, стали намного точнее, практичнее и вообще близки к современным моделям.
Оптическая мышь первого поколения не могла работать на любой поверхности. Для этого был необходим специальный коврик-планшет.
![]()
Поверхность
Принцип работы оптической мыши заключается в подсветке участка поверхности под мышкой специальным светодиодом. В лазерных мышках функцию светодиода выполняет соответственно лазер, хотя в целом принцип работы у обоих типов одинаков. Свет отражается от поверхности, собирается другой линзой и фиксируется миниатюрной видеокамерой-сенсором. Полученная информация (сделанные снимки) передается на специальный микропроцессор и далее уходит на компьютер.
Для работы оптической мыши будет пригодна практически любая однородная поверхность. Такая поверхность способствует эффективной работе датчика мышки, который и приводит в движение курсор на экране. Это может быть, как поверхность обычного компьютерного стола, так и коврика для мыши, которые выпускаются в различных вариантах и из различных материалов (даже из искусственной кожи или металла).
![]()
Ровные или неровные
Конечно для работы мышки желательно использовать ровную поверхность, но что делать, когда ее нет под рукой, а проводить какие-либо манипуляции на мониторе необходимо? В принципе, как было уже сказано, подойдет любая поверхность, например, даже книга, поверхность кожаного кресла или дивана. Проведем несколько тестов, используя вместо привычного коврика, ровную поверхность деревянного компьютерного стола и ручку компьютерного кресла с искусственной кожаной обивкой.
![]()
Возьмем несложную онлайн программу, которая поможет нам проверить, возможно ли совершить на разных поверхностях стандартные клики мышками за отведенное время. Тестировать будем обычную оптическую мышку Oklick, а время теста ограничим 15 секундами. В нашу задачу входит сделать одинаковое количество кликов на той и другой поверхностях за отведенное время. Результаты проведенного теста видны на скринах. Из них можно сделать вывод, что за 15 секунд удалось сделать равное количество кликов правой и левой кнопками, а также двойные клики без срывов и других проблем с сенсором. Однако есть и минус — на кожаной обивке курсор мыши несколько «плавает» по экрану, что делает работу не совсем удобной.
![]()
![]()
Поэтому помимо кликов стоит проверить как будет реагировать сенсор на точность позиционирования. В этом нам поможет небольшая тестовая игра, где нужно успеть за отведенное время попасть по неожиданно возникающим красным кругам. Учитываем, что результат также может зависеть и от быстроты человеческой реакции (для геймеров отличная возможность проверить свои навыки). Как видим из результатов, точность при использовании покатой кожаной поверхности кресла несколько ниже, хотя не стоит забывать, что тесты не дают полноценной картины. Многое зависит от модели мыши и других условий.
![]()
![]()
![]()
Несмотря на то, что оптическая мышь увидела свет еще в 80-х годах, она была недоступна широкому кругу покупателей вплоть до 1999 года из-за высокой цены.
Разноцветные и цветные
Так как сейчас производится немалое количество ковриков разных цветов, то возникает закономерный вопрос о влиянии цветов на работоспособность мышки. Устройство будет работать на ковриках любого цвета, хотя желательно чтобы цвет был однородным. А как мышь будет вести себя на других цветных поверхностях, не предназначенных для ее работы? Небольшой эксперимент показывает, что если действовать мышью на разноцветных листах бумаги (красный, зеленый, белый, желтый), то ведет она себя менее уверенно, но в целом работоспособно.
![]()
Прозрачные, полупрозрачные, зеркальные
Работать на данных типах поверхностей получится не всегда, так как есть риск, что мышка просто не будет слушаться пользователя. Любая поверхность имеет микроскопические, практически не видимые глазу трещины и неровности. Все они освещаются оптическим светодиодом и отбрасывают тени, которые считываются датчиком. На прозрачной или полупрозрачной поверхности данных неровностей может не быть и сенсору просто не за что «зацепиться». Поэтому мышь либо будет стоять на одном месте, либо «плавать» по экрану. Проблему можно попытаться решить с помощью использования матового стекла.
На зеркальных поверхностях мышка ведет себя еще хуже. Она хотя и реагирует на движения, но теряет все свойства манипулятора. Курсор зависает, дергается, и чтобы переместить его с одного угла экрана в другой, нужно изрядно постараться. На практике это будет выглядеть следующим образом. Первый гиф показывает движения курсора по коврику, а нижний гиф по зеркальной поверхности. Если присмотреться, то видно, что на зеркале все-таки можно сделать несколько движений и кликов, но полноценно работать на такой поверхности «грызун» просто не сможет.
Тип сенсора и качество подсветки
Сенсор можно назвать настоящим «сердцем» мышки, так как именно он отвечает за перемещение устройства по поверхности. Соответственно поведение «грызуна» на каком-либо типе поверхности будет зависеть от типа сенсора — оптического светодиодного или лазерного. Лазерный считается более инновационным и способен работать практически на всех поверхностях. Однако, несмотря на плюсы, лазерный сенсор способен собирать бесполезную информацию с поверхности, что чревато потерей точности.
Также немаловажное значение имеет производитель сенсора и другие характеристики. Такие как разрешение датчика dpi (чувствительности мышки), частота опроса (измеряется в Гц) или качество подсветки светодиода.
![]()
Наиболее проверенными брендами будут сенсоры от производителей HERO, Mercury, Pixart. Сенсор как правило имеет красный светодиод из-за большей чувствительности фотоэлемента именно к красному свету и возможности более точной передачи отражаемого света. Считается, что подобными качествами также обладает и зеленый свет. Многие мышки имеют подсветку, в том числе и подсветку RGB, что никак не мешает работе устройства.
![]()
Первая мышь имела всего одну кнопку, хотя ее создатель Дуглас Энгельбарт, хотел сделать еще 5. По одной на каждый палец руки.
Оптимальное использование и рекомендации
Так какая же поверхность будет оптимальной для оптической мыши? Любая ровная и чистая поверхность. Дерево, пластик, искусственная кожа, ткань и т.д. На всех этих материалах мышка будет чувствовать себя вполне уверенно, однако все-таки предпочтительнее использовать поверхности специальных ковриков или же обычного стола. Это позволит избежать потери чувствительности, срывов сенсора и «плавания» курсора по экрану.
Заранее определите для каких целей вам необходимо устройство: для простой офисной работы или же для игр. Высокие цифры dpi гарантируют быстрое перемещение курсора мыши по экрану, но в тоже время это может создавать серьезные неудобства, особенно в процессе игры. Для комфортной работы оптимальным будет значение 800 или 1000 dpi. Нужно периодически очищать рабочую поверхность, нижнюю часть корпуса и ножки мышки, так как грязь, мелкие частицы могут ухудшить перемещение самого устройства и соответственно курсора.
Обзор поверхностей для игровых мышей
Ковер для мышки — это не просто предмет интерьера или часть «сетапа» в тему к другим вашим девайсам. Нет, все гораздо глубже. Особенно значение «коврика» возросло, когда пресловутый шарик из мышки исчез, а его место занял оптический (или лазерный) сенсор. Все мы прекрасно знаем, что качество фотоснимка у фотоаппарата зависит от многих факторов, по похожему принципу работает и датчик оптической (лазерной) мышки. Делается множество «фотоснимков» поверхности и идет сравнение каждого последующего снимка с предыдущим. Естественно, если снимки получились качественные и четкие — мышь будет работать стабильно, не срываться и курсор на экране окажется там, где вы и хотели. Если же снимки получились неоднородные по качеству и четкости или же сенсору попросту не за что «зацепиться» на поверхности. Расстроились бы вы, если бы в решающей партии в любимую игру, вы уступили бы не по своей вине, а просто потому, что мышь «сорвалась» и взор персонажа оказался устремлен в небо? «Расстроились» — мягко сказано. Вы бы рвали и метали. Для того, чтобы это не произошло и нужны коврики. Обеспечить сенсору четкую и ясную картинку для адекватной и стабильной работы.
В начале 2000-ых рынок заполонили игровые поверхности разных свойств, качеств и материалов. Такое тогда было время. Время опытов и инноваций. Рынок пестрил коврами из ткани, пластика, стекла, алюминия и стали, а уж про их комбинации и говорить не нужно. У каждого материала свои плюсы и минусы. Но «спрос» — самый честный судья. С прилавков исчезли те коврики, использование которых мы назовем — «компромиссным». Т.е. при работе с которыми приходилось мириться с ощутимыми минусами.
В настоящее время осталось два основных типа игровых поверхностей: тряпичные и пластиковые. «А ведь еще есть гибриды и алюминий!» — скажите Вы. Да, есть и такие. Но их доля настолько ничтожна, а на столе у профессионала их и подавно не встретить. У каждого из этих классов есть свои сильные и слабые стороны.
Тряпичные поверхности. Плюсы и минусы.
Приятные ощущения для руки
Более контролируемое скольжение
Более легкая остановка мыши
Меньше стачивают тефлоновые ножки
Грязный ковер изменяет свои свойства (грязь, жир) и мышь может залипать, а сенсор вести себя неадекватно.
Пластиковые поверхности. Плюсы и минусы.
Великолепная поверхность для работы сенсора
Более легкое скольжение
Меньше вероятность «залипнуть» у мыши
Простота в уходе
Меньше влияние грязи
Размеры не так разнообразны
Менее приятны руке
Гораздо быстрее стачивают ножки мыши
Как мы видим, различия достаточно существенны. Но в итоге для всех и вся главным критерием является скольжение. У пластика оно очень быстрое и легкое, а у «тряпки» оно более контролируемое. Что лучше? Никто не скажет т. к. все это очень индивидуально.
После всего прочитанного сразу возникает вопрос. А какие, на сегодняшний день, коврики являются одними из лучших? Мы расскажем вам о трех кандидатах на звание идеального коврика.
Встречайте: Razer Destructor 2, Logitech G440, Zowie G-CM.

Razer Destructor 2.
Перед вами топовый пластиковый ковер от знаменитой компании. Из индекса «2» понятно, что модель уже достаточно долго на рынке и успела выйти вторая версия данного «ковра». Destructor – получил свою известность за то, что являлся одним из самых бескомпромиссных «пластиков», сочетая себе отличное скольжение и очень «понятную» для сенсора поверхность. К сожалению, убивал ножки мышей он так же отлично.

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

Сам ковер стал более выдержанным. Уже нет таких изощренных форм. Перед нами строгая серая поверхность классического формфактора. Размеры 355 мм (длина) x 255 мм (ширина) x 2,2 мм (толщина). Подложка выполнена из хорошей резины, слегка гладкой и похожей на силикон. Сразу ясно, что ковер не сдвинется с места на любом столе.

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

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

Итог: Перед нами поистине топовое решение одного из лучших производителей игровой периферии и поверхностей.
Logitech G440.

А вот это «темная лошадка». Швейцарская компания давно и плотно обосновалась в сегменте удобных мышей для гейминга и работы, а вот ковры ее для нас в новинку. Тем более пластик.

Ковер дешевле, чем Razer Destructor 2 и это сразу заметно. Встречает нас скромная и лаконичная коробка выдержанная в стиле “G”-cерии от Logitech. Ничего лишнего. Поистине европейский подход. Размеры ковра: ширина 340 мм, высота 280 мм, толщина 3 мм
Зато сам ковер выделяется соотношением толщины пластиковой части и подложки. Да и сама толщина на целый миллиметр больше. Для твердого ковра это ощутимо. Чуть хуже и сама подложка. Она все-таки стандартная. Такую вы встречали на тряпичных коврах. Однако со своими задачами справляется она хорошо. Вот только «лоск» отсутствует 😉

А вот поверхность выше всяческих похвал. Практически гладкая текстура делает поверхность не такой быстрой и ясной для сенсора, как у Razer Dectructor 2, однако более контролируемой и менее шумной, а главное более щадящей для ножек вашей мыши. Сбоев в работе лазерного и оптического датчика замечено не было. Из субъективных минусов можно отметить лишь то, что с увеличением толщины кромка края стала чуть более ощутима.

Итог: Европейский подход: меньше лоска (упаковка), но больше внимания главному (поверхность).
Zowie G-CM.

Это единственный тряпичный коврик в сегодняшнем обзоре. Тем более на обзор попалась версия с дизайном от Антона «Cooller” Синьгова. Все прекрасно знают аскетичность Zowie в вопросах дизайна коробки и всяких наворотов. «Ничего лишнего, только самое нужное». Зато это «нужное» просто высшего качества. Так вот и коробка — просто коробка. Серого цвета, вот только с автографом Куллера 😉

В остальном — перед нами практически эталонная «тряпка». Размеры ее: 440 x 320 x 2 мм.
Очень интересный ход — подложка. Она глянцевая, плотная, хорошо держит сцепление со столом, но вот из-за ее плотности — ковру надо чуть дольше, чем обычно, «разлежаться». Да, минус, но плотность подложки исключает сжимание ковра при надавливании мыши на него. Это улучшает трекинг. Да и живучесть ее, по сравнению с обычной пенорезиной, гораздо выше.
Сама поверхность умеренной вязкости. С явно выраженным горизонтальным плетением. Ход мыши равномерный и предсказуемый. Больше тяготеет к понятию «Control». Проблем у оптики и лазера нет.

Итог: Для тех, кто хочет больше контроля.
Подводя итоги: Все три игровых поверхности очень хороши. Свою главную задачу, выдача сенсору хорошей «информации», они выполняют на 100%. Все остальное — не более, чем дело вкуса. Всем приятной игры!
Кафедра АППиЭ
3. Кожемяко. Как из оптической компьютерной мыши сделать датчик перемещения?
Автор Ko_Dee, Среда, марта 30, 2016, 07:33:24
Страницы 1
Страницы 1
- Кафедра АППиЭ
- ► КОНФЕРЕНЦИИ
- ► Дни науки АмГУ 2016 Секция Автоматика, управление и моделирование
- ► 3. Кожемяко. Как из оптической компьютерной мыши сделать датчик перемещения?
- Помощь | Условия и правила | Вверх ▲
- SMF 2.1 Beta 2 © 2015, Simple Machines
Страница создана за 0.120 секунд с 22 запросами.
