# Управление при помощи 4G связи Мобильная связь четвертого поколения удобный инструмент для передачи и получения информации на большой скорости. В настоящее время область покрытия мобильных операторов позволяет подключаться к интернету на большой скорости практически из любой точки. > **Hint** Для передачи каких либо данных с вашего коптера на наземную станцию(QGroundControl) и обратно, вам необходимо настроить собственную VPN сеть. ## Подключение 4G модема к Raspberry Pi Подключите 4G модем с сим-картой в USB порт вашей Raspberry Pi. Обратите внимание, что при подключении, некоторые модемы распознаются в системе как сетевая карта, без каких либо дополнительных настроек. Пример 4g модема: *USB 4G Huawei E3372H* Однако, некоторые модемы, например, *Quectel EP06*, автоматически не стартуют соединение. В этом случае необходимо воспользоваться утилитами `qmi-network` и `udhcpc`. Установить эти утилиты можно командой: ```bash sudo apt install libqmi-utils udhcpc ``` Далее запустить соединение с интернетом следующими командами: ```bash sudo ip link set wwan0 down echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip sudo ip link set wwan0 up sudo qmi-network /dev/cdc-wdm0 start sudo udhcpc -q -f -i wwan0 ``` Более подробно прочитать про настройку сетевого подключения вы можете в [этой статье](https://docs.sixfab.com/page/setting-up-a-data-connection-over-qmi-interface-using-libqmi). > **Hint** Проверить наличие соединения с интернетом можно командой: > ```bash > ping -I wwan0 -c 5 8.8.8.8 > ``` > **Hint** Проверить скорость соединения с интернетом можно утилитой `speedtest`: > ```bash > sudo apt install speedtest-cli > speedtest > ``` ## Подключение Raspberry Pi к VPN Сформируйте необходимые ключи VPN сети, для подключения Raspberry Pi и наземной станции. Для того, чтобы подключить Raspberry Pi к вашей сети, установите пакет `openvpn`: ```bash sudo apt-get install openvpn ``` Перенесите ваши ключи в директорию `/etc/openvpn/client`. Для удобства используйте графический SFTP интерфейс передачи данных, к примеру: WinSCP, FileZilla и т.д. Для включения режима клиента, необходимо активировать переданные вами ключи. Ключи могу быть сформированы в различных форматах, к примеру: `.ovpn`, `.conf`. Ключ или конфигурация использующийся на вашем коптере, должны быть строго в формате `.conf`. Инициализируйте сервис применяющий ваши ключи для подключения в режиме клиента: ```bash sudo systemctl enable openvpn-client@config-name ``` где `config-name` - название вашего конфигурационного файла. Если все сделано правильно, при каждом перезапуске системы, сервис-клиент будет автоматически подключаться к вашей сети. > **Hint** Перед началом работы не забудьте настроить и включить VPN подключение на вашем ПК. > **Hint** В качестве удобной альтернативы вы можете воспользоваться VPN-сервисом [ZeroTier](zerotier_vpn.md). ## Управление коптером через QGroundControl > **Hint** Для управления коптером предлагается использовать UDP протокол передачи, обеспечивающий меньшую задержку, ценой отсутствия гарантии получения пакета, что очень важно во время пилотирования коптера. Убедитесь, что ваш коптер и наземная станция подключены к вашей сети. Для этого можете воспользоваться командой `ip addr`. Результатом ее выхода будет пронумерованный список активных сетей включенных на вашем устройстве. Обратить внимание стоит на подключение с префиксом *tun* и указанным вами IP адресом, если оно присутствует в вашем списке, ваш коптер подключился к сети. В QGroundControl, аналогично [подключению по Wi-Fi](gcs_bridge.md), настройте подключение к вашему коптеру по протоколу использующемуся в вашей сети: *UDP/TCP*. Рекомендуется использовать *UDP* подключение, за счет большей скорости передачи данных. Если у вас появилась связь с коптером, подключите какой-либо джойстик к вашему ПК. Роль джойстика может выполнять как радио пульты, такие как, FlySky-i6X, Taranis x7 и т.д., так и джойстики от приставок или любые их эмуляции, которые распознаются системой. Когда джойстик распознается системой, в колонке *Vehicle Setup* появится пункт *Joystick*, в случае, если он подсвечивается красным цветом, это значит, что требуется настройка. Для калибровки джойстика, во вкладке *Joystick* нажмите кнопку *Calibrate* и следуйте инструкциям положения стиков пульта, указанных с левой стороны окна.
После успешной калибровки необходимо настроить полетные режимы. Чтобы это сделать несколько раз переключите необходимые тумблеры. В ходе переключения, вы увидите виртуальные каналы, на которых работают тумблеры. В активном положении будет подсвечиваться один из каналов. > **Info** При выборе джойстика, обратите внимание на количество рабочих каналов и на поддержку его, в QGroundControl(SDL2). Встречаются пульты поддерживающие всего 4 канала, что не удобно для такого типа управления. Если изменения положения стиков отображается в окне QGroundControl, вам остается только применить параметр, определяющий, что управление коптером происходит с помощью джойстика, а не радиоаппаратуры: `COM_RC_IN_MODE` - Joystick/No RC Checks Поскольку мобильная связь не всегда бывает стабильна, рекомендуется увеличить таймаут на потерю сигнала управления до 5 секунд. Коптер готов к полету! > **Hint** Если коптер не армится при переведении левого стика в нижний правый угол, установите состояние Arm/Disarm на один из тумблеров. ## Передача видео с камеры в QGroundControl Передача видео возможна практически с любой камеры подключенной к вашей Raspberry Pi. Для этого вам потребуется установить или [собрать](https://github.com/sfalexrog/gst-rtsp-launch) пакет *gst-rtsp-launch*: ```bash sudo apt update sudo apt install gst-rtsp-launch ``` Чтобы запустить передачу изображений, необходимо ввести соответствующую командную строку: ```bash gst-rtsp-launch "( v4l2src device=/dev/video0 ! video/x-raw,framerate=30/1,width=320,height=240 ! videoconvert ! v4l2h264enc output-io-mode=4 extra-controls=\"encode,frame_level_rate_control_enable=1,h264_profile=4,h264_level=13,video_bitrate=300000,h264_i_frame_period=5;\" ! rtph264pay name=pay0 pt=96 )" ``` Данная командная строка содержит параметры передачи видео, такие как: устройство передачи, частота кадров, высота/ширина изображения, метод кодирования и т.д. Подробнее о настройках [можно узнать тут](https://github.com/sfalexrog/gst-rtsp-launch/blob/master/README.md). > **Info** Камера Raspberry Pi `/dev/video0` может использоваться сервисом `clover` и тогда `gst-rtsp-launch` не сможет получить к ней доступ. Чтобы остановить сервис `clover` выполните команду `sudo systemctl stop clover`. Также можно пустить трансляцию с USB-камеры, для этого замените устройство передачи на `/dev/video1`. В приложении QGroundControl проверьте, что по ссылке `rtsp://192.168.11.1:8554/video` (IP-адрес вашей Raspberry Pi может отличаться) начался стрим изображения. ## Автоматизация запуска передачи видео Создайте файл и добавьте в него [командную строку](#command_line): ```bash nano script_name.sh ``` Чтобы корректно запускать файл, необходимо присвоить ему соответствующие флаги доступа. ```bash chmod a+x script_name.sh ``` Для того, чтобы передача видео запускалась каждый раз при включении системы, необходимо создать стартап-скрипт с помощью менеджера systemd. В директории `/etc/systemd/system` создайте файл `qgc_video.service`. ```bash sudo nano /etc/systemd/system/qgc_video.service ``` В файл запишите соответствующие строки: ``` [Unit] Description=VideoStream [Service] ExecStart=/bin/bash /home/pi/script_name.sh [Install] WantedBy=multi-user.target ``` Осталось только инициализировать ваш скрипт в системе и он будет запускаться при каждом ее включении. ```bash sudo systemctl enable qgc_video.service ```