Пока работа с чайником ограничивается составлением документации(что, несомненно довольно скучно для хабра — сужу по предыдущему топику) напишу о отвлеченном — о внутренности железяк. Для следующего проекта(управление освещением) потребовалось нам раскурить тему OpenCV и подходящие для этого дела камеры.
В то же время хотелось получать еще и карту глубин с видео — для изменения яркости в зависимости от расстояния до человека.
Узнав о том, что в контроллере LeapMotion используются две камеры, мы тут же его заказали «на потыкать».
Думаю, о том, что такое LeapMotion если не знают, то хотя бы слышали все. Если все-таки не слышали — то это маленькая коробочка-контроллер, которая воспринимает движения рук, и позволяет этими самыми движениями управлять компьютером. Вот ролик, в котором показано как это происходит:
Я не буду подробно останавливаться на анбоксинге и обзоре самого устройства, потому что это уже давно сделали до меня, целых два раза.
Я расскажу о более интересной вещи — как эта штука, собственно, работает. Устройство готово к препарированию:
Общупав его со всех сторон, выявляется первый вариант вскрытия — резиновая наклейка в нижней части, которая легко отклеивается:
Под ней обнаруживаются несколько винтов:
Который естественно тут же выкручиваются, и… и ничего не происходит. Устройство выглядит таким же монолитом как и прежде. Хорошо, зайдем с другой стороны в прямом и переносном смысле:
Темная поверхность на лицевой части — непрозрачный ИК-проницаемый пластик. Он тоже на что-то приклеен, но медленными движениями термофена его удалось освободить от объятий клея и корпуса. Убираем его в сторону, и видим ГЛАЗА:
На вас они не производят такого впечатления, потому что вы уже видели их в заглавной фотке. Но когда убираешь непрозрачный пластик, а из-за него на тебя смотрят — ощущение незабываемое.
Убираем резиновый уплотнитель, и видим первую плату:
Она держится на четырех шурупах. Откручиваем их, снимаем верхнюю плату, и получаем доступ к нижней:
Вот она-то, вместе с черным пластиковым вкладышом и держится теми винтами, что мы видели ранее. Хорошо что мы их уже выкрутили :)
Контрольное включение, проверяем корректную работу после разборки:
Все нормально. Можно играться дальше.
При соединении платы составляют вот такой бутерброд:
Соединяются платы вот таким разьемом(часть отэц):
И другая часть:
Конечно, нет нужды показывать его в таких подробностях, но я все еще радуюсь своему макро-обьективу. Переходим к платам(нижняя сторона верхней платы):
На ней расположен контроллер CYUSB301X:
Это 32-битный ARM9 контролер от Cypress. 200МГц, USB3.0 и 2.0, OTG. Рассчитан как раз на работу с картинками и видео.
USB3.0(интересно зачем, неужели 2.0 не хватило бы?) разьем:
Рядом расположился MOSFET:
И два больших конденсатора:
Больше на этой стороне ничего интересного нет. Смотрим на верхнюю сторону первой платы:
Это флеш-память MXIC 25L3206E, SPI-интерфейс, 32 мегабита. В ней хранится прошивка контроллера. Разработчики почему-то не стали использовать фирменную фишку кипрессовских контроллеров — загрузка прошивки по USB. Может быть, для ускорения загрузки?
Разведенный UART:
Увидев его, мы настолько быстро к нему припаялись, что даже не успели сфотографировать контактные площадки без припоя.
К сожалению, он молчит в него как партизан — ни единого байтика.
Так что, посмотрим на что-нибудь более интересное, например на один из трех инфракрасных светодиодов:
Рядом с ним — по видимому, обвязка для управления им — в режиме ожидания светодиоды заметно гасят яркость.
А вот еще один, центральный светодиод:
Единственное отличие — немного другая форма линзы. Рядом с ним — точно такая же обвязка.
Оставшаяся плата — довольно скучная. Две камеры с объективами «рыбий глаз», да разъем.
Еще раз удивляемся ощущению рожицы с глазами-камерами, и ртом-разьемом:
Думаю, разработчики не случайно остановились на именно таком расположении компонентов. °-°
Камеры черно-белые, разрешением всего 640×480, но зато могут выдавать 60 кадров в секунду.
Посчитаем. 0.3 мегапикселя, на 60 кадров, две камеры, без сжатия… 640*480*60*2=35Мбайт/сек. Видимо поэтому и поставили USB3.0, такая скорость недостижима для 2.0, а разработать сжатие было дороже(в накладных расходах), чем поставить новый чип.
Впрочем, в режиме USB2.0 устройств тоже работает, но снижает частоту кадром — реакция становится задумчивее.
Хотел посмотреть на матрицу — но объективы камер были заклеены герметиком:
Так что дальше мы разбирать не решились, опасаясь нарушить фокусировку. Камеры снимают полностью в ИК-диапазоне — темный пластик отрезает полностью видимый свет, а инфракрасное излучение от светодиодов, отраженное от кожи рук — пропускает. Как и ожидалось, при ярком источнике инфракрасного света позади(солнце, лампы накаливания), определение пальцев начинает немного подглючивать. Используйте люминесцентные и светодиодные лампы. :)
Выводы
В плане схемотехники — устройство довольно глупое. По сути, просто веб-камера с подсветкой, которая гонит видео-поток на компьютер.
Картинка с двух камер выглядит вот так забавно:
А вот на компе картинка обрабатывается, по двум изображениям строится карта глубин:
И создается массив точек, с которым уже работают программы:
Работать с камерой можно и без использования родного ПО — добрые люди разобрали протокол и написали программки для работы с ним.
Для наших целей, к сожалению, эта штука не подошла — камеры расположены слишком близко, и корректно определить расстояние больше нескольких метров уже не получится. Ну и ладно.
Напоследок — забавный двухцветный светодиод:
Напоминаю, если вы не хотите пропустить эпопею с чайником и хотите увидеть все новые посты нашей компании, вы можете подписаться на на странице компании(кнопка «подписаться»)
Автор: vvzvlad