wiki/ru/action-camera.md

203 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# OpenIPC Wiki
[Оглавление](../README.md)
Использование OpenIPC в качестве бюджетной экшн-камеры
--------------------------------
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-helmet.webp" alt="Logo"/>
</p>
Фото и видеокамеры давно совмещают в себе несколько устройств. Так, фотоаппарат, подключенный к компьютеру может быть использовать в качестве веб-камеры. Телефон в машине может служить видеорегистратором. Поэтому идея использовать IP-камеру как экшн-камеру родилась сама собой.
Для сборки на таком модуле должны присутствовать:
* Слот под microSD карту памяти
* USB-порт под wifi адаптер
* Аудио вход/выход для микрофона и динамика
* Хороший чувствительный сенсор
### Сборка камеры
Под эти требования подходят платы нескольких производителей:
* CamHi:
* gk7205v200 + imx307
* gk7205v300 + imx335
* SMTSEC:
* gk7205v200 + imx307
* gk7205v300 + imx307
* gk7205v300 + imx335
5 мегапиксельный сенсор imx335 позволит, при дальнейшей обработке видео, использовать цифровую стабилизацию.
В качестве корпуса хорошо подходят "шары", т.к. они имеют минимальный размер и обтекаемую форму. Пластмассовые имеют малый вес, но обладают множеством вентиляционный отверстий, поэтому использовать их в дождливую погоду или рядом с источником брызг не получится. Металлические тяжелее, но обладают герметичностью. Интересно выглядит распределительная коробка 50х50, которую можно сдвоить и получить кубик.
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-housing-front.webp" alt="Корпуса вид спереди"/>
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-housing-side.webp" alt="Корпуса вид сбоку"/>
</p>
Для запуска камеры, ей необходимо подать как минимум 4В, поэтому прямое питания от одного литиевого аккумулятора невозможно. Нужно воспользоваться любыми повышающим преобразователем напряжения, например, MT3608, настроенным на 5В и выше. Также понадобится модуль зарядки аккумуляторов, подходящий вариант TP4056.
Для индикации работы служит двухвыводной двухцветный светодиод, подключенный через токоограничительный резистор в разъём ирката. Сопротивления резистора подбирается исходя из необходимой яркости и настроенного напряжения на повышающем модуле.
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-inside.webp" alt="Вид изнутри"/>
</p>
Аккумуляторы подбираются подходящие по размеру. Хорошо подходят:
* квадратные от мобильных телефонов
* круглые от электронных сигарет
* небольшие пакеты от различных электронных устройств
Аккумулятора ёмкостью 3Ач с платой gk7205v200 + imx307 хватает приблизительно на 4 часа работы.
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-battery.webp" alt="Аккумуляторы"/>
</p>
Не забываем подключить микрофон. Для уменьшения наводок, желательно использовать экранированный провод. Вес камеры в пластмассовом корпусе составляет около 100 грамм. Крепление можно прикрутить непосредственно к корпусу или через стандартную для фототехникигайку 1/4".
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-mount.webp" alt="Крепление"/>
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-weight.webp" alt="Вес"/>
</p>
### Настройка камеры
Отключаем задержку u-boot'а:
`fw_setenv bootdelay 0`
Отключаем запуск неиспользуемых служб, замедляющих работу:
**Внимание! Доступ по сети станет не возможен!**
```
cd /etc/init.d
chmod -x S40network S49ntpd S50dropbear S50httpd S50snmpd S50telnet S60crond S92motion S93telegrambot
```
И создаём новую `S94actioncam`:
```
#!/bin/sh
mount | grep mmc || exit
cd /mnt/mmcblk0p1
number=`ls -dl */ | wc -l`
number=$((number+1))
mkdir $number
mv *.mp4 $number/
```
И `S96led`:
```
#!/bin/sh
/usr/bin/led_blink &
```
Файл `/usr/bin/led_blink`:
```
#!/bin/sh
gpio_0=14
gpio_1=15
# pin_mux
echo "$gpio_0" >/sys/class/gpio/unexport
echo "$gpio_1" >/sys/class/gpio/unexport
echo "$gpio_0" >/sys/class/gpio/export
echo "$gpio_1" >/sys/class/gpio/export
# dir
echo "out" >/sys/class/gpio/gpio$gpio_0/direction
echo "out" >/sys/class/gpio/gpio$gpio_1/direction
while true
do
sleep 1
echo "0" >/sys/class/gpio/gpio$gpio_0/value
echo "0" >/sys/class/gpio/gpio$gpio_1/value
sleep 1
echo "0" >/sys/class/gpio/gpio$gpio_0/value
echo "1" >/sys/class/gpio/gpio$gpio_1/value
done
```
Не забываем сделать все файлы исполняемыми:
```
chmod +x S94actioncam S96led
chmod +x /usr/bin/led_blink
```
`gpio_0` и `gpio_1` устанавливаются в соответствии с выбранной платой. При включении питания, будет загораться жёлтый светодиод, после старта стримера, он меняет цвет на зелёный и продолжает мигать с периодичностью в 1 секунду. Время загрузки составляет около 10 секунд.
Эти же gpio прописываем в yaml'е:
```
cli -s .nightMode.irCutPin1 14
cli -s .nightMode.irCutPin2 15
```
Включаем запись звука:
```
cli -s .audio.enabled true
cli -s .audio.srate 24000
cli -s .audio.codec aac
```
Вставьте флэш-карточку в камеру и посмотрите, куда она смонтировалась:
```
mount | grep mnt
```
Этот путь нужно указать в настройках стримера:
```
cli -s .records.enabled true
cli -s .records.path /mnt/mmcblk0p1/%Y-%m-%d-%H.mp4
```
Теперь, после загрузки камеры, старые видео будут перемещаться в новую папку, а последний видеоролик лежать в корне флэшки.
### Известные проблемы
Флэшку лучше использовать быструю, т.к. на динамично изменяющихся сценах возрастает битрейт видео, и может произойти выпадение кадров до нескольких секунд вместе с аудио.
Каждый ролик начинается с нескольких секунд статичного кадра. Это связано с автонастройкой сенсора стримером.
Т.к. запись видео прерывается некорректно, то некоторые файлы на компьютере могут открываться с большой задержкой.
### Улучшения
* wifi для копирования записанных видеороликов и настройки
* usb mass storage для копирования записанных видеороликов
* динамик для оповещения о разряде и других событий сигналом или голосом
* RGB светодиод для индикации работы
* управление питанием по кнопке для корректной записи последнего закодированного блока на флешку
* система питания на основе AXP173 (AXP176) для контроля за разрядом батареи
* использования "двуглазых" плат с различными объективами
* RTC для корректного наименования файлов
* GPS для записи координат съёмки (в метаданные или субтитры)
* гироскоп для стабилизации видео
* дисплей с тачскрином/джойстиком для настроек
* PQTools для настройки качества изображения
<p align="center">
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-box-1.webp" width="25%" alt="Куб 1"/>
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-box-3.webp" width="25%" alt="Куб 3"/>
<img src="https://github.com/OpenIPC/wiki/blob/master/images/actioncam-box-2.webp" width="25%" alt="Куб 2"/>
</p>