Каждый знает, как работает оптический сенсор мыши. Грубо говоря, он функционирует как видеокамера, регистрируя объекты в кадре и вычисляя, в каком направлении нужно переместить курсор мыши. Вопрос в том, какое конкретно разрешение у этой «камеры»?
Любознательный хакер Фрэнси Кэпел (Franci Kapel) решил выяснить это наверняка — и разобрал свою старую мышку Logitech RX 250, которая содержит оптический сенсор ADNS-5020. Как выяснилось, сенсор записывает видео разрешением 15х15 пикселов в черно-белом диапазоне. Сенсор также вычисляет перемещение мыши по осям X-Y.
Чтобы сделать из мышки веб-камеру, Фрэнси подключил сенсор к контроллеру Arduino, который соединяется с персональным компьютером по кабелю Ethernet. При этом нужно отключить некоторые контакты сенсора с мышью, а между 5-вольтовым входом и контактом NRESET впаять резистор 10k. Окончательная схема контактов к плате с подключением резистора должна выглядеть так.
Вот что получается на практике:
Автор опубликовал в своем блоге программный код, который нужно загрузить в Arduino, заменив только IP-адрес. Чтобы картинка отображалась в браузере, требуется установить node.js и socket.io и сконфигурировать веб-сервер. Node.js будет получать UDP-пакеты от мыши и переправлять их в браузер с установленным socket.io. Поднимаем сервер, который получает данные от socket.io и обновляет картинку 15х15 пикселов в реальном времени. Все необходимые файлы лежат здесь.
На видео показано, как работает самодельная веб-камера.
Посетитель сайта вопросов-ответов StackExchange задал на первый взгляд глупый вопрос: а почему все курсоры во всех операционных системах немножко «кривые», то есть имеют определённый наклон, а не...
Один из интересных концептов, представленных на выставке CES 2014 - датчик света под названием LiFi. В отличие от датчиков освещённости, активно использующихся в современных смартфонах, сенсор LiFi...
Содержание углекислого газа - главный показатель качества воздуха в помещении. Устройство NODE+CO2 позволяет легко измерить его концентрацию в воздухе и через Bluetooth загрузить результат на ваше...