Собирая стерео фото-, видео- аппарат
В этой статье аккумулирован опыт, включая определенные нюансы при создании стереоприбора на базе stereopi первой модели. С помощью «изделия» возможно делать стерео фото- и видео- картинки, смотреть на мир в стерео режиме, используя мобильный телефон и несложную vr гарнитуру(тот же cardboard). Прилагается образ для stereopi первого поколения для быстрого развертывания и использования.
Что такое stereopi
Об этой разработке неоднократно уже писалось как на Хабре (пост, пост), так и в других источниках. Но если коротко: stereopi — это compute module v.3 с обвесом в виде usb портов, выходом на hdmi, ethernet и, разумеется, 2-х синхронизированных csi камер для raspberry pi.
*На подходе уже обновленная версия второго поколенияstereopi v.2, но она пока не доступна, по крайней мере мне.
В принципе, на сайте stereopi представлена достаточно подробная инструкция, что куда втыкать и что куда загружать. Однако, несмотря на то, что все разжевано до мелочей, подводные камни начинают возникать по мере приближения к заветной цели — созданию стереоприбора — буквально на этапе подключения wi-fi. Кроме того, поместив compute module в stereopi и пришвартовав две камеры, становится непонятно как и куда это все поместить, «чтобы не торчало во все стороны».
Поэкспериментировав достаточно с usb донглами, корпусами и прочими аксессуарами, и был выработан определенный рабочий концепт, речь о котором и пойдет далее.
Как всё работает

Софт-начинка (основной образ для stereopi) представлен разработчиками stereopi, и надо признаться, что после обновления он стал достаточно прогрессивным. Доработанный web-интерфейс дополнен многочисленными опциями, которые делают жизнь удобнее. Добавлены кнопки создания фото-, видео- прямо из web-интерфейса, которых лично мне так не хватало. Помимо прочего, сам web-интерфейс оптимизирован и нет подвисаний при работе с тем же файловым менеджером даже при относительно не быстром wi-fi.
*Ранее автором самостоятельно предпринимались попытки доработать web-интерфейс, а также оптимизировать его загрузку, но это не пошло в мэйнстрим.
**Кроме того были проблемы с apt-get update, которые вызывали слишком много вопросов.
Итак, после запуска stereopi, она подключается к сети wifi, получает ip адрес. Далее к этому адресу можно подключиться как со стационарного ПК, так и со смартфона. Причем на последнем можно выбрать режим «без иконок» и наслаждаться стерео.
С чего начать собирать?
C корпуса конечно. Его можно напечатать на 3d принтере, а можно просто купить коробочку из дерева в каком-нибудь специализированном магазине. Данные коробочки, как правило, продаются для изготовителей шкатулок.
Например подойдет вот такая деревянная заготовка размерами — 10x10x6 см (в Москве продается в «Лео… до»:

Итого понадобятся:
- stereopi v.1
- compute module v.3 (non lite)
- usb dongle (низкопрофильный)
- две камеры csi для raspberry pi (лучше взять fish eye, т.к. угол обзора у них шире)
- держатель для аккумуляторов 18650B (например такой)
- 4 аккумулятора типа 18650B
- понижающий преобразователь dc-dc (например такой — MP1584EN)
- * cooler 12V, 0.1А (его можно запитать прямо от ног stereopi, взяв 5V)
- комплект гаек с болтами для закрепления держателя батарей 18650 на размер m2 (например).
Несколько слов о usb-донглах

Несмотря на то, что в самом compute module уже есть встроенный wi-fi, но его качество оставляет желать лучшего. Поэтому лучше приобрести внешний usb-свисток и желательно, чтобы он не сильно выпирал из корпуса.
На известном китайском ресурсе есть на любой вкус и цвет. Но самое интересное начинается, когда пытаешься установить driver на linux систему stereopi. Большинство usb-донглов от китайцев работают из коробки только для систем на базе windows.
Тем не менее, эта проблема зачастую преодолима, и при установке драйверов на stereopi необходимо не забывать про то, что система работает в режиме read-only и ее перед любыми изменениями необходимо перемонтировать — ссылка.
В данном проекте используется Wi-Fi адаптер TP-LINK Archer T2U Nano и под него уже установлен драйвер на прилагаемом к статье образе.
Несколько слов о держателях для аккумуляторов 18650B
Здесь нет ничего особенного и можно использовать как держатель на 4 аккумулятора, так и на меньшее количество, главное помнить, что stereopi необходимо 5V питания.
Но все же, стандартный пластиковый держатель для батарей неудобен — батареи приходится выковыривать из него острым предметом, нет контроллера переразряда, да и сами батареи прилегают неплотно в держателях. Тем не менее главное преимущество — цена и незначительный вес.
И все же мой совет — использовать нормальные держатели, немного переплатив за них:

Например, ссылка на товар. В них также предусмотрены контроллеры, защищающие от переразряда, а также тумблер питания, который в данном проекте вынесен отдельно.
Собрать все вместе
Для камер потребуется просверлить отверстия в лицевой части коробки. Разместить камеры на расстоянии 65 мм, закрепив их на болтики m2.

*Вообще для разного режима стереосъемки разработчики продают отдельно держатели для камер с уже выверенными размерами (ссылка). Но для меня это показалось дороговато для нескольких кусочков фанеры.
Точно также крепится держатель для батарей снизу корпуса — на болты m2, длины которых вполне хватает чтобы оставить еще зазор для выдуваемого из корпуса воздуха:

К днищу корпуса внутри крепится cooler, а также размещается понижающий преобразователь:

Stereopi крепится опять же на болты m2 с противоположной стороны лицевой панели коробочки.
Заливаем образ
Чтобы запустить аппарат, сперва необходимо загрузить образ на stereopi.
Небольшая ремарка — необходимо уточнить, что никакой sd карты не требуется, так как образ заливается непосредственно во встроенную память compute module через stereopi.
Образ можно взять из данной статьи либо скачать образ, который предлагается на сайте разработчиков stereopi. Но в последнем случае потребуется самостоятельно искать и устанавливать драйвер для usb dongle, а также править параметры wi-fi сети.
Двигаясь далее, предварительно потребуется установить на ПК rpiboot — программу, позволяющую общаться со stereopi.
Далее — поставить перемычку-джампер в usb-slave, подключить кабель mini-usb, соединив stereopi с ПК.

*В данном случае stereopi работает в режиме slave и при подключении определится как обычная usb-флэшка (после заливки образа).
Перенесение образа на stereopi можно производить разными программами, но я по-старинке использую win32diskimager.
После заливки образа можно изменить параметры wi-fi сети, к которой будет подключаться stereopi, сделав это в файле cosmostreamer.conf:

*Для этого необходимо еще раз запустить stereopi с установленным джампером на usb-slave.
После заливки образа, необходимо выключить stereopi, вытащить джампер и далее загружаться как обычно.
Как обычно — это подавая питание на 5V VCC вход stereopi, а не через mini-usb кабель.
Также, что важно, при питании сoolerа необходимо помнить, что на stereopi v.1 gpio гребенка представлена реверсивно, то есть расположение пинов не так как у стандартной raspberry pi.

Этот вопрос также обсуждался автором на форуме здесь.
После прогрузки залитого образа stereopi будет искать сети boss либо boss1 (пароль одинаковый — 1234554321) и пытаться к ним подключиться.
Фото и видео создается при нажатии прямо на экране соответствующих кнопок.
Далее результаты попадают в папку /mnt/DCIM, до которой можно дотянуться прямо из браузера, воспользовавшись встроенным tiny file manager:

И, что самое приятное, скачать на пк или смартфон прямо из браузера:

В заключение
Сваять свой стерео фото-, видео- аппарат, собрав по пути несколько интересных шишек, дорогого стоит.
Тем не менее, несмотря на рабочую модель, остаются моменты над которыми придется подумать. Например, как видно на фото, камеры даже из одной серии дают разные цветовые оттенки. Размещение камер на дефолтном расстоянии 65мм дают небольшие искажения при сведении изображений. Видимо, придется поработать с крепежами камер либо все же купить anycase для богатых, о котором упоминалось в статье.
Также интересно как поведет себя stereopi с образом предустановленного opencv и элементами дополненной реальности. Но это, как говорится, совсем другая история.
Как сделать из ПК «USB-Slave»?
Есть глупое устройство (ГУ), которое читает информацию только с USB-флешек.
Есть умный (в меру) ПК на онтопике, на обычном десктопном железе, с которого необходимо передавать на ГУ файлы.
Собственно, необходимо исключить лишнее звено в виде флешки и подключить в качестве флешки ПК. В моем понимании, нужно как-то дергать порт USB и монтировать туда образ ФС, генерируемый отдельно. Но. нужны советы специалистов.
P.S. допускаются хардварные изменения.

http://www.linux-usb.org/gadget/ не оно? А так вообще вроде есть USB-кабели с какой-то электронной штукой в середине, которые могут такое провернуть.

Кабель нужен с микросхемой на борту, вроде usb smart link гуглить
Что за УГ? Какого размера файлы?
Из USB-host (который на ПК) USB-gadget (который на флешке) не сделаешь.
Глупое устройство с «умным» кабелем тоже вряд ли подружится, там вроде сетевое устройство эмулируется.
Берешь какую-нибудь cubiboard с usb-host и usb-gadget/otg, ставишь linux . . Поддержка usb-gadget в ядре есть, возможно предется пересобрать ядро.
Схемотехника приёмопередатчика USB для хоста и устройства отличается. Там даже банально подтяжки разных проводов к разным полюсам (девайс должен подтянуть D+ или D- к VCC через 1.5 кОм, а хост должен что-то там подтянуть к GND через 15 кОм). В случае USB OTG (умеют некоторые ARM-чипы) приёмопередатчик переключает свой режим работы в зависимости от положения перемычки в кабеле (вводится дополнительный контакт ID). То есть внутри чипа предусмотрена схема как для хоста, так и для девайса и они могут переключаться. USB-контроллер в PC банально не имеет нужной схемотехники внутри чипа.
Usb slave что это
—
libran
2 Vulcanite
ну вот что я намерил
Цифры замечательны, только вот во сколько обойдётся эксплуатация этого удовольствия?
Итак:
InWin BT566 — (включим сюда потребление вентиляторов БП и проц.)
5 watt
мамку Intel DQ965GFEKR —
40-45 watt
два модуля по 512DDR2 Transcend TS64MLQ64V5J —
15-20 watt
проц Intel Celeron D352 — 86 watt
доп сетевуху Intel PWLA8390MT PRO/1000 —
10 watt
три винта WD3200KS —
60 watt
всё это встало в — 221 watt
Пускай это чудное устройство не будет загружено вовсе: 221/2 =110,5 watt.
Но надо полагать это всё же, сервер поэтому должен быть влючен 24*7.
что имеем. 0,11 Kwt * 24 ч. = 2,64 Kwt в день.
При новых тарифах на электроэнергию в Москве имеем:
Для домов с электроплитами 1,47 руб Кв/ч * 2,64 Kwt * 365 = 1 416,49 рублей в год.
Для тех, у кого газовые плиты 2,08 руб Кв/ч * 2,64 Kwt * 365 = 2 004,28 рублей в год.
И это на не нагруженном совсем сервере, т.е. процессор в простое, диски не пишут не читают, сетевой активности нет. В зависимости от эксплуатации умножайте зти суммы ещё в 1,25-1,5 раза если это будет воспользоваться в режиме файлопомойки. В противном случае (БТД WI-FI например), надо бы добавить ещё ватт 10-15.
—
Vulcanite
2 libran
всё это встало в — 221 watt
можно было и не считать , к томуже не очень точно . Больше чем нагрузочная способность БП, всё равно не выйдет, а БП выдаёт кажись 240Ватт.
2 004,28 рублей в год.
и что? Думаете заплатив 700баксов за это чудо, я буду экономить 2000р. В ГОД ?
цена времени потраченного на получение информации и её ответственного хранения, НЕСОИЗМЕРИМА высока по сравнению со стоймостью электричества
Опять же, цена вопроса. если у вас ВИДЕО с HDV/DV и прочих DigitalBetaCAM. и в ЕДИНСТВЕННОМ экземпляре. то всё остальное — НИЧТО в смысле цены
—
libran
2 Vulcanite
По поводу точности расчётов потребления готов подискутировать,
Собственно я дополнил ваши тесты производительности, расчётами расходов на эксплуатацию.
Вы же эти тесты для других выложили?
Сумма будет чуть больше, где то
2500 руб. для тех у кого газовая плита (у меня например),
а это: годовая оплата телефона МГТС, полгода оплаты сотового телефона среднего москвича например.
Всё вышеприведённое снимается если:
а) Эта штука приобреталась для зарабатывания денег (тогда это уже не совсем сектор домашних NAS, а скорее офисных).
б) Гнуть пальцы перед знакомыми (тут вообще без комментариев, хотя тогда уж можно было не лепить самопал, а взять что нибудь из лейблов HP, IBM и иже с ними).
PS.Извините, последний пункт шутка
—
Vulcanite
libran
готов подискутировать
думаю смысла нет. в этом. если мне не изменяет память PRO1000MT хавает 1А по 5 вольтам итого 5Ватт
Собственно я дополнил ваши тесты производительности
ОК сошлюсь на это но ИМХО , при подобных решениях задач, стоимость расходов на ЭЛКТРОЭЕНЕРГИЮ, а не эксплуатацию, незначительна. «Эксплуатация» это несколько большее чем элеткричество собственно поэтому и была собрана ИМЕННО такая конфигурация — чтобы минимизировать расходы на вероятностную поломку.
Сумма будет чуть больше, где то
2500
ну если начинать считать эти копейки в ГОД то тогда надо дисками пользоваться DVD т.е. пытаться получить теже возможности что и с ,подобным моему, «монстриком»
годовая оплата телефона МГТС, полгода оплаты сотового телефона среднего москвича например
ну мы сдесь не обсуждаем сколько это будет стоить. «если Вы спрашиваете о цене яхты, значит Вам она не покорману» мы обсуждаем возможности/реализацию и уж в последнюю очередь цену. Думаю нет смысла Вам говорить что вспахивать землю на Майбахом хуже чем Катерпиллером Каждая вещь для своих целей и у кажой вещи своя цена. А что касается электричества. то можно в зависимости от нужд, поставить таймер на выключение или же выключение после выполнения какой-то операции, а включение по WakeOnLAN
а) Эта штука приобреталась для зарабатывания денег
а телевизор тоже для ЗАРАБАТЫВАНИЯ денег приобретается? ЖК на 37дюймов стоит аж 60тыщщщ а с помощью него ВАЩЕ нельзя заработать — если только не пере продать в два раза дороже
б) Гнуть пальцы перед знакомыми (тут вообще без комментариев, хотя тогда уж можно было не лепить самопал, а взять что нибудь из лейблов HP, IBM и иже с ними).
это называется «ляпнул не подумовши»
последний пункт шутка
в каждой шутке есть доля шутки
—
libran
2 Vulcanite
«. если мне не изменяет память PRO1000MT хавает 1А по 5 вольтам итого 5Ватт «
Если точно 800 ma 5v по спецификации. Я и разделил итоговый результат на два, впрочем там прожорливых компонентов и так хватает.
«. но ИМХО , при подобных решениях задач. «
А что это за задачи вы так и не упомянули.
«ЖК на 37дюймов стоит аж 60тыщщщ. «
Телевизор покупают для культурного отдыха, у вас и сервер для этого предназначен?
«А что касается электричества. то можно в зависимости от нужд, поставить таймер на выключение или же выключение после выполнения какой-то операции, а включение по WakeOnLAN «
Геморройно это всё, на практике вы вряд ли будете это делать.