Wildlife camera - реализую свой давний проект


Когда я еще работал в ИТМО, то был у меня небольшой проект "смарт-камера видеонаблюдения". Хотелось на его примере показать студентам как создание прибора в комплексе, так и разработку КД для него. Тогда я нарисовал камеру, сделал пару видеолекций, а затем, через какое-то время перешел на другую работу и как-то стало не до того.

Однако, теперь у меня есть 3D принтер, роборука, которую я хотел сделать - уже собрана - там надо разбираться с программированием, что заняло несколько больше времени, чем я рассчитывал. И вот, гуляя как-то по лесу, вспомнилось мне про эту камеру и решено было ее оживить. 

Пришлось поменять пару компонентов: вместо raspberry pi я поставил то, что было под рукой - orange pi pc plus (попроще и подешевле, да и wifi уже есть на борту), и powerbank, который у меня был. В остальном, взял свою "оригинальную" конструкцию и для начала ту камеру A4Tech PK-130MJ, которую планировал исходно, и которая до сих пор у меня стоит на мониторе.

Модель есть - можно печатать. Когда делал модель, как-то не особо боролся за размер камеры и получилась она совсем не маленькая )



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

Вклеил стекло (УФ-фильтр, который был куплен в свое время ради корпуса) и PIR-sensor на прозрачный герметик.

 

Следующий шаг: установка камеры и powerbank.

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

На этом камера готова, можно переходить к настройке и запуску. Ради интереса взвесил - оказалось около 720 грамм.

На orange pi я накатил последнюю версию armbian booster с рабочим столом xfce. Все встало без проблем, wi-fi подключился - далее я работал через него. Для начала решил сделать простенький таймлапс с помощью fswebcam. Апельсинка подхватила вебку на /dev/video1, чтобы снять один кадр с заданным разрешением, нужно использовать команду:

$ fswebcam -d /dev/video1 -r 1280x1024 image-test.jpg

Ожидаемо получилось не супер - несмотря на разрешение 1280х1024 качество картинки оставляет желать лучшего... Однако это только первая ревизия и первый тест - на будущее у меня еще припасена камера 5 Mp на матрице OV5640 для orange pi - с ней уже должно быть интересней. 

 
Тест с таймлапсом при дневном свете - камеру просто поставил на окно. Набросал на bash небольшой скрипт, который будет вызывать fswebcam каждые десять секунд и сохранять кадр с датой и временем съемки:

#!/bin/bash

while true; do
DATE=$(date +"%Y-%m-%d_%H:%M:%S")
fswebcam -d /dev/video1 -r 1280x1024 /home/alex/webcam/img/img_$DATE.jpg
sleep 6.5
done

здесь установлено время ожидания 6,5 секунд с учетом того, что около 3,5 секунд уходит на съемку - интервал получился чуть меньше 10 секунд, но для теста вполне достаточно такой "точности".

Для того, чтобы из набора кадров сделать видео, можно воспользоваться ffmpeg:

$ ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' video.mp4

- сборка с частотой 10 кадров в секунду.

Что получилось:

 
 
Классно - работает! Но радость от первого успешного теста мне омрачило то, что апельсинка сгорела - поиграться с камерой 5 Mp так и не получилось (((  Как и почему - расскажу в следующем посте.
 
Модель, скрипт для захвата кадров и примеры изображений можно посмотреть в GitHub этого проекта.
 
Let`s go design!

 

 



Комментарии