Камера для ардуино: Модуль видеокамеры и Arduino||Arduino-diy.com

Содержание

Сверхдешёвая камера с управлением — своими руками / Хабр

В качестве преамбулы скажу, что поскольку, подобная статья уже была, я по-началу и не собирался писать о камере на хабр.

Камера была сделана, просто ради интереса, тренировки навыков и отработки технологии удалённого управления физическими объектами.

Немного позже использовал эту систему как наглядный пример, сопровождающий обзор, на другом ресурсе (а фактически, в качестве чита что-бы подтянуть голоса). Это был настоящий бета-тест, который выявил кучу недоработок. За это огромное спасибо всем неравнодушным, помогавшим кто советом, а кто и куском кода.

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

Вот это всё и сподвигло меня на статью. А чтобы не повторюшничать, я и решил заостриться на стоимости, т.к. у автора предыдущего топика на эту тему, насколько я помню, итоговая стоимость вылилась во что-то в районе 5000р.

О том какова стоимость моей поделки: читаем ниже.

Итак, «как корабль назовешь, так он и поплывет», раз написал заголовок про дешевизну — буду соответствовать прозой, так что, детали — потом, а сперва о стоимости.

Пройдём по ценам*

* все цены даны со скидками. О скидках — отдельно, пожже.

Необходимый набор:

  • Arduino Uno (или nano) — 15.29$
  • Сервопривод (рулевая машинка) SG90 2х2.37$ = 4.74$
  • Вебкамера 3.01$
Итого

: 23.04$ (примерно

750р

, на данный момент)

Дополнительный набор (ленивости + плюшки):

  • Экран от Nokia 5110 — 250р (в комплекте с самой Нокией и блоком питания, куплено пару лет назад, будем считать, что именно для этой цели, реально можно найти уже вдвое дешевле, или вообще на халяву)
  • MegaShield v4 к Arduino — 5.86$
  • Проводки-коннекторы — 2.86$ (40 штук за эту цену, реально использовано 7)
  • Сверхяркий сверхсиний сверхтодиод для подсветки экрана — 5р/шт (лучше 4шт., у меня сделано неправильно)
Итого

: примерно

550р

Всего: 1300р

О реализации

Всё делалось с нуля. Повторять то, что уже было — я не стал, во-первых из соображений тренировки, а во-вторых Ethernet-модуля у меня на тот момент не было, я решил что это всё слишком сложно (там был завязан MySQL) и это решение мне однозначно не подойдёт.

О задачах
Задачи я себе обозначил следующие:

  • Видеть картинку/видео
  • Иметь возможность управлять камерой
  • Иметь возможность управлять размером и качеством видео или картинки, причём не «уже на стороне клиента», а «ещё на стороне сервера, по команде клиента». Такая необходимость возникла из-за того что мне не везде доступен «большой и широкий интырнет»
  • Обеспечивать приемлемую «реалтаймовость»
  • Иметь задел на будущее — управление нагрузкой 220В и т.д. Собственно ради этого всё и затевалось, т.к. готовые решения либо жутко дороги, либо такой возможности не предоставляют.

О проблемах

В ходе реализации возникли вопросы вот такого плана:


  • Видео либо грузит процессор в случает показа на несколько пользователей, либо даёт задержку 5-10, т.е. не обеспечивает «реалтаймовость», из-за чего нельзя сразу определить адекватность и вообще работоспособность управления
  • Использование сервиса трансляций, хотя и сильно разгружает сервер в случае большого онлайна, не обеспечивает необходимую надёжность, и, опять же, даёт задержку
  • Специальный сервер для трансляции видеопотока требует определённых навыков, которых у меня пока что нет
  • Использование отображения путём смены картинок не обеспечивает высокий fps, а также постоянно обращается к жёсткому диску, что, при большом количестве пользователей, может вызывать лаги картинки не из-за загрузки процессора, а именно из-за обращения к диску

О решениях
  • Решено использовать в качестве отображения — картинки
  • Для исключения жёсткого диска из процесса выдачи картинок установлен RamDisk, на который дважды в секунду «ложится» изображение с вебкамеры
  • Для выдачи картинки решено использовать php и gdlib
  • Обновление картинки инициируется клиентом посредством javascript и ajax, и происходит без обновления самой странички
Довольно лирики!

Как выглядит

Выглядит всё более чем скромно

Работает примерно так:

Ардуина, если кто не видел

Мегашилд с проводками

«Сэндвич» в профиль

«Сэндвич» анфас

LCDшка

Она же вид сзади (пины и кондёр)

В сборе

В сборе 2

Колхоз — система проводков и верёвочек (крепление камеры)



Куда же без него

Как устроено аппаратно

Вебкамера подлючена по USB к компьютеру.

Arduino тоже подключена к компьютеру по USB.

Все внешние устройства, ввиду исключительно малого потребления тока, подключены напрямую к Arduino, работает

круглосуточно

уже полтора месяца, с онлайном 10 пользователей в момент наименьшей нагрузки.

Как работает программно

На стороне клиента

чистый веб-интерфейс, без всяких плагинов и примочек. Только html, css, и javascript (+ajax).

На стороне сервера

  • Сам сервер — Apache
  • Обработчик скриптов — php
  • Приём картинок с камеры — любая самая простая доступная, бесплатная или самопальная программа для сохранения картинок с вебкамеры
  • Хранение картинки — RamDisk, утилита для создания дискового раздела в оперативной памяти (русскоязычная версия RAMDisk «Enterprise» бесплатна для локализованных систем)
  • Чтобы не прописывать в php прямых локальных путей, папка с картинкой смонтирована в www папку с помощью juction (бесплатная утилита Марка Руссиновича)
  • Передача управления из интернета к Arduino реализована с помощью программы-прокси, следующим образом: php скрипт создаёт UDP сокет и отправляет датаграмму на определённый порт, далее программа-прокси слушает этот этот порт и принимает приходящие на него сообщения и отправляет их на COM-порт Arduino (можно даже без обработки). Выбор UDP вызван исключительно для упрощения системы, UDP не требует никаких подтверждений и проверок о доставке-отправке ни со стороны клиента, ни со стороны сервера.

На стороне Arduino
  • Сама (почему «сама»? потому что «плата») Arduino
  • Скетч внутри неё — стандартные примеры из штатного набора arduino-0022 servo и serial + найденная на просторах интернета библиотека для дисплея, доработанная до приемлемого вида (в плане кириллицы и латиницы одновременно)
  • На данный момент плюсом стоит мегашилд, чисто из-за удобства и культурного вида — в этом варианте я не спаял ни одного проводка (за исключением платы к дисплею)

Система выдержала все нашествия и рейды, а так же онлайн более 120 пользователей.
Были случаи отказа управления, которые случались из-за моих недоработок в программе-прокси, в частности из-за недостаточной обработки ошибок, в то время как програмная часть со стороны Апача и Ардуино держалась достойно.

Будьте внимательны к мелочам

Хочу отметить проблемы с программной частью которые случались из-за собственной невнимательности/неосведомлённости/ненаблюдательности:


  • Первое с чем я серьёзно мучался: Arduino принимает из отправленной на её виртуальный COM-порт строки отдельно первый байт и отдельно всё остальное. Какие изощрения я только не пробовал — и с массивами и с кучей проверок… Хоть ты убейся. Решение проблемы? Пришло неожиданно и внезапно, в моментк огда я об этом и не думал: Sleep 2 после чтения каждого байта. ВСЁ!
  • Вторая проблема — серьёзная нагрузка на сервер, казалось бы, из ничего, возникла потому, что обновление картинки было сделано по таймеру, не дожидаясь собственно факта загрузки картинки (или ошибки загрузки). Таком образом отсылалась куча «лишних» запросов.
  • Третье: FireFox оказался самым правильным и капризным браузером, и заставил меня учиться писать валидный код. Так например, событие OnClick по элементу Option работать не должно. А оно работет, везде кроме огнелиса.
  • Четвёртая, совершенно не явная и редко всплывающая: периодически картинка «ломалась». Как выяснилось, это происходило в момент когда файл был занят при записи. Т.е. проверка file_exists() проходила, а файл оставался залоченным. Не помогла и проверка is_writable(). Пришлось организовывать цикл по наличию ошибки и внутри него отрабатывать чтение файла «до победного конца».
Оставшиеся недоработки

Есть и такие.


  • Во-первых, это описанные в каментах «левые» символы иногда появляющиеся в конце сообщения на экране. На самом деле это команды управления. Уши этого бага растут из того что если активно спамить или жать кнопки, буфер ком-порта не успевает полностью прочитаться Ардуиной и последующие сообщения валятся в конец буфера. Решение есть, но пока не сделано.
  • Во-вторых, это периодическое падение UDP-сокета в программе прокси при большом онлайне. В чём причина — не знаю. Проявляется не сразу. Умирает и не «откисает». Помогает закрытие сокета и бинд по-новой. Возможно, виноват кривой видовский winsock.ocx. Переписывать это дело на API в бейсике, как-то лень. Пока одним из «топорных» решений вижу сброс и ребинд сокета по таймеру, каждые, скажем, полчаса.
О скидках

Общеизвестно, что в Китае — дешевле. Главное знать места,

где именно

дешевле, и как добыть дополнительную скидку.

Тут смысла писать нет — слишком большой объём текста с картинками, к тому же известный большинству.

Поэтому дабы не провоцировать ярых противников борьбы со спамом и прочим «реферальством», отмечу необходимый минимум — это скидка 15% на BiC, складывающаяся из одноразового купона на 10% и скидки за первую покупку 5% при вводе рекомендателя + хинт, как использовать эту систему неоднократно.

Все заинтересовавшиеся, могут ознакомиться с полной информацией по ссылке на страничке с, собственно, самой камерой.

Ссылки

Камера, работающий экземпляр

, для тех кто ещё не видел и не наигрался


Топик

, в котором ссылку на камеру слили на хабр раньше времени


RAMDisk
juction
Исходники

(упрощённые, во избежание) клиентской части, серверной (php) и программы web-arduino-прокси (VB 6.0)

Apache, php, либо какие-то комбинированые сборки и т.д. — на свой вкус.

Камеры и объективы для микрокомпьютеров | Raspberry Pi | Arduino | Banan Pi | Asus

Камеры и объективы для микрокомпьютеров в настоящее время являются одним из самых важных компонентов этих систем, поскольку именно на базе микрокомпьютеров осуществляется сборка автономных роботов с AI и систем мониторинга, сигнализации и управления, а камеры с соответствующими объективами являются их “глазами”. 

Камеры могут работать как в видимом человеческому глазу диапазоне частот, так и в невидимых (например, инфракрасный). 

Основное назначение камер — формирование картинки окружающего пространства для её дальнейшего анализа системой. 

Современные камеры позволяют формировать изображение в высоком разрешении.

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

По углу обзора объективы разделяются на:

  • сверх-широкоугольные объективы типа “рыбий глаз” (Fisheye) с FOV 180°, захватывающие большой сегмент области фиксируемого изображения (что удобно для систем наблюдения, когда оптические искажения не так важны, а камера может охватить большее количество окружающей территории), 

  • широкоугольные объективы с FOV 60°-120°,

  • стандартные с углом обзора FOV 10-20°,

  • телефото с изменяемым фокусным расстоянием и углом обзора FOV 5-45°,

  • для макроскопических съемок, с узким углом обзора и многократным увеличением объекта съемки.

 

Для специальных задач предназначены стереокамеры, позволяющие обрабатывать изображение, получаемое синхронно с двух разнесенных в пространстве камер и формировать стереокартинку.

Стереокамеры, работающие в диапазоне видимого и ИК излучений позволяют определять “глубину” изображений и применяются для определения расстояния до объектов.

В нашем магазине представлены различные варианты камер и объективов, позволяющие подобрать нужное именно для вашего проекта оборудование, поэтому цена на Камеры и объективы с доставкой в интернет магазине evo.net.ua будет в рамках Вашего бюджета.

 

Преимущества и особенности камер для микрокомпьютеров:

 

  • Взаимозаменяемость. Все модули камер снабжены стандартными интерфейсами связи, позволяющими быстро подключиться к вашему Raspberry Pi или другому микрокомпьютеру.

  • Компактность. Основная задача данных типов камер — получить картинку для микроустройства, поэтому вес и габариты камер рассчитаны с учетом этих особенностей.

  • Высокое разрешение. Стандартно камеры уже имеют разрешение от 8Мпикс  до 12 Мпикс, что позволяет формировать картинку нужного качества. 

  • Универсальность. Камеры часто оборудованы байонетом или адаптером для возможности использования различных типов съёмных оптических объективов (C-mount / CS-mount.)

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

 

Купить Камеры и объективы для микрокомпьютеров с доставкой по Украине

Наш магазин предлагает доставку камер и объективов, а если Вас интересует цена камера, то наши консультанты ответят на все вопросы в рабочее время, указанное в разделе Контактная информация.

Камеры и объективы для микрокомпьютеров, купленные в нашем интернет-магазине, могут быть доставлены к Вам по адресу, либо в ближайшее отделение удобной транспортной компанией.

Arduino модуль камеры видео на экран Android



Я пытаюсь подключить модуль камеры к моему Arduino Mega, подключить Мой Mega к моему Android телефону (через Bluetooth или другой) и отправить живой вид камеры на мобильный телефон.

Я видел видео в интернете, которое показывало это для неподвижных изображений - изображение, захваченное модулем камеры на Arduino, было отправлено на Android, а выходное изображение было просмотрено через пару секунд (время отправки изображения на Bluetooth).

Можно ли это сделать с помощью живого видео вместо изображения? Если да, то как? Если нет, то каковы некоторые обходные пути?

android camera arduino
Поделиться Источник mabdrabo     14 февраля 2013 в 17:18

3 ответа


  • Вещание Android Видео Камеры

    То, что я хочу, - это broadcast видео с камеры android в удаленные места, чтобы любой мог смотреть это видео на своем мобильном телефоне или веб-сайте. Я успешно подключил его к vlc-плееру на своем компьютере. Я пробовал red5 сервер, Adobe media server , ffmpeg сервер, но все в Вейле. Каждый из...

  • Потоковое Видео Arduino-Touch Designer

    Могу ли я отправить изображение или видео из Arduino IDE в программное обеспечение Touch Designer? Могу ли я использовать, например, фотографии, сохраненные с помощью камеры CMOS? Спасибо, Джузеппе



3

Я не думаю, что вы можете делать живое видео - последовательная пропускная способность на Arduino не очень высока. Он достигает максимума со скоростью 115200 бит в секунду. Чтобы получить байты в секунду, вы делите их на 10 (обычно 8 + 2 бита), что дает вам 11.5 kilobytes в секунду.

Кадр видео размером 640 x 480 составляет 640 x 480 x 3 (один байт для каждого цветового компонента RGB) примерно около 1000  килобайт. JPEG камеры используют M-JPEG , что дает вам сжатие около 20:1 ( см. Статью Википедии ), так что это может сжаться примерно до 1000K / 20 = 50K. Таким образом, камера должна передавать 50K со скоростью 11.5 килобайт в секунду, поэтому для передачи одного кадра потребуется не менее четырех секунд. Затем он должен передать это по Bluetooth или какой-либо другой последовательной связи, что займет по крайней мере еще четыре секунды, то есть всего восемь секунд. Возможно, вы сможете сделать это быстрее параллельно, чтобы получить в общей сложности четыре секунды, но я сомневаюсь в этом, так как мега-чип работает только на 16 MHz,, поэтому он может обрабатывать в лучшем случае 16 килобайт в секунду в очень идеализированном мире.

На видео похоже, что для того, чтобы изображение попало с камеры на телефон, требуется около 10 секунд, что довольно хорошо соответствует восьмисекундной оценке.

Вы можете попробовать изображения меньшего размера - скажем, 320 x 240, с оттенками серого (если камера может это сделать). Это уменьшает количество байтов в 12 раз, так что вы можете получить 1.5 кадров в секунду.

Возможно , лучшим решением является использование Raspberry Pi, который имеет процессор 1 GHz, и USB 2.0 максимальная скорость 280 Mbits/s, которая более чем в тысячу раз быстрее, чем 115200 bit/s.

Поделиться Neil Lamoureux     15 февраля 2013 в 19:22


Поделиться Kanaris007     30 января 2016 в 16:07



0

вот как мне удалось решить свою проблему: я установил свой старый IP Webcam wildfire, настроил точку доступа wifi с моего nexus4 , подключился к ней с wildfire, взял ip-адрес wildfire и поместил его в веб-просмотрщик nexus4.

Поделиться mabdrabo     22 марта 2013 в 11:50


  • Android флип зеркало передней камеры перевернутое видео

    Я пытаюсь записать видео с передней камеры Android, одновременно отображая его на экране surface view. Что я обнаружил с помощью фронтальной камеры, так это то, что она зеркально переворачивает видео во время записи, даже если вид поверхности показывает нормальный вид. Есть ли какой-нибудь способ...

  • Прямая трансляция видео с камеры на android

    Я пытаюсь создать приложение, которое будет транслировать видео с камеры телефона android через интернет по протоколу TCP или UDP. В настоящее время я могу передать массив байтов с телефона android на свой компьютер, на котором работает сервер, который я написал в C#. я уже делал потоковое видео...


Похожие вопросы:


воспроизведение видео на tft ЖК-экране, подключенном к arduino uno, с камеры, которая также подключена к тому же arduino uno

Можно ли воспроизводить живое видео на tft-ЖК-экране, подключенном к arduino uno, с камеры, которая также подключена к тому же arduino uno? Если это невозможно с arduino uno, возможно ли это с...


Растягивание предварительного просмотра камеры на весь экран в android

Я использую это приложение предварительного просмотра камеры для своего приложения Android. Мне нужен предварительный просмотр камеры во весь экран. Поэтому я использовал пример из Android APIs,...


Arduino + Bluetooth модуль + Android

Я пытаюсь придумать способ сделать простой проект домашней автоматизации, который включает в себя модуль Arduino, модуль Bluetooth и телефон Android. Идея заключается в том, что у меня есть две...


Вещание Android Видео Камеры

То, что я хочу, - это broadcast видео с камеры android в удаленные места, чтобы любой мог смотреть это видео на своем мобильном телефоне или веб-сайте. Я успешно подключил его к vlc-плееру на своем...


Потоковое Видео Arduino-Touch Designer

Могу ли я отправить изображение или видео из Arduino IDE в программное обеспечение Touch Designer? Могу ли я использовать, например, фотографии, сохраненные с помощью камеры CMOS? Спасибо, Джузеппе


Android флип зеркало передней камеры перевернутое видео

Я пытаюсь записать видео с передней камеры Android, одновременно отображая его на экране surface view. Что я обнаружил с помощью фронтальной камеры, так это то, что она зеркально переворачивает...


Прямая трансляция видео с камеры на android

Я пытаюсь создать приложение, которое будет транслировать видео с камеры телефона android через интернет по протоколу TCP или UDP. В настоящее время я могу передать массив байтов с телефона android...


Потоковое видео с камеры Android на сервер Wowza. (RTMP)

Я пытаюсь транслировать видео с Android на сервер Wowza, используя RTMP. Android не поддерживает RTMP ,но я нашел эту библиотеку Aftek . Мой вопрос 1: у кого-нибудь есть опыт использования этой...


Запись видео с камеры параллельно OpenCV обработке на android

Как я теперь понимаю, не так-то просто записать видео, обработанное OpenCV на android. Но есть ли возможность сделать это параллельно: - для записи видео с камеры, используя стандартные инструменты...


Android видео камеры зеркальная

Разработчики Здравствуйте android , Я использую камеру API и сталкиваюсь с проблемой, которая вызывает зеркальное отражение видео передней камеры при завершении записи и отображения на videoView....

ESP32-CAM ov2640, потоковое видео в среде Arduino IDE.

Эта статья представляет собой краткое руководство по началу работы для платы ESP32-CAM. Я расскажу как настроить веб-сервер потокового видео менее, чем за 5 минут с помощью Arduino IDE.

Примечание: в этой статье я использую пример из библиотеки arduino-esp32, но не рассматриваю как его изменить.

ESP32-камера - это очень маленький модуль камеры с чипом ESP32-S, который стоит около $ 10. Помимо камеры OV2640 и нескольких GPIO для подключения периферийных устройств, он имеет слот для карт microSD, который может быть полезен для хранения изображений, сделанных с помощью камеры, или хранения файлов.

Основные характеристики ESP32-CAM:

Беспроводной модуль - ESP32-S WiFi 802.11 b/g/n + модуль Bluetooth;

Внешнее хранилище - слот для карт micro- SD ёмкостью до 4 ГБ;

Поддержка камер OV2640 (продаётся с платой) или OV7670;

Формат изображения - JPEG (только OV2640), BMP, оттенки серого;

Светодиодная вспышка.

Контакты – 16 с интерфейсами UART, SPI, I2C, PWM

Напряжение питания - 5 В;

Потребляемая мощность:

  • при выключенной вспышке - 180 мА;
  • при включенной вспышке - 310 мА;
  • глубокий сон - 6 мА;
  • модем-сон - 20 мА;
  • лёгкий сон - 6,7 мА.

Размеры - 40,5 х 27 х 4,5 мм

Температурный диапазон:

  • рабочий: 20 – 85 ℃;
  • хранение: -40 - 90 ℃ при 90% относительной влажности.

Карты памяти на 4 Гб не было под рукой, поэтому проверить не получилось. Ставил на 16 Гб. Не сохраняет.

На следующем рисунке показаны выводы ESP32-CAM.

Есть три вывода GND и два вывода для питания: 3.3 V, либо 5V.

GPIO 1 и GPIO 3 - это последовательные контакты. Вам нужны эти контакты, чтобы загрузить код на вашу плату. Кроме того, GPIO 0 играет важную роль, поскольку он определяет, находится ли ESP32 в режиме программирования или нет. Когда GPIO 0 подключен к GND, ESP32 находится в режиме программирования.

Для программирования ESP32-камеры понадобятся следующие компоненты:

Приступим к установке, настройке необходимого ПО и прошивке ESP32. Разделим вс ё на несколько этапов:

1. Установка дополнения ESP32
В этом примере я использую Arduino IDE для программирования платы ESP32-CAM. Установите Arduino IDE, и настройте работу с ESP32. Если этого у вас не сделано, воспользуетесь следующей инструкцией:

Установка, прошивка платы ESP32 в Arduino IDE (Windows, Mac OS X, Linux)

2. Пример Кода CameraWebServer
В среде Arduino IDE выберите пример для работы с камерой для этого перейдите:

Файл > Примеры > ESP32 > Camera>CameraWebServer

Откроется пример скетча работы с камерой ESP32:

Если вы не можете найти данный пример, то можете его скачать с нашего сайта. Внизу статьи есть ссылка для скачивания материала. Внимание! Для того, чтобы скачать файлы с сайта вам нужно зарегистрироваться.

После загрузки распакуйте папку и откройте файл скетча для esp32 cam ov2640: CameraWebServer.ino.

Перед загрузкой прошивки в модуль ESP32 CAM необходимо указать ваши данные для подключения к Wi-Fi сети.

const char* ssid = "Имя_точки_wi-fi";
const char* password = "пароль_от_wi-fi";

Затем убедитесь, что вы выбрали правильный модуль камеры. В данном случае используйте модель AI-THINKER Model. Для этого закомментируйте все другие модели и раскомментируйте указанную ниже:

#define CAMERA_MODEL_AI_THINKER

Теперь код готов к загрузке на вашу ESP32.

3. Прошивка ESP32-CAM

Для прошивки я использую самый недорогой TTL программатор. И всё прошивается и работает отлично.

Подключаю всё вот по такой схеме:

Важно! GPIO 0 должен быть подключен к GND, чтобы вы смогли загрузить код.

Чтобы загрузить код, выполните следующие действия:

  • Перейдите в меню Инструменты > Плата и выберите модуль ESP32 Wrover
  • Перейдите в меню Инструменты > порт и выберите COM-порт, к которому подключен ESP32
  • В меню Инструменты > Partition Scheme , выберите “Huge APP (3MB No OTA)
  • Нажмите кнопку ESP32-CAM on-board RESET
  • Затем нажмите кнопку Загрузка, чтобы загрузить код

Важно! Если вы не можете загрузить код, то еще раз проверьте, что GPIO 0 подключен к GND и, что вы выбрали правильные настройки в меню Инструменты. Вы также должны нажать кнопку сброса на борту, чтобы перезагрузить ESP32 в режиме программирования.

4. Получение IP-адреса и подключение к камере.

После загрузки кода отключите GPIO 0 от GND. Подключите питание на 5 В. На 3,3 В у меня камера не заработала.

Откройте последовательный монитор со скоростью передачи данных 115200. Нажмите кнопку ESP32-CAM on-board Reset.

IP-адрес ESP32 должен быть выведен в последовательном мониторе.

Теперь вы можете получить доступ к серверу потоковой передачи камеры в локальной сети. Откройте браузер и введите IP-адрес ESP32-CAM . Нажмите кнопку Start Streaming, чтобы начать потоковую передачу видео.

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

Есть еще несколько настроек камеры, с которыми вы можете поиграть, чтобы настроить параметры изображения.

Если вы откроете монитор порта во время работы камеры, то вы получите подробную информацию о количестве кадров в секунду, о скорости обработки и пр.

Чем выше качество потокового вещания, тем меньше кадров. Комфортно работает при разрешении 600х800.

Можно реализовать распознавание лиц. Но, пока, в данном направлении я не экспериментировал. Как будут результаты, обязательно напишу статью, или сделаю проект.

Подписывайтесь на наш канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока. И до встречи в следующей статье.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

arduino-esp32-CameraWebServer-master.zip14 Kb 1221 Скачать

Вы можете скачать файл.

Камера Arduino: модуль камеры SPI от Arducam

Сложная камера высокого разрешения на простом микроконтроллере и интерфейсе, возможно только Arducam.

Что такое Arducam Arduino Camera

Проект Arduino начался в 2005 году как инструмент, который студенты из Италии могут использовать в курсах по разработке электроники, чтобы предоставить студентам простую в использовании платформу, которая объединяет как аппаратное, так и программное обеспечение. В настоящее время Arduino становится отраслевым стандартом для интегрированных сред разработки и компиляторов для микроконтроллеров.

Приложения, такие как Интернет вещей, носимые устройства, 3D-печать и робототехника, уже были созданы с использованием решения Arduino. Единственное, что еще требуется, - это приложения для камеры.

Arducam изобрела первую в мире SPI-камеру высокого разрешения для Arduino в 2012 году. С тех пор камеры ArduCam SPI удовлетворяют потребности в камерах, которые ранее невозможно было удовлетворить с помощью встроенной поддержки камеры платы Arduino.

Эти камеры SPI подходят для широкого спектра устройств, не только для Arduinos, но также могут использоваться на других устройствах, имеющих разъемы SPI и I2C.

Почему камеры сложны для Arduino

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

Аппаратная часть - интерфейс камеры и ОЗУ

Платы Arduino, из которых наиболее распространенными и популярными являются UNO, MEGA и Nano, основаны на процессорах Atmel ATMega328p, 1280 и 2560. Позже 32-битная Arduino Due использует Atmel SAM3X8E.

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

Программная сторона - драйвер камеры

С другой стороны, даже если на Arduino есть выделенный порт камеры, вам все равно понадобится соответствующий драйвер камеры , чтобы он работал, потому что для разных датчиков изображения требуются разные драйверы камеры, а Написание такого драйвера для - непростая задача для тех разработчиков, которые просто хотят воспринимать камеру как должное.Более того, не так-то просто получить поддержку от поставщика датчика изображения по поводу таблицы данных и регистрации настроек для написания драйвера камеры.

Как это стало возможным в Arducam

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

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

Интерфейс SPI является самым быстрым из низкоскоростных периферийных устройств по сравнению с другими интерфейсами 1-Wire, I2C, UART и I2S на MCU.Это шинный интерфейс с одним главным и несколькими подчиненными устройствами, подключенными к одной шине с отдельными сигналами выбора кристалла.

Скорость SPI камеры Arducam рассчитана на 4 Мбит / с ~ 8 Мбит / с для совместимости с системами 5 В и 3,3 В на различных микроконтроллерах Arduino или даже других процессорах ARM, потому что синхронизация переключателя уровня 5 В <-> 3,3 В вызовет ошибку связи, работающую на высоком уровне. скорость.

Следовательно, рекомендуемая скорость составляет 4–8 Мбит / с. Более высокую скорость SPI также можно получить, связавшись с Arducam для настройки.

Работа с видеосигналом и буфером кадра

Компания Arducam также разработала сопроцессор, называемый Arduchip. Контроллер камеры на основе ПЛИС, который обрабатывает сложную и высокоскоростную синхронизацию видеосигнала камеры, затем отправляет изображения в большой внешний буфер кадра.

Arduchip

Arduchip напрямую подключается к датчику изображения для всего процесса захвата, чтобы выгрузить задачи обработки с MCU на нашу FPGA.

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

Эта архитектура решает проблему отсутствия специального интерфейса камеры с единообразными аппаратными и программными структурами.

Выберите правильный датчик изображения

В камере Arducam SPI используется датчик SoC - например, OV2640 - со встроенным кодировщиком JPEG для уменьшения размера изображения. Это не только сокращает время передачи изображения, но и позволяет захватить больше изображений в пределах емкости буфера кадра.

Камера Arducam SPI использует датчик System on Chip, такой как OV2640, со встроенным кодировщиком JPEG для сжатия изображения.Это также означает, что передача изображений будет быстрее, и буфер кадра сможет вместить больше изображений в пределах своей емкости.

Например, изображение JPEG размером 2 МП (1600 × 1200) имеет размер около 150 Кбайт, а частота кадров датчика составляет 15 кадров в секунду. Это означает, что буфер кадра размером 8 МБ может вместить до 3,6 секунд видео или 54 неподвижных изображения.

При дальнейшем уменьшении разрешения до QVGA (320 × 240) при 3 Кбайтах на изображение и 30 кадрах в секунду емкость составляет до 91 секунды видеоклипа или 2730 неподвижных изображений.

OV2640 vs OV7670

Вы также можете задаться вопросом, почему несколько модулей камеры (например, последовательная камера и камера OV7670 FIFO) могут использоваться на Arduino.По правде говоря, мы вообще не думаем, что это модули для Arduino.

OV7670 модуль камеры

Во-первых, порт UART.

Последовательная камера основана на UART, максимальная скорость передачи которого составляет 912,6 Кбит / с - менее четверти 4 Мбит / с SPI. Поэтому поддерживаемое разрешение всегда меньше 2 МП. Кроме того, UART не является интерфейсом связи, ориентированным на шину, и несколько устройств не поддерживаются.

Во-вторых, разрешение изображения.

Камера OV7670 FIFO использует датчик VGA (640 × 480) от Omnivision и AL422B FIFO в качестве буфера кадра с общим размером буфера 3 Мбит (384 Кбайт).Однако данные изображения 640 × 480 RGB565 или YUV422 занимают 600 Кбайт памяти, а AL422B вообще недостаточно для хранения данных разрешения VGA. Он поддерживает только изображения в формате QVGA 320 × 240.

И, наконец, использование GPIO и драйвер камеры.

выходной интерфейс AL422B FIFO потребляет более 10 GPIO в Arduino, что неэффективно для использования GPIO. С точки зрения драйвера камеры, для чтения одного байта из FIFO необходимо использовать кодирование в стиле побитового вызова, что занимает много времени и неэффективно.

Приложение с модулем камеры Arducam SPI

Камеры Arduino Arducam разработаны для обычных менее мощных плат Arduino и в основном предназначены для съемки неподвижных изображений с высоким разрешением или коротких видеороликов за несколько секунд.

Таким образом, он подходит для:

  • IoT-приложений с батарейным питанием, которые требуют снимать неподвижное изображение, затем сохранять его на SD-карте или отправлять изображение по Wi-Fi и загружать его в облако (например, Twitter или сервер Amazon AWS ) для будущей обработки изображений.
  • Приложения с батарейным питанием, такие как cube satellite (Cubesat), вы можете полностью отключить Arducam, используя MOSFET, чтобы отключить вывод питания камеры, чтобы снизить энергопотребление до НУЛЯ.
  • С несколькими приложениями камеры, такими как панорамная фотография, вы можете подключить более 4 Arducam к одной шине и снимать изображения одновременно, а затем опрашивать с каждой камеры для получения данных изображения одно за другим.
  • Крошечное машинное обучение (TinyML) с подсветкой Tensorflow понравилось объяснено в этом официальном руководстве Arduino: Обнаружение человека с помощью TensorFlow и Arduino.

Он не подходит для:

  • потокового видео,
  • наблюдения или
  • записи,

Поскольку пропускной способности интерфейса SPI недостаточно для видеопотока MJPEG.

Customized Project

Arducam также помогает коммерческим пользователям создавать индивидуальные модули камер SPI на основе датчиков изображения, назначенных заказчиком. Для приложений с низкой светочувствительностью, таких как астрономическая визуализация (астрофотография), датчик IMX224 / IMX225 предназначен для цветного изображения, а AR0130 - для монохромного.Это примеры индивидуальных проектов, выигравших наш дизайн.

Android-камера для обнаружения движения с Arduino / MCU

Всем привет. В нашем смартфоне есть сенсоры разных типов. Они используются в различных типах приложений. Но иногда нам нужно добавить дополнительные датчики в наш смартфон; для этого мы должны использовать контроллер Arduino / Micro. Из названия, надеюсь, вы уверены, что я собираюсь рассказать о датчике движения. Да, можно сделать камеру детектора движения с помощью смартфона и Arduino.

Приступим к работе

Во-первых, отрежьте левый и правый провода аудиовыхода вашего наушника. Вы увидите красный (микрофон) и черный (земля) провода. Присоедините перемычку к этим w ires .

Подключение

Создайте схему Arduino, выполнив следующие шаги:

  • Arduino pin 2 <----> белый светодиод
  • Arduino pin 6 <----> Tring (датчик сонара)
  • Вывод 7 Arduino <----> Эхо (датчик сонара)

Подайте 5В на датчик сонара.

Наушники:

  • Красный провод <----> Одна ножка LDR
  • Черный провод <----> Другая ножка LDR

