Камера OV7670 подключение к Arduino
Содержание
- Товары из статьи в нашем магазине
- Arduino Uno R3 (ATmega 328P / CH340G)
- OV7670 камера для Arduino
- Прозрачная макетная плата на 400 точек (breadboard)
- Шлейф проводов «Папа — Мама» (20см, 40шт.)
Многие привыкли к ошибочному стереотипу, что на восьмибитном микроконтроллере нельзя сделать что-то сложнее метеостанции. И действительно, большинство проектов на Arduino не заходят дальше подключения примитивных и всем надоевших датчиков, потенциал контроллера не раскрывается, так что мы решили разрушить этот стереотип. Нет, мы не будем запускать Linux на AVR, как это уже делали, но в нашей сегодняшней статье мы рассмотрим подключение самой настоящей цифровой камеры к нашему
микроконтроллеру!
Краткий обзор
Наш герой сегодня – модуль камеры OV7670. Кратко – разрешение до 640×480 px, до 30 кадров в секунду, несколько стандартов кодирования.
Для конфигурации и связи используется интерфейс, схожий по стандарту с I2C, а для непосредственно передачи данных цвета пикселей – восьмибитная параллельная шина. Лучше-бы было взять Arduino Mega 2560, но для неё пока что не существует готовых решений, а также усложняется схемотехника – необходимо добавить 2 конвертера уровней. Поэтому в примере мы будем использовать Arduino Uno. К сожалению, её памяти не хватит на сборку кадра, а пинов не хватит для подключения дисплея, так что изображение за нас собирать будет компьютер.
Схема подключения
Необходимо 2 резистора на 4.7…10Ком для подтяжки линий I2C и два резистора на 4.7Ком для деления напряжения тактового сигнала.
Подключение в Arduino IDE
Из-за специфики и необходимой скорости работы, конфигурация и работа написаны без применения библиотек Arduino, на «чистом» Си. Код для работой с камерой:
( _BV ( EXCLK ) | _BV ( AS2 ) ) ;
15 ; //low d0-d3 camera
252 ; //d7-d4 and interrupt pins
3 ; //disable prescaler for TWI
Он подойдёт для всех Arduino, имеющих в основе ATMega328P (Nano, Uno, Pro Mini 328 и клоны).
В нашем примере Arduino Uno подключается к порту COM9, запрашивает картинку и сохраняет её. Переменные адреса и номер порта заданы в коде, если вы не хотите заморачиваться – легче поменять номер порта в Диспетчере устройств.
Для успешной фотографии необходимо поместить желаемый объект в фокус камеры и не двигать его, так как изображение передаётся на лету и из-за скорости передачи в кадр могут вноситься искажения. Этого можно избежать, взяв, например, Arduino Due. Тогда пинов хватит и на подключение дисплея и на модем для передачи изображения по электронной почте. Дерзайте и у вас всё получится!
Товары из статьи в нашем магазине
Arduino Uno R3 (ATmega 328P / CH340G)
OV7670 камера для Arduino
Прозрачная макетная плата на 400 точек (breadboard)
Шлейф проводов «Папа — Мама» (20см, 40шт.)
Самые популярные материалы в блоге
За все время
За сегодня
17 комментариев . Оставить новый
Куда сохраняются изображения?
Здравствуйте! Пиксели с камеры идут напрямую в UART, из которого побайтово их необходимо собрать в изображения. Например при помощи небольшой программы Grabber https://robotos.in/files/lessons/2/FrameGrabber.7z
Рискну спросить, каким образом я должен запускать эту программу, которую вы скинули?
Есть ли возможность записать видео на sd карту?
Здравствуйте! К сожалению мощности контроллера Arduino и объема буфера для записи видео не хватит.
А через мегу или tense 3.6 можно?
Добрый день! С Ардуино вроде полностью разобрался, пишет с ком-порт данные. А вот с Java-приложением прошу подсказки. Скачать JDK, установил библиотеку javax.comm. Была ошибка компиляции командой в консоли javac SimpleRead.java, а после установки библиотеки эта ошибка исчезла.
Но застрял на другом теперь: я выполнил javac BMP.java, класс создался. Я не Java разработчик, поэтому тонкостей не знаю. Снова выполнил SimpleRead.java, пишет: SimpleRead.java:70: error: can not find symbol BMP bmp = new BMP();
Видимо тот самый класс BMP.class, который я скомпилировал, не находит… Не могли бы Вы сказать что нужно сделать, чтобы программа скомпилировалась и собрала мне, все-таки, картинку?
Здравствуйте! По этой ссылке автор данного кода объясняет, как его правильно установить и запустить.
Добрый день! мы соединили Arduino Nano c камерой модуль оv7670, с помощью Arduino IDE. И нам почему то выдал такую ошибку: C:\Users\Uzer\Downloads\LiveOV7670 (1)\LiveOV7670\LiveOV7670.ino:8:22: fatal error: avr / io.h: No such file or directory
exit status 1
Ошибка компиляции для платы Arduino Nano.
В статье написано: ” Он подойдёт для всех Arduino, имеющих в основе ATMega328P (Nano, Uno, Pro Mini 328 и клоны).” МЫ СКОПИРОВАЛИ СКЕТЧ И СДЕЛАЛИ КОМПИЛЯЦИЮ И НАМ ВЫДАЛ ОШИБКА, (ОШИБКА СВЕРХУ)
Ошибка заключается в том, что ваша среда разработки не может найти одну из необходимых библиотек, о чем говорит фраза fatal error: avr / io.h: No such file or directory
Как можно изменить данный код для платы Arduino Due?
Как запустить камеру для снятия картинки 40×30 пикселей?
Можно сделать, чтобы Ардуино передавала изображение не на компьютер, а через приёмопередатчик на другую Ардуину и через неё на дисплей?
У меня есть пару вопросов по поводу этой чудо камеры, и вашего кода. Я на самом деле своего рода новичок в работе с регистрами, и у меня появилось пару вопросов. Первый вопрос, где вы нашли подробнейшую информацию на эту камеру, потому что в даташите на эту камеру многие регистры не описаны? И второй вопрос. Каким образом вы работаете с зарезервированными регистрами камеры, если о них вообще ничего не известно? Ведь по идеи, они зарезервированы для того чтобы с ними мы не контактировали. Либо же я ошибаюсь, тогда почему?
Не рабоает. Пробывал разные программы для захвата. схема подключения в норме , ток идет. Походу стопорится в самом коде. А конкретно, в функции ArduinoUnoInut() после строки _delay_ms() он при попытке вывести в порт значение для проверки начинает выводить инвертированный знак вопроса. До этой строчки он без проблем выводит в порт значения.
Источник: