Перейти к содержимому

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

  • автор:

Модуль видеокамеры OV7670 для Arduino

arduino NANO купить дешево arduino UNO купить дешево arduino UNO R3 ORIG купить дешево

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

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

Цена $3.7. Заказать на Aliexpress здесь .

Модуль видеокамеры OV7670 для Arduino

Технические характеристики камера OV7670

Камера OV7670 способна выдавать изображение разрешением 640х480 с FPS 30 кадров в секунду. Данные выдаются в формате RGB565 (16 битное изображение).

Модуль камеры питается от 3.3 В. Для работы камеры необходимо ее подключить затактировать частотой 24 МГц от кварца или еще откуда-то.

Камера передает пользователю данные по 8 битной шине. Передаются также стробы синхронизации VSYNC и HSYNC.

Настройка камеры осуществляется по интерфейсу I2C.

Данные с камеры передаются по параллельному интерфейсу , состоящему из восьми линий (D0-D7). Схема подключения OV7670 к Arduino показана на рисунке.

Схема подключения OV7670 к Arduino

Платы ARDUINO по низкой цене

Нажми на изображение, чтобы заказать в интернет-магазине:

arduino NANO купить дешево arduino UNO купить дешево arduino UNO R3 ORIG купить дешево arduino MEGA купить дешево arduino DUE купить дешево

Now 05.02.24 0:29:15, Your IP: 45.82.33.202; arduino.zl3p.com/modules/arduino_cam_ov7670
ePN

Можно ли к ардуино подключить камеру?

Хочу спросить у людей которые особо шарят или просто разбираются в ардуино больше меня(а я не особенно хорошо разбираюсь). У меня есть ардуино нано , и камера от старого планшета. Камера идет со шлейфом( в нем 24 пина). Вопрос вот в чем — можно ли ее подключить и получить хотя бы какую-то картинку.
P.S да я знаю что можно купить готовый модуль камеры

  • Вопрос задан более трёх лет назад
  • 3246 просмотров

3 комментария

Простой 3 комментария

Не мучайся, Ардуино для этого не предназначена.
yahabrovec @yahabrovec Автор вопроса
Ezhyg, а что тогда предназначено?

fox_12

yahabrovec,
> а что тогда предназначено?
Купите raspberry pi, и камеру под него. Попробуйте разобраться и поэкспериментировать сначала с ними.

Решения вопроса 0
Ответы на вопрос 6

fox_12

Расставляю биты, управляю заряженными частицами

Сравните возможности ардуино, и требования для получения изображения с камеры:
У ардуино контроллер с 32кб памяти для программ, 1кб EEPROM, 2кб SRAM, часть из которых уже занято под bootloader.
Камера — к примеру с разрешением 640×480 один кадр — это матрица из 307 кб, а там еще 3 цвета RGB — по байту на каждый, а вам это нужно еще это куда-то загрузить, как-то обработать, и куда-то еще передать.
Чисто теоретически можно построчно данные куда-то перегонять, но в этом смысла мало.

Камера от старого планшета — быстрее всего на нее у вас нет толковой документации.
Протокол как, — сами реверсить будете? В общем случае — затея бестолковая.

Ответ написан более трёх лет назад
Комментировать
Нравится 6 Комментировать

физических запретов нет 🙂
почитай спецификации интерфейса и протокола камеры.
скорей всего соответствующего аппаратного модуля в ардуине нет и придется колхозить програмные костыли.
вопрос лишь «стоит ли овчинка выделки» ??

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Для подключения камеры подойдет лучше Raspberry Pi
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Yupa20171123 @Yupa20171123

Что написано на камере. Фотку. Если удалось найти документацию — усе будет. Название девайса откуда взята. Там может быть информация.

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

Читать с нее видео может и не лудшее решение:) Но статическое или медленное вполне можно. Через n-е количество пикселей. Потом следующий также шагая по строкам. Проше всего прямо сразу и читать не по строкам а по столбцам. Для начала сойдет.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Хочу вылезти из минуса по карме.

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

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Fox_Alex

Инженер электронщик

Можно, но поверьте, работать будет очень печально и уныло. Кто-то даже аналоговую подключал через АЦП, но все это из разряда экспериментов ради любопытства. Практически пользоваться камерой не получится — кадр в оперативке ардуины не помещается.

Правильнее взять STM32, в старших моделях есть DCMI, с которым работают очень многие камеры.

OV7670 без буфера FIFO передача видео по WiFi с обработкой на ESP32

Обсуждение возможности присоединения видеокамеры к Arduino идет довольно давно, но все разговоры сводились к элементарным расчетам, которые доказывали, что видеосигнал при помощи Arduino обработать невозможно. Об этом говорит как скорость работы контроллеров используемых для плат Arduino, так и отсутствие приемлемого количества оперативной памяти.
Часто обсуждались вопросы подключения самой простой и доступной по цене камеры OV7670. Но тактирование данной камеры имеет минимальную частоту 10МГц, а номинальная частота тактирования (при которой камера выдает «не размазанные» изображения) 24МГц. Мы же имеем частоту Arduino NANO, Mega, UNO 16Мгц, а требуется, чтобы обрабатывающий контроллер был значительно быстрее камеры, чтобы успевать принимать значения битов изображения.
Только современные Arduino платы способны на такое: Arduino Due , Intel Galileo. Но они дороги или мало распространены.

OV7670

И здесь, как черт из табакерки, на арену выпрыгивают китайские производители контроллеров. Сначала появляется ESP8266, который был нами протестирован, но честно говоря, поговорка о том, что чего из него ни делай, а получается погодная станция, родилась не на пустом месте. Попытки установить ESP8266 на мобильного робота и одновременно обеспечить адекватную работу обвески из датчиков у нас не получилось. Но, тем не менее, эти контроллеры пользуются определенным успехом, по крайней мере, их покупают.
Начав разработку, дети Поднебесной уже остановиться не могут, и следом выпускают новую версию контроллера ESP32, который не только получил адекватный запас GPIO, но и дополнительно получил второе ядро, и дополнительно (к поддержке WiFi протокола, который уже был на ESP8266) поддержку протокола Bluetooth.
Частота 160МГц, два 32-ных ядра, WiFI, BT, не оставили нас равнодушными, тем более идея сборки мобильного робота с камерой, которая передает изображение по WiFi витает уже давно.
Анализ документации по камере показал, что подключить ее к ESP32 вполне по силам. А позднее был найден пример подобного подключения на github:

  • http://bitluni.net/esp32-i2s-camera-ov7670/
  • https://github.com/igrr/esp32-cam-demo
  • https://github.com/bitluni/ESP32CameraI2S

Исходная схема OV7670 + дисплей

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

OV7670 + ESP32 NO FIFO

Помимо камеры в примере к ESP32 подключен TFT дисплей.
Я не нашел поблизости дисплея и подключил только камеру. Более того использовался контроллер Lolin32 Lite, который не имеет разведенного вывода GPIO 21 и моя схема немного изменилась.

С 5й ноги камеры контакт соединен с 23 GPIO платы на основе ESP32. В программе убрано всё, что касается работы с дисплеем и изменен указанный выше GPIO.
Программный код будет по второй схеме прикреплен к данной статье.
Сначала из куска шлейфа IDE был создан шлейф для камеры, но потом для простоты (скорости) все было сделано на макетной плате.

Камера со шлейфом
На стандартную макетную плату Lolin32 Lite становится так, что остаются с боков по одному контактному месту для соединений, а вот плата ESP-WROOM32 шире, и с одной стороны все контактные посадочные места оказываются под платой.
WROOM32

LOLIN32 LITE

OV7670 + LOLIN32 LITE

Вот такой пучёк проводов получился.

Модель в сборе ov7670 esp32
Установив прошивку и открыв Serial port на скорости 115200, можно убедиться, что плата завелась, а заодно узнать полученный ею адрес от вашей WiFi сети. И не забудьте в программе прописать ваше имя WiFi сети и пароль сети.
Чтобы получить информацию из Serial port следует: открыть Serial port, затем нажать на ESP32 кнопку Reset (Boot). После этого ESP32 перезагрузится и напечатает в порт информацию по подключению.
Информация по соединения ip-адрес

Теперь во внутренней сети потребуется компьютер или смартфон.
На нем в адресной строке браузера следует указать ip-адрес нашего устройства (здесь это 192.168.1.136). Все! Смотрим на картинки с камеры.

Картинка с камеры 1
картинка с камеры в браузере 2

Картинка с камеры в браузере 3

Честно говоря, качество полученной картинки не выдерживает никакой критики. Под большим вопросом и скорость передачи, отрисовка рисунка 320х240 шла довольно медленно и с задержкой в пару секунд. В итоге мы имеем загруженный под завязку ESP32 и 1-3 мутных кадра в секунду.
Выводы: камера OV7670 работает, но образец без буфера FiFo показывает на выходе изображение низкого качества, причины тому могут быть две – 1) большое время экспонирования полного кадра, что приводит к смазыванию картинки, 2)объектив без автофокуса с ручной фокусировкой, что затрудняет использование данной камеры в динамике (на мобильном роботе).
Использование камеры с внутренним буфером FiFo может немного улучшить ситуацию, но кардинально ничего не изменится.
Дальнейшие испытания пойдут в область использования готовых изделий, таких как смартфон в качестве камеры робота (или подобное устройство с возможностью отдельной от контроллера робота трансляции видео в сеть).