(LDR должен быть направлен на белый светодиод. Вы можете также изолируйте LDR и светодиод с помощью черного скотча.)

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

Поздравляю! Наконец-то вы сделали свою собственную камеру для обнаружения движения.

Как это работает

Вы, конечно, думаете, как это работает. Надеюсь, вы знаете, как работает датчик сонара. Если вы этого не сделаете, вы можете посмотреть это видео. На каждом наушнике есть кнопка регулировки громкости, которая на смартфоне работает как кнопка спуска затвора при открытии приложения камеры. Кнопки регулировки громкости наушников соединены с микрофоном и землей в пределах фиксированного сопротивления резистора. И LDR меняет свое сопротивление, которое зависит от наличия света.Для этого мы подключили яркий светодиод перед LDR. Когда Arduino включает светодиод, сопротивление LDR уменьшается.

Тогда LDR работает как кнопка регулировки громкости, она запускает кнопку спуска затвора и делает снимок. Комбинация светодиода и LDR также известна как оптопара.

Лучший способ сделать игровой руль с помощью Arduino Uno:

Unojoy - игровой контроллер

ESP32 Программирование камеры с использованием Arduino, проблемы исправлены

Раскрытие информации: мы можем зарабатывать деньги или продукты от компаний, упомянутых в этом сообщении, через партнерские ссылки на продукты или услуги, связанные с содержанием этой статьи

(Последнее обновление: 2 мая 2021 г.)

Программирование кулачков ESP32 с использованием Arduino, Описание:

В этом руководстве вы узнаете, как программировать ESP32 Cam с помощью Arduino Uno или Arduino Nano.Мы также рассмотрим все основные настройки, включая установку менеджера платы ESP32 Cam. В конце я также объясню, как исправить наиболее распространенные ошибки, включая обнаруженную камеру, которая не поддерживается, и сбой датчика камеры с ошибкой 0x20004.

Существует также еще одна проблема, с которой вы можете столкнуться при работе с ESP32 Cam: модуль ESP32 постоянно сбрасывается автоматически. Я практически покажу вам, как исправить эти ошибки и без проблем запустить модуль камеры ESP32.

Без промедления Приступим !!!

Ссылки для покупок на Amazon:

Модуль камеры ESP32:

Адаптер 12 В:

Arduino Uno

Ардуино Нано

мега 2560:

* Обратите внимание: это партнерские ссылки. Я могу получить комиссию, если вы купите компоненты по этим ссылкам. Буду признателен за вашу поддержку!

Что такое ESP32:

ESP32 - это серия недорогих маломощных систем на микроконтроллерах со встроенным Wi-Fi и двухрежимным Bluetooth.

Что такое ESP32-cam?

ESP32-CAM - это небольшой модуль камеры с микросхемой ESP32-S, который стоит примерно 10 долларов. Помимо камеры OV2640 и нескольких GPIO для подключения периферийных устройств, он также имеет слот для карт памяти microSD, который может быть полезен для хранения изображений, снятых камерой, или файлов для обслуживания клиентов.

ESP32-CAM ESP32 WIFI + Модуль разработки Bluetooth с камерой OV2640

Ультра-маленький модуль 802.11b / g / n Wi-Fi + BT / BLE SoC.Двухъядерный 32-разрядный ЦП с низким энергопотреблением для процессоров приложений.

Основная частота до 240 МГц, вычислительная мощность до 600 DMIPS. Встроенная 520 КБ SRAM, внешний 4M PSRAM. Поддержка таких интерфейсов, как UART / SPI / I2C / PWM / ADC / DAC. Поддержка камер OV2640 и OV7670, встроенных. вспышка.

ESP32-CAM - это малогабаритный модуль камеры. Модуль может работать независимо как минимальная система с размером всего 27 * 40,5 * 4,5 мм и током глубокого сна до 6 мА.

Его можно широко использовать в различных приложениях Интернета вещей.Это идеальное решение для приложений Интернета вещей.

Характеристики:

Ультра-маленький модуль 802.11b / g / n Wi-Fi + BT / BLE SoC.

Двухъядерный 32-разрядный ЦП с низким энергопотреблением для процессоров приложений.

Основная частота до 240 МГц, вычислительная мощность до 600 DMIPS.

Встроенное ОЗУ 520 КБ, внешнее ОЗУ 4 МБ.

Поддерживает такие интерфейсы, как UART / SPI / I2C / PWM / ADC / DAC.

Поддержка камер OV2640 и OV7670, встроенная вспышка.

Поддержка загрузки изображений по Wi-Fi, поддержка карт TF.

Поддерживает несколько спящих режимов, встроенный Lwip и FreeRTOS.

Поддержка режима работы STA / AP / STA + AP.

Поддержка Smart Config / AirKiss в сети распространения в один клик, поддержка вторичной разработки.

Он подходит для домашних интеллектуальных устройств, промышленного беспроводного управления, беспроводного мониторинга, беспроводной идентификации QR, сигналов беспроводной системы позиционирования и других приложений.

Упакован в DIP-корпус и может быть напрямую подключен к объединительной плате для быстрого изготовления.

Технические характеристики:

Материал: медь

Модель модуля: ESP32-CAM

Упаковка: DIP-16

Размер: 27 * 40,5 * 4,5 (± 0,2) мм

SPI Flash: 32 Мбит по умолчанию

RAM: внутренняя 520 КБ + внешняя 4M PSRAM

BT: стандарты BT 4.2BR / EDR и BLE

Wi-Fi: 802.11 b / g / n / e / i

Интерфейс поддержки: UARI, SPI, I2C, PWM

Поддержка TF-карты: максимальная поддержка 4G

Порт ввода-вывода: 9

Скорость последовательного порта: по умолчанию 115200 бит / с

Формат вывода изображения: JPEG (поддерживается только OV2640), BMP, GRAYSCALE

Спектральный диапазон: 2412-2484 МГц

Форма антенны: бортовая антенна, коэффициент усиления 2 дБи

Безопасность: WPA / WPA2 / WPAS-Enterprise / WPS

Диапазон питания: 5 В

Рабочая температура: -20 ° C -85 ° C

Условия хранения: -40 ° C-90 ° C, <90% относительной влажности

Размер упаковки: 5 * 5 * 3 см / 1.96 * 1,96 * 1,18 дюйма

Вес упаковки: 15 г

Мощность передачи:

802.11 b: 17 ± 2 дБм (при 11 Мбит / с)

802.11 g: 14 ± 2 дБм (при 54 Мбит / с)

802.11 n: 13 ± 2 дБм (@ MCS7)

Чувствительность приема:

CCK, 1 Мбит / с: -90 дБм

CCK, 11 Мбит / с: -85 дБм

6 Мбит / с (1/2 BPSK): -88 дБм

54 Мбит / с (3/4 64-QAM): -70 дБм

MCS7 (65 Мбит / с, 72,2 Мбит / с): -67 дБм

Потребляемая мощность:

Выключите вспышку: 180 мА при 5 В

Включите вспышку и установите максимальную яркость: 310 мА при 5 В

Глубокий сон: минимальное энергопотребление может достигать 6 мА при 5 В

Современный спящий режим: до 20 мА при 5 В

Легкий сон: до 6.7 мА при 5 В

В комплекте:

1x ESP32-CAM WiFi-модуль с камерой OV2640

Соединение ESP32 с Arduino Uno или Arduino Nano:

Подключите контакт сброса Arduino к GND.

Соедините контакт 100 кулачка ESP32 с контактом GND, для этого вы можете использовать перемычку типа «мама-мама».

Подключите контакты 5V и GND кулачка ESP32 к 5V и заземлению Arduino.

Соедините контакт приема ESP32 Cam с контактом RX Arduino.

Соедините вывод передачи ESP32 Cam с выводом TX Arduino.

Интерфейс ESP32 Cam с Arduino завершен. Теперь перейдем к экрану компьютера и установим плату ESP32 Cam.

ESP32-Cam Board Manager Установка:

Убедитесь, что на вашем компьютере установлена ​​последняя версия Arduino IDE. Скопируйте ссылку, приведенную ниже.

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Теперь откройте IDE Arduino, щелкните меню файла, затем щелкните настройки и просто вставьте URL-адрес.

Теперь щелкните меню «Инструменты», «Доски», затем нажмите «Диспетчер досок», найдите ESP32 и установите его, это может занять несколько минут. Затем проверьте, установлена ​​ли желаемая плата,

Как видите, доступен модуль ESP32 Wrover.

Настройки кулачка ESP32:

Затем перейдите во Flash Mode и выберите QIO.

Затем выберите частоту мигания как «40Mhz»

Затем выберите схему разделов в качестве огромного приложения.

