Запускаем камеру от телефона, или что делать, когда ничего не получается?

Лет восемь назад работал я в одном… а в прочем, не важно где. Делали мы там всякие разные интересные вещи. В том числе занимались системами технического зрения для роботов. Роботы были немного маленькие. И если привод для них маленький сделать не было для нас особой проблемой, то вот сделать миниатюрную цифровую камеру, которая не была бы размером с половину робота, было трудно (когда же мы наконец похороним PAL в таких разработках и везде будет цифра?). Если вам любопытно узнать, чем же всё закончилось, прошу под кат!
Изначально у нас был микропроцессор PXA300, в который втыкался SoC, от тогда еще Aptina, типа MT9D131 (JPEG сразу на параллельном выходе), но всё это потребляло много, а смысла в таком монстре было мало.
Проблема звучала просто – робот привязан к компьютеру проводом на 100 мегабит. Оператор должен видеть цветную картинку хотя бы 640х480 в целых 15 FPS. Ставить в него камеру, которая гонит параллельный поток в XScale, в котором потом происходит тупое складывание картинки в буфер и передача кадра по сети, показалось слишком расточительным (ну серьезно, целый линукс на борту только чтобы перекладывать байты из одного интерфейса в другой?). Особенно учитывая целевое разрешение камеры. Нужно было решение проще. Плюс существенные ограничения по габаритам не позволяли поставить даже самый маленький объектив типа М12, он был просто конских размеров вместе с держателем.
Поскольку к описываемому моменту я достаточно поднаторел в разработке систем миниатюрных приводов, необходимость заниматься какой-то камерой немного удручала. Но в то же время неизведанное интриговало. В любом случае, хотелось научиться чему-то новому, особенно учитывая то, что мои предшественники путь, описанный ниже, так и не осилили (правда, тут мог сыграть фактор времени, они занимались этой разработкой парой лет раньше).
В результате творческого поиска меня заинтересовали камеры мобильных телефонов, которые были модульными, стоили как блохи (это выяснилось уже позднее) и теоретически закрывали все наши хотелки. Вопрос был только в том, как такую камеру подключить и получить с неё картинку. Я начал с изучения доступных на рынке мобильных телефонов и конкретно того, какие параметры обеспечивают камеры в них. Сразу стало понятно, что принципиально есть два типа таких камер – модули с линзами с гибко-жесткой частью, которые заточены под конкретный конструктив телефона:
,
и модули, вставляющиеся в так называемые кроватки, которые выглядели наиболее перспективно:
реальный модуль,
кроватки на любой вкус.
| Name | Length | Width | Height Option 1 | Height Option 2 |
|---|---|---|---|---|
| SMIA65 | 6.5 mm | 6.5 mm | 4.6 mm | 5.8 mm |
| SMIA85 | 8.5 mm | 8.5 mm | 6.1 mm | 7.1 mm |
| SMIA95 | 9.5 mm | 9.5 mm | 7.6 mm | 8.6 mm |
и по конструктиву нам подходит самый маленький – SMIA65.
Поиск нормальных брендовых камер ни к чему адекватному не привел. Искать такую дичь у китайцев я еще не умел, а нормальные европейцы типа ST хоть и заявляли о том, что производят подобные модули (и даже документацию на которые можно было скачать без регистрации и смс), продавать свободно заинтересованной публике не желали. Обращение в наше представительство ST не помогло, и пришлось продолжать копать.
Слава ремонтникам мобильников! Схемы, платы, фотки! У них есть всё. После изучения документации и сопоставления доступных для покупки телефонов и запчастей выбор пал на камеру от Nokia 5250.
Сферическая нокия в вакууме.
Симбиан, все дела. Я даже качал торрентом какие-то дикие исходники этой чудесной операционки, в попытке найти готовый драйвер для камеры. Но, увы, тогда моих способностей на это не хватило. Опять пришлось копать глубже.
Ох, какой же наивный я был. Это сейчас, пройдя весь путь от и до, я понимаю, что можно было существенно сократить время разработки, заказывая нормальные платы на нормальном производстве (правда, с оплатой тогда потенциально были некоторые проблемы, а ручки чесались сделать здесь и сейчас). Когда там появился JLCPCB или PCBWay? А тогда только ЛУТ на фольге, хлорное железо и два дня на всё про всё.
Signal Integrity? Вы делали гигабитные дифпары на двустороннем миллиметровом текстолите из платана лутом? А я делал. Даже импеданс считал.
0.5\0.2.
Ничо, работало (к сожалению, доступа к осциллографу, которым можно было бы посмотреть глазок, у меня не было). Сделал несколько тестовых плат. Намучился с пайкой.
Экспериментировал с паяльной маской, даже сделал несколько плат. Одну успешно запорол, пропаяв её при помощи флюса ТАГС (ха-ха, какая ирония. Сейчас на сайте чипдипа написано про остаточное сопротивление. Эх, эту бы надпись тогда). На той плате ничего нормально не работало, даже источники питания. Между дорожками, которые ну никак не могли быть связаны, всегда присутствовало от десятков до сотен килоом.
Причем плату после пайки мыл в семи водах. Поначалу я думал, что что-то успешно спалил. Начал отпаивать источники питания и всякую обвязку. Замыкания не проходили. Кончилось всё тем, что отпаял с платы вообще всё. Замыкания остались. Сделал вывод, что дело во флюсе, который затёк под маску и не вымылся вообще ничем. После этого я перестал делать платы с маской сам и паять их с флюсом ТАГС.
Но камера — это еще полбеды. Надо же было чем-то принимать последовательный сигнал и разворачивать его в параллельный, чтобы запихнуть в STM32F217 (BlackFin? Не, не слышали. К моменту описываемых событий я прочно состоял в секте стм-оводов и конфигурил клоки через только появившийся экселевский файлик (кубоводы, привет!)). Да-да, четырехсотых стм-ок тогда еще не было (хорошо, хорошо, они только появились), и я успешно использовал кит от стартеркита на двухсотой серии. Опять же в результате длительного поиска и изучения рынка оказалось, что пути ровно два. Либо брать лэттисовскую плисину, для которой был апноут по преобразованию CSI в PCAM (так и не нашел его из 2012 года у себя в архиве, но точно помню, что был такой), либо покупать STSMIA832 (забавно, ST выпилили свою доку на преобразователь с сайта. У них теперь можно только апноутом разжиться.) и учиться паять BGA. Поскольку пайка была мне ближе и знакомство с потрохами плисов не входило в планы, да и сроки откровенно поджимали, я обзавелся несколькими микросхемами и купил готовые переходники с TFBGA25 в DIP (и да, макет был собран на беспаечной макетке и даже как-то работал).
Собственно, схема десериализатора совершенно банальна (не переживайте, ГОСТом тут и не пахнет, с тех пор я научился рисовать схемы посимпатичнее).
Схема, да.
Видите красные площадки? Это площадки подключения переходника из TFBGA25 в DIP.
Плата.
Но вернемся к камере. Чем прекрасна SMIA? Да тем, что поначалу казалось, что всё просто.
Красота же?
Все регистры модулей описаны, как выбрать внутреннюю цепочку тактирования, со всеми необходимыми пре- и постскейлерами, тоже описано.
Такие подробности да в каждый документ бы!
Пока я занимался всем этим, SMIA_Functional_specification_1.0.pdf стал моей настольной брошюркой, зачитанной до дыр.
Но, чу, колченогое подобие драйвера (ах, какое громкое слово для заголовочного файла с несколькими функциями записи-чтения регистров камеры) написано, а в память микроконтроллера почему-то никакие байтики не падают. Хотя модуль через I2C успешно читается и записывается. О, сколько раз я думал, что неправильно сконфигурировал клоки или пропустил какую-то команду. Результата не было. Тогда я подумал, что хватит биться головой об стенку, надо делать что-то адекватное тому тупику, в который я угодил. Откуда я взял камеру? Правильно, из телефона. Телефон умеет показывать видео и делать фотографии с модуля? Умеет. Значит нужно тело на опыты. Драматичная нет история покупки донора для опытов лежит здесь.
Как бы там ни было, самым сложным было подпаяться к клоку и данным с модуля.
Ножки у кроватки под стенками, понимаешь.
Дальше было дело техники – снять дамп обмена процессора телефона с камерой и рассмотреть в деталях, что же происходит. В результате некоторых пертурбаций был получен вот такой лог обмена.
Вы тоже заметили строки с вопросиками, которыми я пометил запись непонятно чего непонятно куда (пакеты 45-50)? Эти странные регистры, не описанные в, казалось, незыблемой документации (кто ж знал, что в Manufacturer Specific Registers — [0x3000 – 0x3FFF] тоже надо что-то писать). Ну а дальше всё было очевидно. Пишем это непонятно что в не понятно куда и вуа-ля!
first_picture_ever.png
К сожалению не помню, есть ли тут дебайеризация (хм, J = demosaic(I,’grbg’); подсказывает, что есть) и если есть, то всё ли сделано правильно. Как и на втором кадре:
Камера лежала на боку.
Если повернуть голову набок, то можно прочитать 95% чего-то, рассмотреть рёбра какого-то радиатора, лежавшего на столе, и даже попытаться прочитать пароли на листочках с магнитной доски.
Почему всё такое зеленое? А пёс его знает. Этим вопросом уже занимался нормальный адекватный программист (Миша, привет!), который прикручивал эту систему к LwIP и проклинал меня за маленький объем SRAM и малую скорость 217-го (120МГц всего), который еле успевал перекладывать байты. По его словам, надо было просто правильно выставить усиление цветов каналов.
А дальше было дело техники. Нарисовать нормальную схему:
Ещё одна схема.
И сделать нормальную плату, которая показана на КДПВ.
Плата, да.
В производство, собственно, ушел вариант транслятора на отдельной платке (пришлось дорожки по 75мкм делать), чтобы не удорожать производство материнки, куда это всё напаивалось.
Времени было на всё угрохано больше года. Сейчас это кажется диким и ужасно непродуктивным. Наверняка, есть много людей, проделавших бы подобное за пару месяцев. Но я был один, в коллективе никто таким не занимался, интернеты упорно молчали, совета просить было не у кого. Но опыт есть опыт. Я ни сколько не жалею о потраченном времени. Полученные знания бесценны! Предполагаю, подобным образом можно раскурить многие другие модули, которые всё еще ставятся в телефоны, ведь, по сути, никакой особой магии в них нет. Знай себе записывай правильные байтики в правильные регистры да трассировку корректную делай.
Как подключить камеру от старого телефона к компьютеру
В общем, задача такая. Стоит в машине андроид голова, оно поддерживает внешнюю USB/AV камеру — если прицпеить, будет видеорегистратор.
Обычный видеорегистратор я не хочу, ибо его надо постоянно таскать с собой, цеплять, снимать и т.п. — вандалы не спят.
Нужно что то очень маленькое и в то же время HD — вывести по USB/AV на обратную сторону зеркала заднего вида.
Пораскинув мозгами, я вспомнил разобранный GT-N900 и уважительно малые размеры его камеры (подойдет и любая другая доступная камера). Проблема в том, что нет распиновки шлейфа.
Так вот, а есть ли где то подобные камеры с даташитом, а не просто там «камера для [название планшета]»?
И только? Вашими бы устами. все давно бы ставили такие камеры налево и направо. Вот только пока никто этого не сделал. Найдите хотя бы один пример успешного воплощения этой идеи и дайте ссылку. А распиновку мы разыщем.
Плясать надо от обратного — от схемы планшета. Там и будет распиновка
Я имел в виду камера с интерфейсом или USB или AV.
Порылся в инете, вот эти камеры планшетные — там только выводы с матрицы. В общем, к ним нужен девайс для сборки изображения в удобоваримый формат.
Под мое описание больше подходят камеры, вытащенные из ноутов — там примерно у всех одна и та же распиновка, которая прямо или почти прямо заходит в USB