Подключаем камеру OV7670 к Arduino и выводим картинку на дисплей

Данная камера ov7670 является самым доступным модулем для получения изображения совместно с Arduino.

Модуль камеры имеет следующие характеристики:

  • различные разрешение VGA (640 х 480); — QVGA (320 х 240); — CIF (352 х 240); — QCIF (176 × 144);
  • скорость передачи до 30 fps,
  • несколько способов кодирование изображения RAW RGB, RGB 565/555, YUV/YCbCr 4:2:2

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

Подключение OV7670 к Arduino

Начнем с сборки схемы и написания программы управления. Итак для сборки и отладки тестового макета нам потребуется :

Внешний вид макета

После того как Все компоненты собраны, приступаем к сборке схемы.

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

OV7670 подключаем к arduino: Дисплей подключаем к arduino VSYNC - к выводу D2 DC - к выводу D8 XCLCK - к выводу D3 CS - к выводу D9 PCLCK - к выводу D12 RESET - к выводу D10 SIOD - к выводу A4 SPI data - к выводу D11 SIOC - к выводу A5 SPI clock - к выводу D13 D0..D3 - к выводу A0..A3 VCC - к выводу 3.3V D4..D7 - к выводу D4..D7 BL - к выводу 3.3V 3.3V - к выводу 3.3V GND - к выводу GND RESET - к выводу 3.3V GND - к выводу GND PWDN - к выводу GND

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

Для работы с камерой и дисплеем совместно с Arduino нам понадобится, библиотеки: LiveOV7670Library и Adafruit_GFX_Library. Скачиваем их и устанавливаем в Arduino IDE. Теперь все готово для загрузки программы в Arduino.

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

После проверки работоспособности, можно перейти в скетче на вкладу setup.h

и изменив значение EXAMPLE 1 на EXAMPLE 3, камера будет транслировать изображение напрямую на экран монитора, при условии, что arduino подключена к компьютеру и запущена программа Arduino IDE.

При значение EXAMPLE 1 камера совместно с библиотекой LiveOV7670Library, передает картинку напрямую на дисплей подключенный по SPI интерфейсу.

Заключение

Данный пример работы камеры можно использовать как камеру видео наблюдения добавив к arduino LAN или же как зрение к роботу. Так же возможно использовать в виде WEB-камеры для компьютера.

Немного об особенностях работы с камерой.

  1. Согласно документации камеры OV7670, модуль питается от 3,3 В, при подключении к Arduino 5V необходимо обеспечить преобразование уровней напряжения. (Хотя запустилась и заработала без лишних элементов)
  2. Модуль имеет выходы SIO_C, SIO_D — шина SCCB похожа по работе с шиной I2C. Модуль отвечает на шину I2C по адресу 0x21. Входной сигнал синхронизирующего сигнала XCLK и выход PCLK для синхронного сбора данных с параллельной 8-разрядной шины D7-D0.
  3. Выходы H1REF и VSYNC синхронизируют сбор данных с параллельной шины (соответствующая конфигурация позволяет отложить сигнал сигнальной линии H1REF, используя только синхронизацию VSYNC-кадров).
  4. Основой для запуска модуля является соответствующая конфигурация регистров по шине SCCB. Интерфейсные линии SCCB должны быть подтянуты по питанию через резисторы 4.7-10 кОм.
  5. Стабильность работы камеры зависит и от источника питания, необходимо, чтобы модуль имел стабильный источник питания 3,3 В.
  6. Для того, чтобы шина данных работала, необходимо подать сигнал синхронизации на вход XCLK, согласно Datasheet: частота входного сигнала должна быть 10-48 МГц.
  7. Ниже приведенный скетч генерирует тактовую частоту XCLK = 8 МГц. Частота сигнала PCLK, изменяет данные на линиях D7-D0 зависимые от установленных делителей и PLL. В нашем случае мы на PCLK частотой 2 МГц.
  8. На основе полученных изображений сразу можно сделать вывод о недостатках:
    а. Отсутствие внутреннего буфера приводит к смазывание картинки, тк она сразу передается на компьютер, а это занимает время.
    б. Наблюдаются артефакты в виде горизонтальных полосок — сбой синхронизации в получении картинки. Вместо градации серого отправляется цветоразностная составляющая.
    в. Объект должен быть в фокусе камеры для четкого изображения

Изменено: 25 Окт, 2018 23:45

Подключаем камеру OV7670 к Arduino и выводим картинку на дисплей : 2 комментария

Иван говорит 09.02.2023 в 17:37 :

Здравствуйте, не знаю ответите ли, но спрошу. Возможно ли по этому принципу сделать что-то типа виде регистратора. Только чтобы видео сразу записывалось на microSD карту? То есть ардуино нано+камера+SDкарта

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

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