Затем выберите 115200 в качестве скорости загрузки и, наконец,

Выберите программатор «AVR ISP»

Как вы видите порт: «COM3», это означает, что плата Arduino подключена к ноутбуку через USB-кабель.

Щелкните меню «Файл»> «Примеры»> «ESP32»> «Камера»> «CameraWebServer

».

Откройте программу CameraWebServer.

Затем введите свой SSID и пароль.

Выберите модель камеры.

Все готово, теперь мы можем нажать на кнопку загрузки.

Теперь следующий шаг - удалить провод, который мы использовали для замыкания контакта IO0 и заземления.

Щелкните на последовательном мониторе. Нажмите кнопку на задней стороне ESP32 Cam.

Как вы можете видеть, ESP32 Cam не может подключиться к Wi-Fi и кажется, что если модуль камеры ESP32 сбрасывается автоматически, это просто потому, что Arduino не может обеспечить достаточный ток для модуля ESP32 Cam.Иногда вы увидите,

[e] [camera.c: 1049] camera_probe (): обнаруженная камера не поддерживается.

[e] [camera.c: 1249] esp_camera_init (): сбой датчика камеры с ошибкой 0x20004

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

Соедините контакт 5V кулачка ESP32 с контактом 5V на источнике питания и убедитесь, что заземление источника питания подключено к контакту заземления модуля камеры ESP32… Наконец, включите плату источника питания.

Как вы можете видеть на последовательном мониторе, модуль камеры ESP32 подключен к Wi-Fi, и на экране я вижу свой локальный IP-адрес. Скопируйте эту ссылку, откройте интернет-браузер и вставьте эту ссылку. Наконец, нажмите кнопку "Начать трансляцию", и все.

Итак, вот как легко можно использовать Arduino Uno или Arduino Nano для программирования модуля ESP32-Cam. Надеюсь, вы кое-что узнали из этой статьи. Не забудьте подписаться на мой веб-сайт и мой канал на YouTube «Электронная клиника».

Посмотреть видеоурок:

Нравится:

Нравится Загрузка ...

Интерфейс камеры Arduino и Raspberry Pi

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

Камера Raspberry Pi

Недавно я получил плату камеры Raspberry Pi. Камера поставляется с уже прикрепленным к ней ленточным кабелем и представляет собой небольшую плату (25 мм x 20 мм x 9 мм), к которой прикреплен модуль камеры с фиксированным фокусным расстоянием 5 МП. Номер детали модуля камеры (от OmniVision) - OV5647. В основе модуля камеры OV5647 лежит 1/4-дюймовый цветной CMOS-датчик изображения QSXGA (5 мегапикселей) с технологией OmniBSI ™. Этот модуль камеры Raspberry Pi можно использовать для съемки видео высокой четкости, а также фотографий.Он прост в использовании для новичков, но может многое предложить продвинутым пользователям, желающим расширить свои знания.

(камера raspberry pi)

Raspberry PI имеет на борту два первоклассных разъема. Один находится между Ethernet и HDMI, а другой - рядом с GPIO. Ближайший к разъему Ethernet - последовательный интерфейс камеры (CSI). Этот CSI напрямую подключен к графическому процессору Raspberry Pi, который может обрабатывать изображения без вмешательства ARM.

(последовательный интерфейс камеры)

При подключении модуля камеры к порту CSI (расположенному за портом Ethernet) платы Raspberry Pi убедитесь, что кабель камеры вставлен правильно, т. Е. Синяя полоса гибкого кабеля направлена ​​к порту Ethernet (LAN).После подключения включите программное обеспечение камеры, протестируйте камеру и попробуйте использовать ее с Bash или Python. Поскольку я новичок в мире Raspberry Pi, я недостаточно изучил все функции и возможности моего заимствованного Raspberry Pi (и модуля камеры). Если вы хотите окунуться в будущее удивительных возможностей, взгляните на документацию: http://www.raspberrypi.org/help/camera-module-setup/

Плата камеры Raspberry Pi передает данные через сверхбыструю шину последовательного интерфейса камеры (CSI-2) непосредственно на процессор системы на кристалле (SoC).Он делает это через 15-контактный ленточный кабель, также известный как гибкий плоский кабель (FFC), и подключается к гнезду ZIF 15 для поверхностного монтажа на плате Raspberry Pi. Как вы могли заметить, модуль камеры на этой официальной плате камеры Raspberry Pi идентичен модулям камеры (устройствам визуализации компакт-дисков), установленным во многих мобильных телефонах.

К счастью, большинство камер мобильных телефонов не только соответствуют стандарту MIPI, но и соответствуют требованиям CSI (см. Первую часть этой статьи). Распиновка 15-контактного интерфейсного разъема Raspberry Pi CSI также включена сюда, чтобы помочь вам продолжить реализацию ваших идей.Обратите внимание, что в Raspberry Pi есть два разъема для гибкого плоского кабеля (FFC) (S2 и S5). S2, рядом с разъемом micro USB, находится последовательный интерфейс дисплея (DSI). Он обеспечивает низкоуровневое взаимодействие с ЖК-дисплеями и другими дисплеями с Raspberry Pi. Это 15-контактный гибкий плоский разъем для поверхностного монтажа, обеспечивающий две линии передачи данных, одну линию синхронизации, 3,3 В и заземление. S5, расположенный между разъемом LAN и HDMI, является разъемом MIPI Camera Serial Interface 2 (CSI-2) для модулей камеры. Это 15-контактный плоский гибкий разъем для поверхностного монтажа, обеспечивающий две линии передачи данных, одну полосу синхронизации, двунаправленный интерфейс управления, совместимый с I2C, 3.3V и GND. Интерфейс передачи данных в CSI - это однонаправленный дифференциальный последовательный интерфейс с данными и тактовыми сигналами (физический уровень этого интерфейса - это стандарт MIPI Alliance для DPHY).

Камера Arduino

Добавить камеру к Arduino UNO не очень сложно, потому что ArduCAM ™ Shield находится прямо перед вами. Вы можете найти хорошее руководство по ArduCAM здесь: http://www.arducam.com/tutorial/. В этом руководстве будет показано, как использовать экран ArduCAM на плате Arduino UNO, навести точку и нажать кнопку моментального снимка, и вы получите изображение BMP, сохраненное на SD / TF-карте!

Аппаратное обеспечение щита

ArduCAM объединяет все необходимые компоненты для взаимодействия с модулями камеры.Пользователю нужны только дополнительные модули камеры и TF / SD-карта, чтобы начать захват изображения. Экран ArduCAM включает в себя ArduChip, который обрабатывает сложную синхронизацию между MCU и ЖК-дисплеем, камерой, FIFO. Он экспортирует стандартный последовательный интерфейс SPI и может взаимодействовать с широким спектром микроконтроллеров. Кроме того, щит ArduCAM включает в себя два набора выводов, идентичных по функциям. Один из них является стандартом Arduino, он может хорошо сочетаться со стандартными платами Arduino, такими как UNO, MEGA2560, Leonardo и DUE и т. Д. Другой - альтернативный порт, который можно подключать к любой платформе, такой как Raspberry Pi.После большого успеха ArduCAM Shield Rev.B, команда ArduCAM теперь выпустила более мощный ArduCAM Shield Rev.C с удивительными новыми функциями. Эта версия поддерживает модули камеры, включая OV7660, OV7670, OV7675, OV7725, OV2640, OV3640, OV5642 и MT9D111.

(Подсказка: 16-контактный разъем камеры в мобильном телефоне Nokia 7380)

Знаете ли вы? Интерфейс датчика изображения CMOS разделен на два класса: один - это интерфейс DVP (порт цифрового видео), а другой - интерфейс процессора для мобильных устройств MIPI.Основное различие между DVP и MIPI заключается в том, что DVP - это параллельный интерфейс, а интерфейс MIPI - это высокоскоростной дифференциальный последовательный интерфейс. Интерфейс MIPI обеспечивает более широкую полосу пропускания данных, чем интерфейс DVP, и поддерживает более высокое разрешение и частоту кадров.

Датчик изображения

обычно дешев, и вы можете купить его всего за 5 долларов США на eBay. Однако, когда она превращается в «модуль камеры, совместимый с микроконтроллером», готовая плата стоит намного дороже. В заключение должен сказать, что стоит потратить время и силы на создание собственных модулей камеры, потому что опыт реверс-инжиниринга и взлома действительно интересен (по крайней мере, для меня).Это только отправная точка, как и обещал, я вернусь с полезными обновлениями в ближайшем будущем!

Как использовать камеру OV7670 с Arduino и крошечным экраном

Эта статья представляет собой пошаговое руководство по настройке всех необходимых подключений к передавать изображения с модуля камеры OV7670 на крошечный 1.8-дюймовый TFT-экран.

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

После завершения моего руководства у вас должно получиться что-то вроде этого:

Этот видеоролик представляет собой короткую демонстрацию камеры в действии.На этом видео вы видите версию той же схемы для печатной платы.

Необходимые компоненты

[ПО ЖЕЛАНИЮ] Осциллограф, который я использовал, чтобы все работало

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

Раскрытие информации: имейте в виду, что некоторые ссылки в этом сообщении являются партнерскими. ссылки, и если вы пройдете по ним, чтобы сделать покупку, я получу комиссию.Имейте в виду, что я связываю эти компании и их продукты из-за их качество, а не из-за комиссии, которую я получаю с ваших покупок. Решение остается за вами, и решать, покупать ли вы что-либо, полностью зависит от вас.

Видеоурок

Пошаговое руководство в виде видео.Он имеет ту же схему, которую я использую в этой статье.

1. Подготовка экрана

Замкните разъем J1 на задней части экрана. Затем вывод VCC дисплея можно подключить к выводу 3,3 В на плате Arduino.

Когда я начал экспериментировать с 1,8-дюймовым TFT-экраном, У меня были слабые вертикальные полосы, проходящие по экрану.По умолчанию экран настроен на питание от 5В, но внутри он работает на уровне 3,3 В. Мне удалось избавиться от этих двоичных линий с помощью используя сигналы данных 3,3 В (с делителями напряжения) и переключая входную мощность на 3,3 В.

2.Подключение 1,8-дюймового TFT к Arduino

Входные контакты 1,8-дюймового TFT-экрана не допускают 5В. Вам нужно преобразовать сигналы Arduino 5V в 3V. Самый простой способ добиться этого - установить на сигнальные провода делители напряжения.

Шаг 6.Подключите контакты питания экрана. Контакты 6 (VCC) и 7 (BL) к контакту Arduino 3.3V. Контакт 8 экрана (GND) к контакту Arduino GND.

Контакт 7 - это сигнал для включения подсветки. Подключаем его к 3.3В, поэтому дисплей всегда горит. Arduino может управлять им, но в этом проекте нам нужны все остальные контакты Arduino для подключения камеры.

Контакты 6 и 8 - это контакты питания экрана. Поскольку мы закоротили разъем J1, нам нужно использовать вход 3,3 В для VCC.

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

Щелкайте по кнопкам, чтобы переключаться между этапами схемы.

Схема

Шаг 1

Шаг 2

Шаг 3

Шаг 4

Шаг 5

ШАГ 6

Добавьте делитель напряжения к каждому подключению, выполненному на шагах с 1 по 5.

Шаг 1. Подключите вывод экрана 1 (RST) к выводу 10 Arduino.

Это штифт сброса. Он используется библиотекой Adafruit при инициализации экрана.

Шаг 2. Подключите вывод 2 экрана (CS) к выводу 9 Arduino.

Штифт выбора микросхемы. Сигнал НИЗКИЙ - экран активен и прослушивает порт SPI.Signal HIGH - экран игнорирует все данные по проводу SPI.

Шаг 3. Подключите контакт 3 экрана (D / C) к контакту 8 Arduino.

Пин данных / конфигурации.Вы можете отправлять либо пиксельные данные (изображение для отображения), либо данные конфигурации (формат цвета, ориентацию экрана и т. Д.). Вход HIGH предназначен для отправки пиксельных данных, а LOW - для отправки конфигурации.

Шаг 4.Подключите вывод 4 экрана (DIN) к выводу 11 Arduino.

Контакт ввода данных SPI. Экран прослушивает порт SPI, если на выводе CS установлено значение LOW.

Шаг 5.Подключите вывод 5 экрана (CLK) к выводу 13 Arduino.

Тактовый вывод SPI. Экран прослушивает порт SPI, если на выводе CS установлено значение LOW.

Шаг 6.Подключите контакты питания экрана. Контакты 6 (VCC) и 7 (BL) к контакту Arduino 3.3V. Контакт 8 экрана (GND) к контакту Arduino GND.

Контакт 7 - это сигнал для включения подсветки. Подключаем его к 3.3В, поэтому дисплей всегда горит. Arduino может управлять им, но в этом проекте нам нужны все остальные контакты Arduino для подключения камеры.

Контакты 6 и 8 - это контакты питания экрана. Поскольку мы закоротили разъем J1, нам нужно использовать вход 3,3 В для VCC.

3. Проверьте подключение экрана

Перед тем, как продолжить подключение камеры, необходимо проверить проводку экрана.

1. Загрузите код моего проекта LiveOV7670:
https://github.com/indrekluuk/LiveOV7670

Нажмите зеленую кнопку «Код», а затем «Загрузить ZIP».

Распакуйте загруженный ZIP-файл.

2. Скопируйте две библиотеки «LiveOV7670Library» и «Adafruit_GFX_Library». из "src / lib" в папку "библиотеки" Arduino

В Windows:

 C: \ Users \ <имя пользователя> \ Documents \ Arduino \ библиотеки 

На Mac:

 / Пользователи / <имя пользователя> / Документы / Arduino / библиотеки 

«LiveOV7670Library» содержит код, который обменивается данными с модулем камеры OV7670.

«Adafruit_GFX_Library» является зависимостью экранной библиотеки «Adafruit-ST7735». В этом проекте я использую модифицированную версию библиотеки Adafruit ST7735. - «Adafruit_ST7735_mod.h» и «Adafruit_ST7735_mod.cpp» в папке «src / LiveOV7670». Оригинал был слишком медленным. Чтобы сделать это быстрее, мне пришлось урезать некоторые углы в методе отправки пиксельных данных на дисплей.

3. Откройте «src / LiveOV7670 / LiveOV7670.ino» и загрузите его в свой Arduino.

В этом проекте используются некоторые возможности C ++ 11. C ++ 11 включен по умолчанию, начиная с версии Arduino IDE 1.6.6. Если по какой-то причине у вас более старая версия, вам следует либо обновите или включите C ++ 11 в файле конфигурации Arduino IDE.

4. Если все подключено правильно, то экран должен мигать красным.

Сплошной красный цвет означает, что код не смог обнаружить модуль камеры.Но поскольку мы видим цвет, мы можем быть уверены, что разводка экрана в порядке.

Если вы не видите красного изображения, проверьте проводку, и убедитесь, что вы закоротили разъем J1 на задней стороне экрана.

4. Первая часть подключения камеры - включение

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

Шаг 1. Сделайте делитель напряжения между контактом 3 Arduino и контактом XCLK камеры.

Модуль камеры, как и экран, не терпит 5В. Это единственное соединение, для которого необходим делитель напряжения на стороне камеры. Это единственный цифровой выходной сигнал от Arduino к модулю OV7670. (все остальные - входы для Arduino).

XCLK - это входные часы, которые заставляют камеру работать. Максимальная частота, которую может выдавать Arduino, составляет 8 МГц. Для полной скорости модулю камеры требуется 30 МГц, но восьми достаточно, чтобы отображать изображение со скоростью десять кадров в секунду.

Щелкайте по кнопкам, чтобы переключаться между этапами схемы.

Схема

Шаг 1

Шаг 2

Шаг 3

Шаг 4

Шаг 5

ШАГ 6

Шаг 1.Сделайте делитель напряжения между контактом 3 Arduino и контактом XCLK камеры.

Модуль камеры, как и экран, не терпит 5В. Это единственное соединение, для которого необходим делитель напряжения на стороне камеры. Это единственный цифровой выходной сигнал от Arduino к модулю OV7670. (все остальные - входы для Arduino).

XCLK - это входные часы, которые заставляют камеру работать. Максимальная частота, которую может выдавать Arduino, составляет 8 МГц. Для полной скорости модулю камеры требуется 30 МГц, но восьми достаточно, чтобы отображать изображение со скоростью десять кадров в секунду.

Шаг 2.Выполните соединения I 2 C. Вывод A5 Arduino на SIOC и вывод A4 Arduino на SIOD. Затем добавьте подтягивающие резисторы 10 кОм до 3,3 В к обоим проводам. (От A5 до 10 кОм до 3,3 В, от A4 до 10 кОм до 3,3 В).

I 2 C необходим для отправки данных конфигурации в камеру (разрешение, формат пикселей и т. д.).

Шаг 3. VSYNC к контакту 2 Arduino.

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

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

Шаг 4.PCLK к контакту 12 Arduino.

Это также сигнал 3,3 В от камеры к Arduino. и может быть подключен напрямую.

Пиксельный кран необходим для определения точного времени считывания данных пикселей.

Шаг 5.Подключите питание к камере. От вывода Arduino 3,3 В до входа 3,3 В камеры и от контакта GND Arduino к GND камеры.

