Каждый знает, как работает оптический сенсор мыши. Грубо говоря, он функционирует как видеокамера, регистрируя объекты в кадре и вычисляя, в каком направлении нужно переместить курсор мыши. Вопрос в том, какое конкретно разрешение у этой «камеры»?
Любознательный хакер Фрэнси Кэпел (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 пикселов в реальном времени. Все необходимые файлы лежат здесь.
На видео показано, как работает самодельная веб-камера.