Как подключить камеру от телефона к ардуино

от admin

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

Лет восемь назад работал я в одном… а в прочем, не важно где. Делали мы там всякие разные интересные вещи. В том числе занимались системами технического зрения для роботов. Роботы были немного маленькие. И если привод для них маленький сделать не было для нас особой проблемой, то вот сделать миниатюрную цифровую камеру, которая не была бы размером с половину робота, было трудно (когда же мы наконец похороним 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мкм делать), чтобы не удорожать производство материнки, куда это всё напаивалось.

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

Есть ли способ подключить старую камеру телефона к arduino?

У меня есть модуль esp8266 wifi, arduino uno и старый мобильный. Мне было интересно, есть ли какой-либо способ, с помощью которого я мог бы удалить камеру с мобильного телефона и подключить ее к моему arduino для просмотра видео, снятого камерой. Возможно ли это с помощью оборудования, которое у меня в настоящее время есть? Или мне придется покупать больше оборудования? Пожалуйста, дайте мне знать, если требуется дополнительная информация, также дайте ссылку на полезные статьи.

Нет, Просто. нет., @Majenko

С использованием любого дополнительного оборудования., @pawan kumar

Телефон и подключение Wi-Fi/Bluetooth и какое-то программное обеспечение для совместного использования камеры?, @Majenko

Это не вопрос оборудования. Это вопрос документации. Вы НИГДЕ НЕ сможете найти ничего о том, что такое камера или как она работает. Без этого у вас нет НИКАКИХ шансов что-либо сделать., @Majenko

есть ли дешевый способ выполнить вышеуказанную задачу?, @pawan kumar

Купить ESP32-CAM, @Majenko

Хорошо, тогда, пожалуйста, направьте меня, если я куплю ESP32-CAM, то смогу ли я показать содержимое, захваченное браузером, с помощью какого-либо веб-приложения?, @pawan kumar

ДА. Есть пример в ядре ESP32. Он даже делает распознавание лица., @Majenko

2 ответа

Есть ли какой-нибудь способ подключить мою старую камеру телефона к arduino?

Да, но это может быть огромный объем работы, требующий дорогостоящего оборудования и навыков, на приобретение которых уходят десятилетия.

Посмотрите , как Майк подключает дешевый модуль камеры телефона к микроконтроллеру PIC32. это отличное видео, которое даст вам представление о том, что происходит. Обратите внимание, что он использует 32-разрядный микроконтроллер с относительно большой оперативной памятью на чипе. Возможно, вам придется использовать 32-разрядный Arduino (Due и т. Д.), А не один из 8-разрядных Arduino (Uno и т. Д.).

Майк из тех людей, которые могли бы реинжинирировать случайный модуль камеры со старого телефона, но это не проект для обычного пользователя Arduino, такого как вы или я.

Поскольку эти модули камеры стоят около 1 доллара, вероятно, лучше всего поискать модуль камеры для Arduino , который поставляется с документацией и программными библиотеками.

Uno низкоросл и недостаточно силен (скорость) для этой работы. Даже не задумываясь о том, как передать изображение, Uno некуда ему деваться. Изображения с самых скромных камер мобильных телефонов, вероятно, были 3 мегапикселя, и даже если предположить, что на пиксель приходится 2 байта памяти (допускается 5 бит для каждого из 3 цветов), для хранения изображения потребуется 6 МБ или 6000 КБ. Объем оперативной памяти Uno составляет 2 ТЫСЯЧИ байт, прежде чем вы вычтете всю оперативную память, необходимую его программе, помимо места для хранения изображения. Исходя из этих предположений, для хранения изображения Uno потребуется еще одна память, в 3000 раз превышающая объем оперативной памяти.

Есть ли вероятность того, что изображение не хранится в arduino , а отправляется на сервер в потоке (т. Е. небольшими пакетами)?

Я не могу себе представить, почему бы и нет — по крайней мере, теоретически, — но я понятия не имею, какое коммуникационное оборудование может быть встроено в камеру, или вам нужно будет разработать что-то самостоятельно. Но каким-то образом вам нужно будет передать данные изображения на Arduino в каком-то формате, который вы понимаете и с которым можете работать, по крайней мере, как только они попадут в веб-приложение. На данный момент важнейшей частью знаний было бы знание спецификаций того, как камера передает данные изображения — как быстро, в каком формате должны взаимодействовать Arduino и камера, или данные просто выливаются потоком после запуска, . ?

Ваши первые шаги, вероятно, должны будут заключаться в том, чтобы узнать, как некоторые типичные камеры справляются с этим, и выяснить, какая у вас конкретная камера и как она работает. Тогда у вас будет гораздо лучшее представление о том, что потребуется для завершения вашего проекта.

Существует ли какая-либо вероятность того, что изображение не хранится в arduino, а отправляется на сервер в потоковом режиме (т. е. небольшими пакетами)?(потому что я пытаюсь разработать веб-приложение в реальном времени), @pawan kumar

Arduino.ru

управление ip камерой с телефона через BT и ардуино нано

  • Войдите на сайт для отправки комментариев

Для меня этот проект был настоящий челендж в электротехнике и программировании и на этом форуме мне очень помогли с некоторыми вопросами. Решил поделиться наработками может тоже кому пригодится. Началось с покупки IP камеры с целью поиграться/разобраться. Решил повесить ее для наблюдения за машиной во дворе. Придумал крепление в возможностью регулировки по углу влево/вправо и вниз/вверх. т.к. машина стоит там где нашлось место. Поставил подключил и быстро понял что каждый раз открывать окно, снимать москитную сетку и поворачивать камеру руками не вариант. К креплению навесил сервопривод MG-90 для поворота влево/вправо (мне этого достаточно) управляется ардуино нано через блютуз HC-06 с любого андроида.

Под андроид программа в Аппинвенторе.

в верхней части выбор угла влево/вправо

кнопка выбора устройства блютуз / кнопка управления в ручном режиме

в автоматическом режиме камера направлена на точку А

точки В,С,D дополнительные на эти точки камера ходит с интевалом N минут указанных во втором столбце на N секунд указанных в 3 столбце.

Все в порядке, но.

Этот текст мало кто будет читать и мы можем написать здесь все, что угодно, например.
Вы живете в неведении. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание человечества. А если серьезно, то.

В целях обеспечения безопасности сайта от кибератак нам необходимо убедиться, что вы человек. Если данная страница выводится вам часто, есть вероятность, что ваш компьютер заражен или вы используете для доступа IP адрес зараженных компьютеров.

Если это ваш частный компьютер и вы пытаетесь зайти на сайт, например, из дома — мы рекомендуем вам проверить ваш компьютер на наличие вирусов.

Если вы пытаетесь зайти на сайт, например, с работы или открытых сетей — вам необходимо обратиться с системному администратору и сообщить, что о возможном заражении компьютеров в вашей сети.

Читать:
Расслоение электролита в аккумуляторе что это

Похожие публикации