Меню

Arduino камера своими руками

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Однопиксельная камера для Arduino своими руками

Классические платы Arduino, вроде Arduino Uno или Arduino Nano, являются довольно простыми и не обладают мощным микроконтроллером. Благодаря этому их цена очень низка. Но иногда возникают ситуации, когда необходимо сделать проект получения простых изображений из реального мира при весьма ограниченном бюджете. Стандартные модули камер микроконтроллеры серии ATmega могут не потянуть.

Но есть очень простое решение – сделать однопиксельную камеру, которая сможет последовательно сформировать изображение какого-нибудь небольшого объекта. И дешевые платы Arduino смогут справиться с этой задачей.

Для реализации камеры для Arduino используем датчик света TEPT4400 компании VISHAY. TEPT4400 представляет собой фототранзистор, способный изменять напряжение при изменении интенсивности падающего на него света. Ниже показана схема подключения датчика света к Arduino.

Для того, чтобы поток света был целенаправленным, и мы могли получать четкий пиксель, накроем датчик света длинным непрозрачным цилиндром с отверстием и получим некое подобие камеры.

Для того, чтобы получать не одну точку, а набор точек в плоскости пространства, установим самодельную камеру на платформу с серводвигателями, которыми будет управлять Arduino. В результате может получиться что-то вроде этого.

Для получения изображения на компьютере создадим простую программу с использованием языка программирования Processing. Представленное ниже изображение состоит из матрицы 40×30 пикселей. Arduino отправляет в компьютер координаты x и y, а также интенсивность света каждой позиции. Processing просто рисует каждую точку изображения со значением в сером диапазоне 0-255.

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

Далее приведен скетч (код) для Arduino, позволяющий принимать информацию об интенсивности света с камеры, управлять электроприводом и отправлять данные в компьютер для отображения результатов.

Источник

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Камера на основе Arduino с передачей видео по Bluetooth

Сегодня вы вряд ли кого-нибудь удивите мобильным телефоном с камерой, беспроводными гаджетами и другими техническими достижениями. Благодаря платформе Arduino миллионы людей открыли для себя удивительный мир электроники и программирования. Было уже написано множество инструкций о том, как обмениваться данными между мобильным телефоном и Arduino через Bluetooth. В этом примере мы тоже будем обмениваться данными между мобильным телефоном на Android и Arduino UNO через Bluetooth, но мы будем передавать не просто набор символов и цифр, а изображение.

Кто-то скажет, что это невозможно, Arduino слишком медленно обрабатывает большие объемы данных с хорошей скоростью. И он будет абсолютно прав. А что, если немного помочь Arduino – перенести всю «тяжелую» работу на плечи другого устройства? И такое устройство есть.

Это уникальный TFT-щилд для Arduino. В этом уроке мы покажем, как можно подключиться через Bluetooth к Arduino и телефону Android, получить изображение с камеры OV7670 на Arduino UNO и перенести его на телефон Android. Затем, наоборот, перенесем изображение с камеры телефона Android на Arduino UNO и отобразим его на экране специального TFT-экрана.

Помимо Arduino и TFT-щилда основными компонентами данного проекта также являются камера OV7670 и Bluetooth-модуль HC-06 (HC-05).

Все демонстрационные скетчи написаны в среде Arduino IDE, поэтому вначале необходимо установить Arduino IDE – https://www.arduino.cc/en/main/software. Затем необходимо установить библиотеку для TFT-щилда – github.com/YATFT/YATFT. После установки Arduino IDE необходимо запрограммировать плату Arduino UNO. Для простоты рекомендуем прошивать отдельно, без экрана TFT. Код основного файла ArduinoBluetoothCamera.ino следующий:

Код заголовочного файла OV7670_regs.h:

На телефоне Android необходимо установить ArduinoTFT.apk (https://cdn.instructables.com/ORIG/FP9/HGMG/JUINB9LK/FP9HGMGJUINB9LK.apk) и разрешить приложению использовать Bluetooth и камеру.

В модуле Bluetooth необходимо установить скорость передачи данных 115200 (команда «AT + UART = 115200, 0, 0»). Это оптимальная скорость, с которой Arduino UNO удается получать и обрабатывать данные. (Теоретически вы можете увеличить скорость, оптимизировать прием и обработку данных, но для этого требуется больший объем оперативной памяти). Обратите внимание, что модуль Bluetooth подключается к порту отладки Arduino UNO. Таким образом, при работе с Bluetooth порт отладки недоступен. А перед программированием Arduino UNO (в комплекте с модулем Bluetooth) необходимо отключить модуль Bluetooth. И после программирования подключите его обратно.

Источник

Ethernet камера на базе Arduino

В данном проекте мы подключим камеру через Ethernet при помощи Arduino. Т.о. вы сможете делать фото внутри дома, просто открыв веб-страничку в вашем браузере. Для данного проекта вам не понадобится какое-либо специальное приложение для смартфона.

Шаг 1: Используемые материалы

Шаг 2: Подключение модулей

Аппаратное соединение модулей вместе не вызовет особых проблем. Выполните подключение согласно рисунку.

Шаг 3: Подготовка программного обеспечения – библиотека

Для данного проекта нам понадобится загрузить несколько библиотек. Все б иблиотеки можно загрузить с ресурса http://arduino.cc

  • Adafruit_VC0706.h (для TTL камеры)
  • SdFat.h (для SD-карты)
  • SdFatUtil.h (для SD-карты)
  • Ethernet.h (для Ethernet шилда, устанавливается по умолчанию в скетче)
  • SoftwareSerial.h (для TTL камеры)

После загрузки всех библиотек вы готовы для запуска проекта.

Шаг 4: Программное обеспечение – код скетча

В данном разделе размещается код скетча проекта.

Загрузите файл скетча — ethernet_camera.ino

Вам необходимо выполнить некоторые изменения в коде скетча.

1. Необходимо изменить параметры mac[] и ip[] для вашего arduino.

2. Для отображения jpg файла в браузере мы должны подать команду для преобразования в формат jpg, как показано ниже:

В скетче указаны блоки с подробными комментариями – процедура прошивки, последовательная передача данных, файлы чтения/записи SD-карты, ethernet и т.д.

Читайте также:  Бинауральная голова своими руками

Шаг 5: Запуск и тестирование результатов


На картинке выше показан результат работы ethernet камеры.

Для фотографирования: Напечатайте в командной строке любого браузера http:/xxx.xxx.xxx.xxx:5555/ttt

Для просмотра полученной фотографии: Напечатайте в командной строке любого браузера http:/xxx.xxx.xxx.xxx:5555/image.jpg

Для удаления фотографии: Напечатайте в командной строке любого браузера http:/xxx.xxx.xxx.xxx:5555/rrr

Источник

Подключение камеры в Arduino и вывод изображения в окне браузера

Простой и интересный проект, в результате которого вы сможете делать снимки на модуль видеокамеры с использованием Arduino и передавать данные через Ethernet Shield. Снимки появятся на указанном вами веб-сервере.

Очень простой и элегантный проект, для реализации которого вам не не понадобятся никакие дополнительные приложения.

Необходимые компоненты

Нам понадобятся следующие компоненты:

  • Arduino Uno
  • Arduino Ethernet Shield
  • Serial Camera

Вот и все. что понадобится для нашего проекта.

Подключение камеры к 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. Для того, чтобы удалить снимок, напишите в строке браузера:

На рисунке ниже показан пример теста камеры.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник

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

Статья посвящена подключению и работе с серийным модулем TTL камеры и Arduino.

Камера работает по стандартам NTSC. Подобные модули отлично вписываются в проекты для реализации фотографии и видеострима. Кроме того, обычно они имеют встроенную возможность настройки яркости и насыщенности цветов, настройки авто-контраста и авто-яркости, дают возможность отслеживать движение.

Описание и технические характеристики камеры

Хотелось бы более детально остановиться на том, как именно подобные модули обеспечивают и фото и видеосъемку. Изначально камера была разработана с целью наблюдения. То есть, основная задача была стримить видео с пина Video (в черно-белом цвете) и обрабатывать команды по серийному протоколу связи. С помощью серийного протокола можно запросить у модуля камеры остановить кадр видеосъемки и сохранить полученный кадр в формате JPEG. Например, модуль камеры в стандартном режиме работы будет стримить видео. Когда камера обнаружит движение, будет сделано фото, которое сохранится на карту памяти для дальнейшего анализа.

Разрешение на модуле камеры не большое – максимальный размер фото 630х480 пикселей. При этом камера чувствительна к инфракрасному излучению, благодаря чему обнаруживаются изменения в цветопередаче. Основная причина этих недостатков – модуль камеры предназначен для наблюдения, а не качественной фотографии. Существуют модули и с другими параметрами. Рассматриваемый нами – один из самых лучших по своим техническим характеристикам.

Технические характеристики модуля камеры

  • Размер модуля: 32 м x 32 мм
  • Фотоматрица: CMOS 1/4 дюйма
  • Количество пикселей: 0.3 M
  • Размер пикселя: 5.6 мкм * 5.6 мкм
  • Формат на выходе: Стандартный JPEG/M-JPEG
  • Баланс белого: автоматический
  • Экспозиция: автоматическая
  • Коэффициент передачи: автоматический
  • Динамический диапазон: 60 Дб
  • Максимальное аналоговое усиление: 16 Дб
  • Скорость кадров: 640*480 30 кадров в секунду
  • Режим сканирования: прогрессивное сканирование
  • Угол обзора: 60 градусов
  • Расстояние наблюдения: 10 метров, максимум 15 метров (настраиваемое)
  • Размер изображения: VGA (640*480), QVGA (320*240), QQVGA (160*120)
  • Скорость передачи данных: по умолчанию 38400 (В даташите указано, что вы можете менять скорость с помощью соответствующих команд, но на практике это не работает)
  • Потребляемый ток: 75 мА
  • Рабочее напряжение: постоянный ток +5В
  • Связь: 3.3В TTL (три проводника TX, RX, GND)

В качестве примера работы видеокамеры ниже приведены две фотографии: первая – в комнате в солнечный день и вторая – на улице в дождливый.

Подключение камеры

Как правило модуль продается без коннекторов, так что придется запаять проводники к предусмотреным пинам. Хорошая новость: контакты находятся на достаточно большом расстоянии друг от друга (около 2 мм). Можно использовать достаточно толстый проводник и жало для распайки.

Если вы не планируете использовать возможности видеосъемки, можно использовать четыре провода. Мы используем красный для пина +5 В, черный для Земли, белый для пина RX (данные, которые поступают на камеру от Arduino) и зеленый для пина TX (данные, которые поступают с камеры).

Если вы планируете использовать NTSC видео-выход для подключения к телевизору или монитору, припаяйте еще один черный проводник к пину Земля и желтый к пину CVBS.

Если у вас водонепроницаемая модель камеры, в ней уже будут предусмотрены следующие коннекторы:

  • Красный подключен к +5 В;
  • Черный подключен к Земле;
  • Зеленый – RX;
  • Белый – TX;
  • Желтый – сигнал NTSC видео;
  • Коричневый – Земля NTSC видео.

Проверка работоспособности камеры

Один из самых быстрых методов проверки работоспособности камеры – использование NTSC видео выхода для подключения. В этом случае при настройке параметров изображения и фокусировки вы моментально увидите результат. В комплексе с программой CommTool, которую мы рассмотрим ниже, это идеальный метод для ознакомления с основаи работы с модулем камеры и Arduino.

Читайте также:  Детский сад ко дню матери своими руками

Для подключения к большинству телевизоров и мониторов нужен RCA джек. С этой целью мы припаяли RCA выход к камере. Черный проводник подключен к Земле, а желтый – к сигналу. Купить коннекторы RCA типа можно в любом магазине радиотехнических деталей.

К сожалению, перейти из режима NTSC в режим PAL невозможно.

Подключите кабель NTSC к монитору и подключите красный и черный кабели к источнику питания +5 В. На мониторе тут же появится черно-белое изображение!

Использование CommTool

Для использования windows-приложения Comm Tool, необходимо наладить обмен данными с камерой по серийному протоколу. Мы предлагаем два варианта. Первый – использовать переходник для FTDI или какой-то USB/TTL конвертер. В случае с Arduino вы можете использовать серийный чип (чип FTDI), загрузив следующий скетч на Arduino:

Примечание: Этот метод сработает только на Arduino с отдельным USB-интерфейсом, вроде Uno. С платами Leonardo так не получится!

Если вы используете Leonardo, Micro, Yun, или другие контроллеры на основании ATmega32U4, используйте этот Leo_passthru скетч вместо «пустого» скетча.

//Обеспечивает передачу данных по серийному протоколу при

//использовании плат Arduino Leonardo в Windows.

// Красный подключен к +5 В

// Черный — к земле

// Зеленый — к цифровому пину 0

// Белый — к цифровому пину 1

Теперь подключите камеру к Arduino следующим образом:

На водонепроницаемых камерах белый и зеленый провода часто меняются местами! Так что учтите это при подключении. Красный коннектор должен все равно идти к +5 В, а черный – к Земле.

Обратите внимание, что при подключении камеры к Arduino используется резистор на 10 кОм. Питание логики камеры 3.3 В, так что опустить напряжение с 5 В до 2.5 не такая уж плохая идея. В обычном режиме на выходе с цифрового пина 0 формируется сигнал HIGH, который соответствует 5 В. При нашем подключении, с учетом сопротивления резистора, подключенного к входному сигналу (белый проводник), напряжение не превысит 3.3 В.

Теперь загрузите и установите программное обеспечение VC0706 CommTool.

Запустите программу и выберите COM порт, к которому подключена Arduino.

После этого Open порт и нажмите Get Version

Обратите внимание, что отобразилось VC0703 – Почему DSP запрограммирован под другим номером – точно не известно. В любом, случае, ответ мы получили.

Следующая кнопка – рядом с FBUF CTRL.

Это новая панель, которую мы можем использовать, чтобы напрямую загрузить рисунки с камеры.

  • Установите камеру на объекте для его фотографии;
  • Нажмите Stop FBuf, чтобы «заморозить» кадр;
  • Нажмите Sel File, чтобы выбрать файл для сохранить в JPG формате.

После этого нажмите Read (рядом с Sel File), чтобы считать кадр с камеры.

Вот и все! Теперь вы с легкостью можете загружать фото с камеры. Чтобы сделать новый снимок, нажмите Resume. После этого нажмите Stop CFbuf для нового фото. Кроме того, вы можете выбрать Compression Ratio и выбрать качество снимка. Учтите, что время обработки тоже изменится. Простого пути изменения размера фотографии в этой программе нет, но мы можем это сделать в скетче Arduino.

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

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

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

В программе куча настроек. Рекомендуем ознакомится с их перечнем ниже и не менять их, пока вы на 100% уверены, что это за настройка и зачем она вам нужна.

  • Config – смотрите выше.
  • Get Version – смотрите выше.
  • R/W Data – используется для передачи данных на процессор DSP чипа. Не стоит менять эту настройку без стопроцентного понимания, зачем это необходимо, так как можно получить конфликт с камерой.
  • Color Ctrl – служит для выбора цвета, черно-белого режима или авто выбора (вероятно, основанного на условиях освещенности). Автоматический режим отлично отрабатывает, так что можно использовать именно его.
  • Mirror Ctrl – скорее всего – переворот изображения (зеркальный эффект).
  • Power Ctrl – проверка питания. Можно настроить автоматический режим отключения, когда нет движения.
  • Timer Ctrl – в DSP есть встроенный RTC, который можно настроить. Однако батарейки нет, так что после перезагрузки настройки собьются.
  • AE Ctrl – управление авто контрастом/яркостью. По умолчанию настройки установлены на автоматический выбор для сьемки в помещении и на открытом пространстве.
  • Motion Ctrl – настройки системы обнаружения движения. Можно с ними поиграться и протестировать. Есть скетч для Arduino для обнаружения движения объектов, который можно использовать.
  • OSD Config – протокол, который, судя по отзывам, не поддерживается большинством камер 🙁
  • Image property – смотрите выше.
  • Gamma – точная настройка гаммы CMOS сенсора. Настройки по умолчанию хорошие. Поэкспериментировать можно.
  • SPI Flash – скорее всего – считывание и запись данных в SPI хранилище.
  • Other Ctrl – возможно, для цифро-аналогового преобразования.
  • Up/Down Load – считывание и запись данных на флэш-память. Вероятно, для загрузки нового DSP кода.
  • System Reset – перезагрузка модуля. Актуальна, когда модуль перестает отвечать.
  • FBuff Ctrl – смотрите выше.
  • Zoom Ctrl – в модуле есть встроенный ‘Pan Tilt Zoom’, НО он рассчитан только для видеосьемки. С фотографиями отрабатывать не будет. Можете поэкспериментировать с PTZ, может оказаться полезным.
Читайте также:  Как сделать носки для кота своими руками

Использование видеокамеры с Arduino

Давайте подключим камеру к нашему микроконтроллеру (в данном случае — Arduino). Подключение похоже на предложенный выше вариант. Для подключения используем два цифровых пина и серийный протокол для обмена данными с модулем. Для сохранения снимков вам понадобится карта памяти. Можно использовать дополнительные microSD модули или шилды.

Подключите видеокамерукамеру к Arduino, как показано на рисунке ниже:

В водонепроницаемых камерах белый и зеленый проводники могут располагаться наоборот! Так что проверьте это перед подключением. Красный кабель идет к +5 В, черный – к Земле.

Предлагаем для начала проверить microSD карту. После проверки, можно устанавливать библиотеку VC0706 для видеокамер. Скачать ее можно здесь: Github

Переименуйте распакованную папку Adafruit_VC0706. Проверьте наличие файлов Adafruit_VC0706.cpp и Adafruit_VC0706.h. Переместите папку с библиотекой Adafruit_VC0706 в папку /libraries/ folder. Возможно, вам надо будет создать подпапку в библиотеке. Перезагрузите Arduino IDE.

Если вы используете Arduino v23 или более раннюю версию, вам надо будет дополнительно установить библиотеку NewSoftSerial. Скачать ее можно здесь: NewSoftSerial10c.zip. В Arduino 1.0 эта библиотека встроена (называется SoftwareSerial).

Первый снимок

Что ж, теперь можно делать ваш первый снимок. Откройте Arduino IDE и выберите скетч File-> Examples-> Adafruit_VC0706-> Snapshot. Загрузите его на Arduino. Откройте окно серийного монитора, в котором вы увидите как сделается фото 640×480 и сохранится на карту памяти microSD. Карту можно извлечь и перенести с нее данные на ваш компьютер.

Ниже показаны несколько настроек, которые можно поменять для работы с вашей видеокамерой. Первое – замена пинов, к которым подключена камера. Можно использовать два любых цифровых пина. Замена проводится в следующей строке:

// This is the camera pin connection. Connect the camera TX

// to pin 2, camera RX to pin 3

NewSoftSerial cameraconnection = NewSoftSerial(2, 3);

Можно изменить разрешение снимка на 160×120, 320×240 или 640×480. Для этого используются следующие строки:

// Set the picture size — you can choose one of 640×480, 320×240 or 160×120

// Remember that bigger pictures take longer to transmit!

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

Обнаружение движения

Отличная опция, которая есть в камере – возможность обнаруживать движение. Работает эта фукция по принципу обнаружения изменений в кадрах и подаче соответствующего сигнала на микроконтроллер. Так что в своих проектах можно немного сэкономить и не использовать дополнительный пироэлектрический датчик движения.

Загрузите скетч из File-> Examples-> Adafruit_VC0706-> MotionDetect на Arduino. Как только он загрузится, будет сделан снимок. Подождите несколько минут и помашите рукой перед камерой, будет сделано еще одно фото.

Включать и отключать функцию обнаружения движения можно с помощью вызова setMotionDetect()

// Motion detection system can alert you when the camera ‘sees’ motion!

cam.setMotionDetect(true); // turn it on

//cam.setMotionDetect(false); // turn it off (default)

Вам надо подать запрос на камеру при обнаружении движения, вызвав motionDetected() – в результате вам вернется true, если движение было и false, если не было.

Ручная настройка фокуса

В камере не предусмотрен автофокус, есть только ручной режим. С одной сторы это хорошо, с другой – плохо. Камера поставляется с хорошей глубиной фокуса, которая подходит для большинства задач. Если вы планируете настраивать фокус, очень рекомендуем предварительно подключить модуль камеры к монитору, как мы это делали выше. Так вы сможете в режиме реального времени отследить изменение настроек. После настройки, объектив затягивается винтом.

Если у вас влагозащищенная камера, для настройки придется снять корпусную часть и только потом провести настройку.

Дополнительные вопросы-пояснения

Как можно изменить скорость передачи данных на модуле видеокамеры?

Возможно, вы обратили внимание, что есть командная строка для изменения скорости передачи данных. По умолчанию, значение установлено на 38400.

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

С какой скоростью можно делать снимки?

Рассмотренная в данной статье камера достаточно медленная. Для передачи изображения понадобится около 30 секунд. Обратите внимание, что это характеристика, которая отвечает за обработку и сохранение снимка в том числе. Для анализа в режиме реального времени подобной задержки нет.

Почему такие бледные цвета? Снимки похожи на монохромные.

Рассмотренный модуль был разработан для режима наблюдения, чувствительность видеокамеры смещена к инфракрасному диапазону. Это значит, что объект, который отражает или излучает инфракрасные волны будет казаться ярче.

Для более естественной цветопередачи можно использовать дополнительные инфракрасные фильтры.

Есть ли альтернативные библиотеки для камеры и Arduino?

Например, есть еще одна библиотека, которую можно тоже скачать на Github

Так что экспериментируйте, тестируйте и развивайте свои проекты на Arduino.

Источник

Adblock
detector