Подключаем камеру 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

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

  1. Arduino
  2. Макетная плата
  3. Камера OV7670
  4. Дисплей
  5. Dupont-провода

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

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

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

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. На основе полученных изображений сразу можно сделать вывод о недостатках:

    а. Отсутствие внутреннего буфера приводит к смазывание картинки, тк она сразу передается на компьютер, а это занимает время.

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

    в. Объект должен быть в фокусе камеры для четкого изображения

Полезные ссылки

Библиотека для работы с камерой OV7670:

https://github.com/indrekluuk/LiveOV7670


Изменено:

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

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

    • Здравствуйте. Нано в данном случае будет мало.
      Посмотрите в сторону esp32cam

      • Всех приветствую, хотел узнать а можно ли на OV7670 собрать модель плотера, для резки по меткам. Зарание спасибо!

  2. Здравствуйте,не подскажите, 511ovo подойдёт вместо7670?
    Просто покупаю уже не первый раз, присылают именно 511 не знаю что делать.
    Может это клон китайский?

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.