Как подключить ov7670 к ардуино
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Arduino и камера OV7670
Большинство плат Arduino не отличаются большой производительностью и выдающимися вычислительными возможностями. Поэтому в основном их используют в не слишком ресурсоемких проектах вроде простых систем домашней автоматики.
В связи с этим радиолюбители и разработчики электроники для задач фиксации и обработки изображений берут более сложные вычислительные устройства, например, Raspberry Pi. Но при желании такие задачи можно отчасти решить с помощью Arduino. Так, в данном материале будет показано, как подключить камеру OV7670 к Arduino и получать с нее изображения.
Камера OV7670 имеет разрешение 0.3 мегапикселя. Вывод изображений осуществляется в формате 640×480 VGA при 30 кадрах в секунду. Модуль камеры питается от 3.3 В, Настройка регистров камеры осуществляется по интерфейсу I2C. Данные передаются по параллельному интерфейсу, состоящему из восьми линий (D0-D7). Схема подключения OV7670 к Arduino показана на рисунке ниже.
Для того чтобы взаимодействовать с камерой на персональном компьютере через Arduino на этом компьютере должен стоять Java SE Development Kit 8 или выше. Если этого нет, то скачайте дистрибутив с официального сайта Java.
Теперь скачайте тестовую программу отсюда. Откройте ее в Arduino IDE, подключите плату Arduino и загрузите данный скетч в эту плату. Узнайте к какому COM-порту подключена ваша плата Arduino и скачайте соответствующий номеру порта архив.
Далее скачайте и распакуйте архив Extra.rar. Он состоит из папок scr и lib, а также файла win32com.dll. Поместите этот файл в директорию C:\Program Files\Java\jdk1.8.0\jre\bin. Теперь откройте папку lib и увидите файлы comm.jar и javax.comm.properties. Первый файл скопируйте в C:\Program Files\Java\jdk1.8.0\jre\lib\ext, а второй в C:\Program Files\Java\jdk1.8.0_74\jre\lib.
Откройте командную строку cmd и в ней зайдите в директорию, где хранится папка code, в данном случае это C:\Program Files\Java\jdk1.8.0\bin. Введите java code.SimpleRead, это будет выглядеть так C:\Program Files\Java\jdk1.8.0\bin>java code. SimpleRead. Всё, теперь после этого в папке out вы сможете увидеть изображения с подключенной к Arduino камеры OV7670.
Конечно, их качество оставляет желать лучшего, но это то, на что способна 8-битное вычислительное устройство.
Как подключить модуль камеры OV7670 к Arduino
Транслируем изображение в реальном времени с помощью модуля камеры OV7670 на 1,8-дюймовый TFT ЖК-экран с помощью Arduino IDE.
Шаг 1. О проекте
Мы подключим, настроим и получим тестовый образ от OV7670 с помощью небольшой программы, написанной в Arduino IDE. Это может стать отправной точкой для его использования в будущих проектах. В уроке мы будем использовать библиотеку indrekluuk, и мы очень благодарны разработчикам этой библиотеки.
Шаг 2. Модуль камеры OV7670
Этот модуль позволяет захватывать изображения в формате VGA (640×480). Он может выполнять некоторую начальную обработку и передавать изображения на микроконтроллеры, такие как Arduino, через интерфейс SCCB.

Камера позволяет формировать изображения в других форматах, таких как CIF (352×240) например. Ручная регулировка до 40×30 также возможна. Максимальная скорость передачи изображения (VGA) может достигать 30 кадров в секунду. Камера также выполняет предварительную обработку изображений, например контроль экспозиции, усиление, баланс белого и многое другое. Также поддерживаются различные варианты кодирования изображений (YUV, различные типы RGB). Передача данных осуществляется по протоколу SCCB.
OV7670 характеристики
Шаг 3. Комплектующие
Нам понадобится очень небольшой набор комплектующих (на фото выше слева направо):
Для понимания работы TFT-дисплея обязательно посмотрите Гид по работе с TFT-дисплеями.
Шаг 4. Схема соединения
Продолжаем со сборки всех компонентов, как показано на схеме ниже.
Соединения между OV7670 и Arduino Nano:
| OV7670 | Arduino Nano |
|---|---|
| VSYNC | PIN2 |
| XCLCK | PIN3(должен быть сдвинут по уровню от 5 В => 3,3 В) |
| PCLCK | PIN12 |
| SIOD | A4 (I2C data) |
| SIOC | A5 (I2C clock) |
| DO D3 | A0.. A3 (pixel data bits 0..3) |
| D4 D7 | PIN4..PIN7 (pixel data bits 4..7) |
| 3.3V | 3.3V |
| RESET | 3.3V |
| GND | GND |
| PWDN | GND |
Соединения между TFT-дисплеем и Arduino Nano:
| TFT Display | Arduino Nano |
|---|---|
| DC | PIN 8 (5V => 3.3V) |
| CS | PIN 9 (5V => 3.3V) |
| RESET | PIN 10 (5V => 3.3V) |
| SPI data | PIN 11 (5V => 3.3V) |
| SPI clock | PIN 13 (5V => 3.3V) |
| VCC | 5V/3.3V (в зависимости от положения перемычки на плате TFT) |
| BL | 3.3V |
| GND | GND |
Шаг 5. Компиляция в Arduino IDE
Скачать все нужные файлы вы можете на GitHub здесь.
Шаг 6. Настройка программы
Вы можете выполнить все действия шаг за шагом согласно скриншотам.
Нажмите «Скачать ZIP» (Download ZIP), чтобы загрузить все файлы.
После загрузки разархивируйте файлы в нужную папку.
Откройте разархивированную папку и перейдите в каталог: LiveOV7670-master\src\lib. Скопируйте две папки в вашу библиотеку (Library) Arduino.
Перейдите в LiveOV7670-master\src\LiveOV7670. Откройте файл с именем setup.h.
При изменении значения примера 1 на пример 3, как показано на скриншоте ниже, камера будет транслировать изображение непосредственно на компьютер.
Когда установлен Пример 1, камера передает изображение непосредственно на ЖК-дисплей, который подключен через интерфейс SPI с использованием библиотеки LiveOV7670Library.
Установите Пример 1 для live-потока TFT.
Далее откройте файл LiveOV7670.ino.
В нижней правой части экрана выберите плату Arduino и порт (Port).
Загрузите код сверху без каких-либо изменений.
Вы увидите уведомление о том, что программа компилируется, как показано выше.
Шаг 7. Заключение
Эта дешевая и простая в использовании Arduino-совместимая камера полезна для проектов видеонаблюдения или в качестве системы для робототехники, использующей платформы, такие как OpenCV. Также можно использовать как обычную веб-камеру.
4 комментария
Уважаемый автор, все сделала, как вы сказали, но после загрузки ошибка компиляции (см. далее). Что я делаю не так?
Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Плата:»Arduino Nano, ATmega328P (Old Bootloader)»
In file included from C:\Users\����\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_SPITFT.cpp:36:0:
C:\Users\����\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_SPITFT.h:244:23: error: no members matching ‘Adafruit_GFX::drawRGBBitmap’ in ‘class Adafruit_GFX’
using Adafruit_GFX::drawRGBBitmap; // Check base class first
Ошибка компиляции для платы Arduino Nano.
У меня все заработало (поправила контакты, перезагрузила скетч). Жаль, что вы так необщительны, но все равно спасибо. А сделайте еще на какой-нибудь урок на другой TFT экран. Я хочу большой экран, ну хотя бы 6-7 дюймов.
Здравствуйте, а можете поделиться проектом, хотел подробно узнать, спасибо
Как подключить ov7670 к ардуино
Arduino Uno и камера ov7670 — пример использования Избранное
В настоящий момент камера ov7670 является самым доступным модулем получения изображения для любителей Arduino. Когда-то она стоила около 12$, сейчас же её цена упала до менее 5$.
ov7670 (datasheet) имеет хорошие возможности для своей цены:
Она была бы идеальна если бы не одна проблема — подключение и получение хотя бы тестового изображения, как и в любой мало-мальски сложной железке. В интернете много обсуждений, статей, рекомендаций, но четких шагов найти не получается: кто-то ленится их писать, кто-то выкладывает только схему или код, кто-то вообще ничего не выкладывает, а рапортует только об успешном подключении. Особо хочется отметить ComputerNerd, который выложил прекрасный пример с небольшим описанием, но для начинающего этого мало.
Данная статья призвана показать, как подключить, настроить и получить тестовое изображение с помощью небольшой программки на java, что станет превосходной отправной точкой для дальнейших экспериментов.
Свои эксперименты я проводил на Arduino Uno, тк она лучше всего была описана — схемы подключения и статьи. Была попытка настроить на Arduino Mega, но закончилась она плачевно. Оказалось, что на ножнах A4 и A5 данная плата имеет уже опорное напряжение в 5v, которое спалило камеру.
В моём примере будет использована камера
1. Схема подключения ov7670 к Arduino Uno
Программирование камеры нужно начать с правильно подключения. Напряжение входов камеры местами отличается от напряжения Arduino, поэтому нужны резисторы.
2. Программа для ov7670 и Arduino Uno
Для составления программы был использован пример от ComputerNerd, который пришлось немного обрезать и доделать местами. Код :
Подключаем камеру OV7670 к Arduino и выводим картинку на дисплей
Данная камера ov7670 является самым доступным модулем для получения изображения совместно с Arduino.
Модуль камеры имеет следующие характеристики:
В данной статье попробуем подключить, настроить и получить тестовое изображение с помощью небольшой программки написанной в среде Arduino IDE, что станет начальной точкой для дальнейшего применения в различных проектах.
Подключение OV7670 к Arduino
Начнем с сборки схемы и написания программы управления. Итак для сборки и отладки тестового макета нам потребуется :
Внешний вид макета
После того как Все компоненты собраны, приступаем к сборке схемы.
Чтобы не запутаться в схеме, для наглядности, распишем что и куда подключается:
Программа для трансляции видео с камеры на 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-камеры для компьютера.
Подключение камеры OV7670 к Arduino Uno
Видеокамеры (камеры) в настоящее время находят широкое применение в электронной промышленности и имеют множество применений, таких как система мониторинга посетителей, система наблюдения, система учета посещаемости и т.д. Камеры, которые мы используем сегодня, умны и имеют множество функций, которых не было в предыдущих моделях камер. Современные цифровые камеры не только захватывают изображения, но также захватывают и высокоуровневые описания изображений и анализируют то, что они видят. Они широко используются в робототехнике, искусственном интеллекте, машинном обучении и т. д. Захваченные кадры обрабатываются с помощью искусственного интеллекта и машинного обучения, а затем используются во многих приложениях, таких как обнаружение номерных знаков, обнаружение объектов, обнаружение движения, распознавание лиц и т. д.
В этой статье мы рассмотрим подключение наиболее часто используемого сейчас модуля камеры OV7670 к плате Arduino Uno. Аналогичным образом ее можно подключить и к плате Arduino Mega. Модуль камеры достаточно тяжел в подключении поскольку он имеет большое количество контактов. Также при использовании камеры достаточно важен выбор проводов, которыми вы ее подключаете, поскольку качество проводов может значительно влиять на качество картинки и уровень зашумленности видеоизображения.
Камера OV7670 работает от напряжения 3.3V, поэтому следует избегать прямого ее подключения к обычным контактам ввода/вывода Arduino, которые работают с напряжением 5V. OV7670 является камерой с буфером FIFO (first in, first out – первым пришел, первым вышел). Но в этом проекте мы будем захватывать изображения без использования данного буфера. Мы постарались максимально упростить данный проект чтобы его можно было повторить даже начинающим радиолюбителям.
Необходимые компоненты
Аппаратное обеспечение
Программное обеспечение
Arduino IDE
Serial Port Reader (для анализа выходного изображения)
Некоторые особенности модуля камеры OV7670
OV7670 представляет собой модуль камеры с буфером типа FIFO. В настоящее время он производится несколькими фирмами и доступен с различной распиновкой. OV7670 обеспечивает полномасштабное (full frame) 8 битовое изображение в окне. OV7670 умеет работать с различными форматами видео изображения. В VGA разрешении камера обеспечивает до 30 кадров в секунду.
Модуль камеры OV7670 включает:
Внешний вид модуля камеры OV7670 показан на следующих рисунках.

























