К содержимому
  1. Главная
  2. Блог
  3. Камера для таймлапса на Arduino с ArduCam

Камера для таймлапса на Arduino с ArduCam

6 февраля 2014 · По материалам Arducam

Эту статью написал один из клиентов Arducam.

Камера для таймлапса на Arduino с ArduCam

Экспериментируя с камерами-обскурами, я много думал о том, как запечатлеть и показать течение времени. День и ночь, смена времён года, восход и закат солнца, восход и заход луны, приливы, час пик, наплыв посетителей в ресторанах — даже жизнь и смерть отмечают ход времени.

Готовых устройств для таймлапс-съёмки в продаже много. Им нужны питание от сети, солнечная панель или ёмкий аккумулятор, дорогая фототехника; к тому же они большие и заметные. Размер и цена сильно ограничивают продолжительность съёмки — даже если такое устройство не утащит первый же проходящий мимо варвар. Моя цель — сделать как можно более маленькую, экономичную и дешёвую камеру, чтобы свободно расставлять такие камеры где угодно и смотреть, что покажет течение времени.

Для этого я решил попробовать ArduCam.

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

  • Библиотеки с открытым кодом не используют современную систему контроля версий вроде GitHub — это просто несколько файлов. Вдобавок под Linux они не компилируются, пока не исправишь директивы #include с учётом регистра символов.
  • На сайте ArduCam показаны снимки в полном разрешении с «поддерживаемых» модулей камер, но плата-шилд ArduCam Rev. B не может снимать растровые изображения больше 320 × 240 пикселей: у неё буфер всего 3 мегабита. С камерами со встроенным JPEG-сжатием можно получить снимки с более высоким разрешением, но они выходят очень размытыми, потому что их приходится ужимать до размера буфера. Если те снимки и правда сделаны с шилдом ArduCam, то не тем кодом, который выложен на сайте.
  • Первая купленная мной «поддерживаемая» камера, MT9D111, не смогла сделать ни одного приличного снимка ни в одном разрешении. Заработать удалось только модуль OV2640.
Пример снимка с «поддерживаемой» камеры MT9D111, сделанного примером из открытого кода ArduCam.

В общем, ArduCam слегка разочаровала. Впечатляет, что кто-то сумел собрать камеру, работающую с Arduino, но пользы от неё немного. Размер изображения смехотворно мал, а потребление значительное (на 4 батарейках AA получается около 370 снимков). Для каких-то задач она, может, и пригодится, но не для качественной таймлапс-съёмки.

Посмотрим на мою камеру, код и результаты.

Камера автора на ArduCam

Моя камера на ArduCam

В камере использованы следующие компоненты:

  • Arduino Uno Rev. 3
  • Плата-шилд ArduCam Rev. B
  • Модуль камеры OV2640
  • Карта microSD на 2 ГБ
  • 4 батарейки AA

Сборка элементарная: всё просто соединяется вместе. Собрать камеру можно меньше чем за минуту.

Учтите: плату ArduCam можно заставить работать с Arduino Mega, но придётся переделать соединения, поскольку распиновка не совсем совпадает. Энергоэффективность можно было бы немного повысить понижающим DC-DC-преобразователем, но я отказался от этого: даже при большей энергоэффективности разрешение снимков было неприемлемым.

Снимок камерой OV2640 из окна офиса Google в Сиэтле.

Первая версия кода просто делала снимок, ждала минуту с помощью delay и снимала снова — пока не сядут батарейки. Так удалось сделать 364 растровых снимка. Вторая версия кода с помощью библиотеки Sleep_n0m1 переводила Arduino в спящий режим и будила каждую минуту. Я надеялся, что это заметно продлит работу от батареек, но камера успела сделать лишь 370 снимков.

Снимки я собрал в видео командой avconv в Linux:

avconv -f image2 -i %08d.BMP output.avi

В целом опыт был познавательным, но ясно: если нужна по-настоящему долговременная и достаточно качественная таймлапс-съёмка, ArduCam для этого не подойдёт.

Ещё по теме

Запросить цену

Укажите количество — пришлём коммерческое предложение.