Шаг 6. Подключите контакт RESET камеры к 3,3 В и PWDN к GND.

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

5. Убедитесь, что камера работает

Это второй тест перед тем, как мы перейдем к фактическим изображениям с камеры.

Когда вы снова запустите Arduino, он должен замигать зеленым экраном.Это означает, что библиотека LiveOV7670 смогла успешно обнаружить и настроить камеру.

Вы пока не видите никаких изображений, так как выводы пиксельных данных не подключены.

Если вы все еще видите красный экран, проверьте проводку.Убедитесь, что провод XCLK не слишком длинный. Прямоугольная волна входного тактового сигнала камеры может быть слишком деформирована. для правильной работы.

6. Вторая часть подключения камеры - выводы пиксельных данных

Теперь мы можем закончить разводку камеры, подключив входы пиксельных данных.Пиксели передаются с камеры по одному байту за раз. Каждый пиксель состоит из двух байтов, которые читаются последовательно.

Шаг 1. Подключите камеры D0 к D3 к контактам Arduino от A0 до A3.

Это младшие четыре бита байта пикселя.

Щелкайте по кнопкам, чтобы переключаться между этапами схемы.

Шаг 1.Подключите камеры D0 к D3 к контактам Arduino от A0 до A3.

Это младшие четыре бита байта пикселя.

Шаг 2. Подключите камеры D4 к D7 к контактам с 4 по 7 Arduino.

Это старшие четыре бита байта пикселя.

7. Готово!

Теперь вы можете снова включить Arduino. Он начинается с зеленого изображения, как и в предыдущем тесте.Затем вы должны увидеть прямую трансляцию видео с камеры на дисплей.

КАМЕРА

ДЛЯ МИКРОКОНТРОЛЛЕРОВ ESP / ARDUINO

КАМЕРА ДЛЯ МИКРОКОНТРОЛЛЕРОВ ESP / ARDUINO Распродано

Арт. № CAMERA-MICRO

Обзор

Датчик изображения OV7670, малый размер, низкое рабочее напряжение и обеспечивает все функции однокристальной камеры VGA и процессора изображений.Через управление шиной SCCB вы можете выводить весь кадр с субдискретизацией, использовать оконный способ, влияющий на разрешение данных в 8 бит. VGA изображение продукта до 30 кадров / сек. Пользователи могут полностью контролировать качество изображения, формат данных и режим передачи. Процесс функций обработки изображения, включая гамма-кривые, баланс белого, насыщенность, цветность и т.д., может быть запрограммирован через интерфейс SCCB. Датчик изображения OmmiVision применяет уникальную сенсорную технологию для улучшения качества изображения за счет уменьшения или устранения оптических или электронных дефектов, таких как фиксированный структурный шум, размытие хвоста, четкое и стабильное цветное изображение.
  • Высокая чувствительность для работы в условиях низкой освещенности
  • Низкое напряжение для встраиваемых систем
  • Стандартный интерфейс SCCB, совместимый с интерфейсом I2C
  • RawRGB в RGB (GRB4: 2: 2, RGB565 / 555/444), YUV (4: 2: 2) и YCbCr (4: 2: 2) выходной формат
  • поддерживает VGA, CIF и от CIF до 40x30 размером
  • Способ субдискретизации VarioPixel
  • устраняет светлые полосы, автоматическая калибровка уровня черного, контроль качества изображения, включая насыщенность цвета, оттенок, гамму, резкость ANTI_BLOOM
  • ISP имеет функцию устранения шума и компенсации битых пикселей.
  • поддерживает масштабирование изображения
  • Объектив с компенсацией потери света
  • Обнаружение 50/60 Гц
  • автоматическая регулировка насыщенности (настройка УФ)
  • улучшение края автоматически настроить
  • Автоматическая регулировка шумоподавления
  • основные параметры
  • светочувствительная матрица 640X480
  • Напряжение ввода-вывода 2.От 5 В до 3,0 В (внутренний LDO-источник питания), мощность при работе 60 мВт / 15 кадров в секунду VGAYUV
  • Спящий режим <20 мкА
  • температура работы от -30 ° C до 70 ° C
  • от 0 ° C до 50 ° C
  • (8-битный) выходной формат? YUV / YCbCr4 RGB565 / 555/444 GRB4: 2: 2: 2: 2 Необработанные данные RGB
  • Оптический размер 1/6 "
  • угол поля зрения 25 °
  • максимальная скорость Zhen 30 кадров в секунду VGA
  • Чувствительность 1,3 В / (Люкс-сек)
  • отношение сигнал / шум 46 дБ
  • динамический диапазон 52 дБ
  • режим просмотра прогрессивный
  • электронная экспозиция
  • площадь 3.6 мкм x 3,6 мкм
  • Темновой ток 12 мВ / с при 60 ° C

Ai-Thinker ESP32-CAM в среде Arduino IDE - Robot Zero OneRobot Zero One

Настройка Ai-Thinker ESP32-CAM на примере веб-сервера камеры Arduino IDE Camera.

Модуль AI-Thinker ESP32-CAM оснащен микросхемой ESP32-S, камерой OV2640 и слотом для карт памяти microSD. Здесь они есть на AliExpress. Доступны и другие модули камеры на базе ESP32, которые должны работать, если контакты установлены в эскизе.

Если вы предпочитаете работать со своим ESP32 в Espressif IDF, здесь есть еще одно руководство: Модуль камеры ESP32 с распознаванием лиц

Добавление или обновление диапазона ESP32 в Arduino IDE

Если вы никогда не использовали плату ESP32 в Arduino IDE вам необходимо выполнить первую часть этого руководства: ESP32 Built-in OLED Heltec WiFi Kit 32
Если у вас уже есть платы ESP32, доступные в вашей среде IDE, вам просто нужно обновить до последней версии доски библиотек.Для этого откройте IDE Arduino и в меню: Инструменты> Плата: xxxxx> Менеджер плат:

Найдите ESP32:

Обновите его до версии 1.0.4. Распознавание лиц не работает в версиях 1.0.2 и 1.0.3.

Подключения

ESP32-CAM не имеет разъема USB, поэтому для подключения к ПК вам понадобится CP2102 или FT232RL последовательный преобразователь USB в TTL. При использовании Wi-Fi ESP32 может использовать больше тока, чем подается через USB через эти устройства, что приводит к сбою модуля и перезагрузке.Я обнаружил, что верхнее устройство работает нормально (я купил его здесь), но FT232RL у меня не работал. Если вы используете FT232 с 5 В и 3,3 В, установите перемычку напряжения на 3,3 В. Возможно, вы сможете использовать 5 В сбоку платы для питания контакта 5 В на камере.

USB к последовательному TTL выше FT232RL ниже

Подключите модуль в соответствии со схемой выше. Зеленое соединение должно быть подключено при перепрошивке модуля и отключено при работе.

Запуск веб-сервера камеры. Пример

Подключите свой модуль и измените настройки платы на следующие:

Откройте эскиз, выбрав Файл> Примеры> ESP32> Камера> CameraWebServer:

Измените определение эскиза на выглядят так (при условии, что вы используете модуль Ai-Thinker):

 // Выберите модель камеры
// # определить CAMERA_MODEL_WROVER_KIT
// # определить CAMERA_MODEL_M5STACK_PSRAM
#define CAMERA_MODEL_AI_THINKER 

Измените следующие две строки, чтобы они соответствовали данным вашего WiFi-соединения:

 const char * ssid = "NSA";
const char * пароль = "оранжевый"; 

Нажмите «Загрузить», чтобы создать и загрузить Sketch на свое устройство.

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

Когда устройство завершит мигание, отключите IO0 от GND.

Откройте монитор последовательного порта через Инструменты> Монитор последовательного порта.

Нажмите кнопку сброса на ESP32-CAM и просмотрите последовательность запуска в последовательном мониторе:

Найдите IP-адрес, который ESP32 был предоставлен в вашей сети.

Введите этот IP-адрес в свой браузер. Слева вы должны увидеть графический интерфейс, в котором вы можете управлять элементами камеры, настраивать обнаружение лиц и распознавание лиц. Щелкните Get Still , чтобы сделать снимок. Щелкните Start Stream , чтобы просмотреть видеопоток с камеры.

Бортовая антенна и IPEX Антенна

Несколько человек отметили, что получили плату с антенной перемычкой, установленной для внешней антенны, а не для встроенной антенны.Ниже вы можете увидеть две разные настройки:

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

ESP32-CAM Video Playlist

Если вы предпочитаете обучающие видео в формате видео, вы можете посетить канал Robot Zero One на YouTube и просмотреть список воспроизведения ESP32-CAM здесь: https://www.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *