Как подключить usb камеру к arduino
Видеокамеры (камеры) в настоящее время находят широкое применение в электронной промышленности и имеют множество применений, таких как система мониторинга посетителей, система наблюдения, система учета посещаемости и т.д. Камеры, которые мы используем сегодня, умны и имеют множество функций, которых не было в предыдущих моделях камер. Современные цифровые камеры не только захватывают изображения, но также захватывают и высокоуровневые описания изображений и анализируют то, что они видят. Они широко используются в робототехнике, искусственном интеллекте, машинном обучении и т. д. Захваченные кадры обрабатываются с помощью искусственного интеллекта и машинного обучения, а затем используются во многих приложениях, таких как обнаружение номерных знаков, обнаружение объектов, обнаружение движения, распознавание лиц и т. д.
В этой статье мы рассмотрим подключение наиболее часто используемого сейчас модуля камеры OV7670 к плате Arduino Uno. Аналогичным образом ее можно подключить и к плате Arduino Mega. Модуль камеры достаточно тяжел в подключении поскольку он имеет большое количество контактов. Также при использовании камеры достаточно важен выбор проводов, которыми вы ее подключаете, поскольку качество проводов может значительно влиять на качество картинки и уровень зашумленности видеоизображения.
Камера OV7670 работает от напряжения 3.3V, поэтому следует избегать прямого ее подключения к обычным контактам ввода/вывода Arduino, которые работают с напряжением 5V. OV7670 является камерой с буфером FIFO (first in, first out – первым пришел, первым вышел). Но в этом проекте мы будем захватывать изображения без использования данного буфера. Мы постарались максимально упростить данный проект чтобы его можно было повторить даже начинающим радиолюбителям.
Необходимые компоненты
Аппаратное обеспечение
- Плата Arduino Uno (купить на AliExpress).
- Модуль камеры (Camera Module) OV7670 (купить на AliExpress).
- Резистор 10 кОм – 2 шт. (купить на AliExpress).
- Резистор 4,7 кОм – 2 шт. (купить на AliExpress).
- Соединительные провода.
Программное обеспечение
Arduino IDE
Serial Port Reader (для анализа выходного изображения)
Некоторые особенности модуля камеры OV7670
OV7670 представляет собой модуль камеры с буфером типа FIFO. В настоящее время он производится несколькими фирмами и доступен с различной распиновкой. OV7670 обеспечивает полномасштабное (full frame) 8 битовое изображение в окне. OV7670 умеет работать с различными форматами видео изображения. В VGA разрешении камера обеспечивает до 30 кадров в секунду.
Модуль камеры OV7670 включает:
- массив датчиков изображений (разрешения примерно 656 x 488 пикселов);
- тактовый генератор;
- процессор обработки сигналов;
- аналого-цифровые преобразователи;
- генератор тестовых шаблонов;
- цифровой сигнальный процессор;
- устройство для масштабирования изображений;
- цифровой видео порт;
- светодиод и выход управления стробоскопической вспышкой.
Датчик изображения камеры OV7670 управляется с помощью шины SCCB (Serial Camera Control Bus - последовательная шина управления камерой) по протоколу I2C (контакты SIOC, SIOD) с максимальной частотой синхронизации 400 кГц.
Внешний вид модуля камеры OV7670 показан на следующих рисунках.
OV7670 модуль VGA камеры
Модуль камеры OV7670 (со снятой линзой)
Модуль камеры OV7670 (нижняя сторона платы)
Камера использует следующие квитирующие (подтверждающие) сигналы:
- VSYNC : Vertical Sync Output (выход вертикальной синхронизации (для строк) – низкий уровень во время кадра;
- HREF : Horizontal Reference (горизонтальная синхронизация (для колонок) – высокий уровень во время активных пикселов ряда (строки);
- PCLK : Pixel Clock Output (пиксельная синхронизация (тактовый сигнал передачи байта из параллельного порта D0–D7) – независимый генератор синхронизирующих импульсов. Данные правильны на нарастающем фронте.
В дополнение к этому камера оперирует еще следующими сигналами:
Камера OV7670 синхронизируется с помощью генератора на 24 МГц. Это обеспечивает выход пиксельной синхронизации (PCLK) 24 МГц. Буфер типа FIFO имеет память на 3 Мбит. Генератор тестовых шаблонов формирует шаблон цветовых полос – с 8 полосами, с постепенным уменьшением к серому цвету (fade-to-gray).
Схема проекта
Схема подключения модуля камеры OV7670 к плате Arduino Uno представлена на следующем рисунке.
Внешний вид получившейся у нас конструкции проекта показан на следующем рисунке.
Объяснение программы для Arduino
Полный текст программы приведен в конце в статьи, здесь же мы рассмотрим его наиболее важные фрагменты.
Для работы с камерой OV7670 нам понадобится встроенная в Arduino IDE библиотека. Никаких внешних библиотек, которые необходимо скачивать, мы в этом проекте использовать не будем, только встроенные библиотеки.
После подключения в программе необходимых библиотек нам необходимо сконфигурировать регистры для работы с камерой OV7670.
Функция Setup() в нашем проекте будет включать все необходимые установки, необходимые для захвата изображений. Первой функцией, которую мы применим, будет arduinoUnoInut() – она используется для инициализации платы Arduino Uno. Она отключает все глобальные прерывания и устанавливает настройки для интерфейсов связи, такие как синхронизацию для ШИМ (широтно-импульсная модуляция), выбор контактов прерывания, настройки предделителя, добавление бита четности и стоповых битов.
Простой и интересный проект, в результате которого вы сможете делать снимки на модуль видеокамеры с использованием Arduino и передавать данные через Ethernet Shield. Снимки появятся на указанном вами веб-сервере.
Очень простой и элегантный проект, для реализации которого вам не не понадобятся никакие дополнительные приложения.
Необходимые компоненты
Нам понадобятся следующие компоненты:
Вот и все. что понадобится для нашего проекта.
Подключение камеры к Arduino
Подключается камера очень просто.
Подготавливаем софт: библиотеки
Для проекта нам понадобятся следующие библиотеки Arduino:
- Adafruit_VC0706.h (для TTL камеры)
- SdFat.h (для SD карты)
- SdFatUtil.h (для SD карты)
- Ethernet.h (для Ethernet шилда)
- SoftwareSerial.h (для TTL камеры)
Все эти библиотеки вы можете скачать на оффициальном сайте Arduino.
После того как вы скачали и установили перечисленные выше библиотеки, можно запускать проект.
Скетч для Arduino
Некоторые необходимые комментарии к коду приведены ниже.
1. Надо изменить mac[] и ip[] в соответсвии с информацией о вашем Arduino.
2. Для того, чтобы отобразить jpg файл в браузере, его надо преобразовать в jpg формат, для этого надо прописать следующие строки
Запуск и проверка работоспособности
1. Для того, чтобы сделать снимок, пропишите в строке браузера:
2. Для того, чтобы отобразить снимок, укажите в строке браузера:
3. Для того, чтобы удалить снимок, напишите в строке браузера:
На рисунке ниже показан пример теста камеры.
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!
Данная камера 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
Начнем с сборки схемы и написания программы управления. Итак для сборки и отладки тестового макета нам потребуется :
Внешний вид макета
После того как Все компоненты собраны, приступаем к сборке схемы.
Чтобы не запутаться в схеме, для наглядности, распишем что и куда подключается:
Программа для трансляции видео с камеры на 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-камеры для компьютера.
Эта статья представляет собой краткое руководство по началу работы для платы 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. Если этого у вас не сделано, воспользуетесь следующей инструкцией:
2. Пример Кода CameraWebServer
В среде Arduino IDE выберите пример для работы с камерой для этого перейдите:
Файл > Примеры > ESP32 > Camera>CameraWebServer
Откроется пример скетча работы с камерой ESP32:
Если вы не можете найти данный пример, то можете его скачать с нашего сайта. Внизу статьи есть ссылка для скачивания материала. Внимание! Для того, чтобы скачать файлы с сайта вам нужно зарегистрироваться.
После загрузки распакуйте папку и откройте файл скетча для esp32 cam ov2640: CameraWebServer.ino.
Перед загрузкой прошивки в модуль ESP32 CAM необходимо указать ваши данные для подключения к Wi-Fi сети.
Затем убедитесь, что вы выбрали правильный модуль камеры. В данном случае используйте модель AI-THINKER Model. Для этого закомментируйте все другие модели и раскомментируйте указанную ниже:
Теперь код готов к загрузке на вашу ESP32.
3. Прошивка ESP32-CAM
Для прошивки я использую самый недорогой TTL программатор. И всё прошивается и работает отлично.
Подключаю всё вот по такой схеме:
Важно! GPIO 0 должен быть подключен к GND, чтобы вы смогли загрузить код.
Чтобы загрузить код, выполните следующие действия:
Важно! Если вы не можете загрузить код, то еще раз проверьте, что GPIO 0 подключен к GND и, что вы выбрали правильные настройки в меню Инструменты. Вы также должны нажать кнопку сброса на борту, чтобы перезагрузить ESP32 в режиме программирования.
4. Получение IP-адреса и подключение к камере.
После загрузки кода отключите GPIO 0 от GND. Подключите питание на 5 В. На 3,3 В у меня камера не заработала.
IP-адрес ESP32 должен быть выведен в последовательном мониторе.
У вас так же есть возможность делать фотографии, нажав на кнопку Get Still. К сожалению, этот пример не сохраняет фотографии, но вы можете изменить его, чтобы использовать встроенную карту microSD для хранения полученных фотографий.
Есть еще несколько настроек камеры, с которыми вы можете поиграть, чтобы настроить параметры изображения.
Если вы откроете монитор порта во время работы камеры, то вы получите подробную информацию о количестве кадров в секунду, о скорости обработки и пр.
Чем выше качество потокового вещания, тем меньше кадров. Комфортно работает при разрешении 600х800.
Можно реализовать распознавание лиц. Но, пока, в данном направлении я не экспериментировал. Как будут результаты, обязательно напишу статью, или сделаю проект.
Подписывайтесь на наш канал на Youtube и вступайте в группы в Вконтакте и Facebook.
Читайте также: