mirror of https://github.com/OpenIPC/wiki.git
				
				
				
			
		
			
				
	
	
		
			203 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
| # 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>
 |