Датчик Из Оптической Мыши

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

Х и Y, относительно предыдущей позиции. Реализация. Для «общения с сенсором» я использовал популярную вычислительную платформу Arduino, а припаяться решил прямо к ножкам чипа. Подключаем 5. V и GND к соответствующим выходам Arduino, а ножки сенсора SDIO и SCLK к цифровым пинам 8 и 9. Для получения смещения по координатам нужно прочитать значение регистра чипа по адресу 0x. X) и 0x. 03 (Y), а для дампа картинки нужно, сначала записать значение 0x.
- Теоретически, при снижении качества поверхности ниже разумного, оптический датчик должен перестать выдавать движение.
- Датчик- a2610 Разрешение-18х18px. Камера с датчика оптической мыши. Максим Приходько. Unsubscribe from Максим .
A по адресу 0x. 08, а потом 1. Это и будет последнее «запомненное» значение матрицы яркости изображения с оптического сенсора. Как я реализовал это на Arduino можно посмотреть тут: http: //pastebin. Yp. RGbz. AS (всего ~1. Программа Для Настройки Стаг 4. А для получения и отображения картинки была написана программа на Processing. Исходник тут: http: //pastebin.
Xq. Gy. P5. EA. Результат. После небольшого «допиливания» программы для своего проекта, я смог получать картинку прямо с оптического сенсора и производить над ней все необходимые вычисления. Можно заметить текстуру поверхности (бумага) и даже отдельные буквы на ней. Следует отметить, что такое четкое качество картинки получается из- за того, что разработчики этой модели мыши добавили в конструкцию специальную стеклянную подставку с небольшой линзой прямо под сенсором.
Если начать приподнимать мышку над поверхностью даже на пару миллиметров, четкость сразу пропадает. Если вы вдруг захотите повторить это дома, для нахождения мышки с аналогичным сенсором рекомендую искать старые девайсы с интерфейсом PS/2. Заключение. Хотя получаемое изображение и не очень большое, этого вполне хватило для решения моей задачи (сканнер штрих кода).
Получилось очень даже экономично и быстро (мышка за ~1. Arduino + пару дней на написание кода).
Оставлю ссылки на материалы, которые мне очень пригодились для решения этой задачи. Это реально было не сложно и делалось с большим удовольствием.
Сейчас я ищу информацию о чипах более дорогих моделей современных мышек для получения качественных изображений с большим разрешением. Возможно, мне даже удастся собрать что- то вроде микроскопа (качество изображений с текущего сенсора для этого явно не подходит).
Спасибо за внимание! Теорияhttp: //www. Аналогичные работыhttp: //spritesmods. Документацияhttp: //www.
AV0. 2- 1. 18. 4ENИсходникиhttp: //pastebin. Yp. RGbz. AShttp: //pastebin. Xq. Gy. P5. EAUPD от 2.