Basic RU information about FPV project (#38)

* Create fpv.md

* Update index.md

* Update fpv.md

* Update fpv.md

* Update fpv.md
pull/39/head
Dmitry Ilyin 2022-07-20 18:21:28 +03:00 committed by GitHub
parent a6d2c02af6
commit 2ba7adf1dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 84 additions and 0 deletions

View File

@ -91,6 +91,7 @@ In Russian
- [Темы для дискуссий разработчиков](ru/discussion.md)
- [Программный переход с openipc-1.0 (OpenWrt) на openipc-2.x (Buildroot)](ru/upgrade-from-1.md)
- [Вопросы и ответы](ru/faq.md)
- [Использование для FPV](ru/fpv.md)
- [Хочу помочь!](ru/contribute.md)
### Помощь

83
ru/fpv.md 100644
View File

@ -0,0 +1,83 @@
## Использование OpenIPC как бюджетного видеолинка для FPV систем
Классический сетап в проекте [OpenHD](https://openhdfpv.org/) (и других похожих проектов) состоит из MIPI- или USB- камеры, подключенной к Raspberry Pi и Jetson Nano, которые выступают видеоэнкодером и роутером воздушной системы и в свою очередь соединены с WiFi адаптером по USB и с полетным контроллером по UART. Наземная станция обычно состоит и такого же WiFi адаптера, роутера и высококонтрастного монитора.
Иногда MIPI- или USB- камера меняется на IP-камеру, которая и мощнее (имеет свой собственный аппаратный энкодер) и стоит дешевле при аналогичных характеристиках. Большинство современных видеокамер являются типовыми embedded устройствами с Linux на борту (но значительно скромнее в размерах RAM и флеш памяти по сравнению с Raspberry и Jetson), что позволяет компилировать и запускать на них практически любое переносимое ПО.
В процессе работы с данной технологией возникла идея об упрощении полетной системы и переноса всего необходимого ПО непосредственно на IP-камеру.
### Преимущества
* Снижается стоимость системы (IP камера с поддержкой H.265 против аналога на Jetson Nano с MIPI камерой)
* Снижается общее потребление и увеличивается надежность системы за счет упрощения схемы
* Снижается задержка передачи видео: на наших Glass-to-Glass тестах мы получали для 1080p@60 задержку около 80ms (на среднебюджетных камерах), и для 720p@30 около 130 ms и 1080p@30 около 150 ms (для самых бюджетных камер)
* Появляется возможность тюнинга аппаратного энкодера (специфика сильно зависит от вендора IP камеры)
* Сообществом накоплен огромный опыт [ремонта IP камер](https://t.me/ExIPCam), что позволяет еще более удешевить стоимость эксплуатации системы
### Недостатки
* Из-за ограниченных ресурсов (установленной оперативной и постоянной памяти) большинство модных языков программирования (таких как Java, Python, NodeJS) камера не потянет. Если любите писать на этих языках (или хотите портировать ПО, написанное на этих языках на камеру), то придется искать решения.
Замена флеш памяти на более емкую принесет радость в дом Golang и Rust разработчиков.
* Придется немного паять, чтобы доработать до ума сверхбюджетные платы, но уверен, что в мире FPV этого никого не испугать
* В большинстве систем версия ядра Linux ограничена вендором IP камеры из-за того, что часть модулей поставляются в бинарном виде. Доработка драйверов ядра новых WiFi адаптеров или специфической периферии может потребовать значительного времени.
### Ингредиенты
* IP-камера. Учитывая популярность среди FPV сообщества модели [VEYE 307](http://www.veye.cc/en/product/cs-mipi-imx307/), мы рекомендуем приобрести плату IVG-G2S IP камеры производства компании XiongMai с точно таким же сенсором IMX307, но [по более приятной цене](https://aliexpress.com/item/1005003386137528.html) (или еще [более приятной](https://item.taobao.com/item.htm?id=660122799616), если есть возможность покупки на Taobao, например, [через посредника](https://www.youcanbuy.ru/)). При заказе платы укажите, фокусное расстояние объектива, который установит продавец под ваш заказ (больше фокусное расстояние - больше увеличение, но меньше угол обзора).
В дальнейшем объектив можно поменять на другой с такой же резьбой, либо сразу купить несколько моделей на выбор (стандартом в мире видеонаблюдения считается 3.6мм).
Плата IP-камеры питается от 12V (фактически достаточно 5V, если не использовать ее как видеокамеру вместе с подсветкой) и для начальных тестов желательно взять сразу совмещенный кабель питание-Ethernet, который бывает двух типов: 12V с подключением питания через джек и активный PoE 48V (выбирайте в зависимости от возможностей вашего сетевого коммутатора).
* WiFi адаптер. Крайне рекомендуется с обоих сторон линка использовать одинаковые адаптеры (более того, брать их из одной партии парами).
* Программатор SPI NOR для флеш памяти. В принципе можно обойтись без него средствами проекта [burn](https://github.com/OpenIPC/burn), который позволяет заливать систему в пустой/убитый флеш.
### Установка на камеру
* Подключите кабель к камере и проверьте, что она работает (IP адрес по-умолчанию 192.168.1.10, ссылка для VLC `"rtsp://192.168.1.10/user=admin&password=&channel=0&stream=0"`). Припаяйте трехпроводной разъем UART к свободным площадкам на плате камеры, подключите UART-USB адаптер к компьютеру и проверьте, что при включении камеры идет вывод данных и вы можете прервать загрузку через `Ctrl-C` (работают обе RX и TX линии).
* Выключите камеру, отпаяйте оригинальную 8 мегабайтную SPI NOR флеш микросхему и сделайте на всякий случай ее дамп с помощью программатора.
* Залейте [U-Boot](https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-gk7205v200-universal.bin) в новую 16 мегабайтную флеш (в начало памяти) и припаяйте его на плату. Проверьте, что U-Boot запускается и вы попадаете в строку приглашения.
* На рабочей станции установите TFTP сервер, скачайте и распакуйте в каталог [архив](https://github.com/OpenIPC/firmware/releases/download/latest/openipc.gk7205v200-fpv-br.tgz) с FPV прошивкой
* Дайте команды в U-Boot (где `192.168.1.17` - это ваш TFTP сервер, а `192.168.1.33` временно присвоенный адрес камере):
```
setenv ipaddr 192.168.1.33; setenv serverip 192.168.1.17; saveenv
run setnor16m
#
run uknor16m; run urnor16m
```
* После загрузки системы, проверьте, что она получила IP адрес через Ethernet (на нее можно зайти по SSH через root@IP без пароля) и камера все еще отдает видео по RTSP протоколу
* Припаяйте к USB площадкам GND, DP и DM (USB 5V питание подключать к плате не нужно из-за высокого потребления энергии адаптером), а также отдельно 5V и GND для питания WiFi адаптера (возможно через дополнительный DC-DC преобразователь в зависимости от вашей схемы).
* Проверьте, что после загрузки через команду `lsusb` появилось новое устройство
### Проверка работы наземной станции (на десктопе)
* Подключите второй адаптер к десктопу и скомпилируйте драйвер, который работает в режиме мониторинга (см. соответствующую документацию проекта) и при необходимости загрузите его через `insmod`
* Активируйте интерфейс (в данном примере `wlan0` и укажите канал (в данном примере `169`):
```
sudo ip link set wlan0 down
sudo iw wlan0 set monitor control
sudo iwconfig wlan0 channel 169
sudo ip link set wlan0 up
```
* Скомпилируйте из исходного кода [WFB-ng](https://github.com/svpcom/wifibroadcast), скопируйте ключ `gs.key` с IP-камеры и запустите прием `sudo ./wfb_rx -p 3 -u 5600 -K gs.key wlan0`
* Проверьте, что в консоли вывод
```
32168228 PKT 0:0:0:0:0:0
32169229 PKT 0:0:0:0:0:0
32170230 PKT 0:0:0:0:0:0
32171231 PKT 0:0:0:0:0:0
32172232 PKT 0:0:0:0:0:0
32173233 PKT 0:0:0:0:0:0
```
сменится на
```
32178236 ANT 1 282:-54:-52:-50
32178236 ANT 0 282:-48:-46:-44
32178236 PKT 283:0:283:2:0:0
32179236 ANT 1 244:-54:-52:-50
32179236 ANT 0 244:-48:-45:-44
32179236 PKT 245:0:245:0:0:0
32180236 ANT 1 250:-54:-52:-50
32180236 ANT 0 250:-48:-45:-44
```
* Запустите Gstreamer `gst-launch-1.0 -vvv udpsrc port=5600 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph264depay ! h265parse ! queue ! avdec_h265 ! autovideosink sync=false -e` и проверьте качество изображения