mirror of https://github.com/OpenIPC/wiki.git
Add action camera page
parent
027913033c
commit
530d160600
|
@ -0,0 +1,200 @@
|
||||||
|
# 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" alt="Куб 1"/>
|
||||||
|
</p>
|
Loading…
Reference in New Issue