Но вообще, поэксперементировав с головой, я понял, что запись видео — это не его. Толи проц слабоват, но в общем, любой андроидный видеорегистратор либо дропает кадры (подтормаживает), либо вообще не пашет.
Как подключить камеру телефона к компьютеру? Приложения и советы по настройке
Функциональность современных смартфонов огромна, а некоторые их возможности просто удивляют. Как подключить камеру телефона к компьютеру? Об этом и пойдёт речь в моей статье.

Неслучайно вопрос как сделать телефон веб-камерой для компьютера сегодня, в связи с ситуацией в мире стал ещё более актуален. Сделать это совсем не несложно, вот небольшое руководство.
Как использовать камеру телефона на компьютере?
Видеосвязь популярна, как никогда. Продолжающаяся пандемия сильно влияет на нашу жизнь. В дополнение к необходимости сохранять бдительность в интересах здоровья, школьники и студенты переходят на онлайн-обучение, а взрослые переключаются на удалённую работу. Бесплатные программы обмена мгновенными сообщениями и приложения видеоконференций для многих создают затруднения. Однако, для комфортного их использования необходимо выполнять несколько простых условий.

У вас может быть любимое (иногда предустановленное) приложение для видеосвязи, но вы не сможете обойтись без надёжного стационарного или высокоскоростного мобильного интернета. Вам также необходим смартфон, ноутбук или компьютер. Зачастую некоторым не хватает микрофона или хорошей веб-камеры. Вместо того, чтобы прибегнуть к дополнительным покупкам, используйте телефон как веб-камеру для компьютера.
Да, можно много говорить о смартфонах, жаловаться на их отдельные элементы и характеристики, но, к фото и видео возможностям производители в последнее время приложили немало усилий. Камеры в телефонах предлагают гораздо лучшее качество, чем встроенные веб-камеры в ноутбуках.

В настоящее время почти у всех есть более или менее современный смартфон. Вы можете легко подключить телефон как веб-камеру к компьютеру и использовать его вместо дополнительных аксессуаров. Нужно лишь установить соответствующее приложение и настроить соединение с вашим ноутбуком или ПК (проводным или беспроводным способом) в соответствии с предпочтениями или возможностями.
Как использовать камеру телефона на компьютере?
Какое приложение подойдёт? Одной из самых популярных программ для подключения камеры телефона к компьютеру является EpocCam. Основное преимущество — широкая совместимость, в которую входят компьютеры с macOS (версия 10.11 и выше) и Windows (версия 7 и выше), а также мобильные устройства с Apple iOS и Google Android.

Кроме того, здесь поддерживаются все популярные приложения для видеоконференций, включая Skype, Microsoft Teams и Zoom. Производитель заявляет, что EpocCam работает со всеми приложениями для веб-камер.
Как использовать EpocCam и телефон в качестве веб-камеры на компьютере?

Настройка очень простая и сводится к четырём шагам:
- Подключите компьютер и телефон к вашей сети Wi-Fi или через кабель.
- Установите драйверы EpocCam на свой компьютер.
- Установите мобильное приложение EpocCam на свой телефон.
- Откройте приложение EpocCam на телефоне и программу для проведения видеоконференций, выбрав в её настройках EpocCam Camera (как показано на примере ниже).
Советую скачивать EpocCam с официального сайта производителя , а мобильные приложения напрямую из App Store и Google Play . Ни для кого не секрет, что EpocCam лучше работает на смартфонах iPhone.

Программа поддерживает обе камеры, чтобы вы могли удобнее использовать телефон как камеру для компьютера — основную и фронтальную. Это влияет не только на качества видео, но и даёт нам более широкие возможности, когда дело доходит до настроек. Конечно, бесплатная версия содержит определённые ограничения связанные с качеством видеосвязи, когда платная — нет, и также предоставляет несколько дополнительных функций.

Пример работы EpocCam – как сделать телефон камерой для компьютера?
Можно ли подключить камеру телефона к компьютеру через другие приложения?
Конечно, таких программ на самом деле немало. К примеру, iVCam Webcam — является бесплатным и популярным решением, чтобы использовать телефон как web-камеру для компьютера. Владельцы мобильных устройств могут также попробовать программное обеспечение для создания беспроводной веб-камеры DroidCam . Все эти приложения работают по схожим принципам, а их настройка аналогична той, которая обсуждалась на примере EpocCam.

Что стоит помнить, подключая телефона к компьютеру, как веб-камеру
Как всегда, напоминаю вам, что, скачивать любые приложения следует из надёжных источников. Это значительно снижает риск заражения ваших девайсов вредоносным ПО.
Если какое-либо из вышеупомянутых решений (или других программ такого типа) вам понравится, и вы будете выводить камеру телефона на компьютер, имейте в виду, что ПО может довольно сильно поглощать энергию батареи.

В то же время первоначально, некоторых могут раздражать проблемы с правильным позиционированием смартфона, в помощь вам стойки или штативы.
А вы когда-нибудь использовали смартфон таким образом? Каким приложением транслировали камеру с телефона на компьютер? Дайте мне знать в комментариях!
Как заставить смартфон работать вместо веб-камеры для онлайн-трансляций на ПК
Не всегда дома можно найти веб-камеру для ПК, но у многих есть смартфон, а так как современные смартфоны — это весьма умные устройства с неплохими линзами, то с помощью небольших манипуляций ими можно заменить веб-камеру с микрофоном и даже вспышкой. О том, как это сделать и пойдёт речь в этом материале.
Содержание
В интернете есть множество различного ПО, которое способно превратить смартфон в веб-камеру для ПК, но всё оно в большинстве случаев либо платное или сомнительного качества, а времени на поиск и изучение тратить бывает попросту жалко. Благо, есть проверенное временем Open Source решение под названием DroidСam.
DroidCam — это бесплатное приложение для Android/IOS и Windows/Linux c открытым исходным кодом, которое позволяет использовать смартфон в качестве веб-камеры для ПК. (Исходный код можно посмотреть здесь).
Предварительные настройки
Прежде чем задействовать наш смартфон вместо веб-камеры, выполним пару простых предварительных манипуляций с нашим устройством.
Подключаем наш смартфон по USB к PC и проверяем актуальность драйверов для работы Windows со смартфором через Snappy Driver Installer. (Пример работы ПО можно посмотреть здесь).
Если что-то нашлось для смартфона (ADB, MTP), то устанавливаем.
В настройках смартфона много раз нажимаем по информации о телефоне для активации режима разработчика.
Разрешаем управлять смартфоном с ПК: Система —> Режим Разработчика —> Разрешить отладку по USB.
Включить отладку
Разрешить отладку с ПК при работе с ПО
Вот, собственно, и всё. Мы завершили установку драйверов на Windows и выдали права смартфону для функционирования DroidСam.
Инструкция для Windows
Гайд весьма прост и не требует каких-то особенных знаний.
- Скачиваем и устанавливаем приложение на смартфон (APK) и Windows-клиент (exe).
- Запускаем приложение на ПК и смартфоне.
- Выбираем режим работы ПО: USB или WIFI. (Советую выбирать USB для меньшей задержки).
- Обновляем список устройств и нажимаем Start.
Если вы всё сделали правильно, то на экране смартфона и в окне программы появится изображение с камеры.
Режим работы устройства и запуск
Демонстрация работы
Теперь смартфон без проблем можно использовать в любых приложениях и для проведения онлайн-трансляций.
Видеопример
Инструкция для Linux
Инструкция для Linux полностью аналогична, разве что отличаются методы установки драйверов и пакетов.
Все действия производились на ArchLinux.
Выполним установку базовых зависимостей для обнаружения любого смартфона и работы ПО .
- Скачиваем Linux-клиент с сайта DroidCam или собираем сами через AUR.
- Обновляем образы командой sudo mkinitcpio -P и подключаем смартфон к ПК. Проверим командой mtp-detect видит ли смартфон Linux. Если строчка не пуста, то значит всё нормально.
- Запускам ПО и используем.
Меньше чем за 10 минут мы превратили наш смартфон в дорогущую веб-камеру с микрофоном, подсветкой и даже автофокусом, что позволило не только сэкономить нам деньги на покупке отдельной камеры, но и избавить себя от лишнего устройства на столе. Используйте свой ПК на максимум!