Организация связи с БПЛА через мобильную сеть - DRONE520/DRONE520-main GitHub Wiki

Цель:

  • Обеспечение подключения БПЛА к мобильной сети, через микроконтролер-компаньон NanoPi Neo.

Применяемое оборудование

Состав:

4G Модем "Huawei"

NanoPi NEO (ОП Ubuntu 16.04.2 LTS)

Pixhawk 4

Провод подключения NanoPi NEO к Pixhawk 4

Схема подключения NanoPi NEO к Pixhawk 4

Подключаем один конец провода к пинам NanoPi NEO:

  • 1 -> Отвечающим за питание - постоянное напряжение 5v
  • 2 -> Земля (Gnd)
  • 3 -> Uart1 - (TX)
  • 4 -> Uart1 - (RX)
  • 7 -> Uart1 - (RTS)
  • 8 -> Uart1 - (CTS)

Другой конец провода подключаем к разъему TELEM2 у Pixhawk 4 Advanced Flight Controller.

  • 1 -> Отвечающим за питание - постоянное напряжение 5v
  • 2 -> Uart1 - (RX)
  • 3 -> Uart1 - (TX)
  • 4 -> Uart1 - (RTS)
  • 5 -> Uart1 - (CTS)
  • 6 -> Земля (Gnd)

Описание взаимодействия компонентов

Подключение к NanoPi

Перед началом использования NanoPi NEO необходимо подготовить:

  • NanoPi NEO;
  • Карта памяти microSD / TFCard: класс 10 или выше, минимум 8 ГБ SDHC;
  • Кабель питания microUSB. Важно обеспечить питание 5В / 2А;
  • Хост-компьютер под управлением 64-разрядной системы Ubuntu.

Синие линии на схеме подключение (рис 2) обозначают USB провода, которые вставляются в USB порты на каждом соответствующем устройстве. Модем вставляется в NanoPi Neo напрямую. При включении питания на модеме должно загореться два LED-индикатора: PWR и NET.

Настройка модема

В данной работе использовались два модем: Huawei e3372, MegaFom M150-4. Первый модем удалось успешно подключить к Windows, но, к сожалению, для работы с Ubuntu он нуждается в перепрошивки, но стоит рассмотреть работу с ним, так как данный алгоритм можно использовать для подключения других модемов (например Huawei e172). [6] Для того, чтобы контролировать режимы модема, нужно подгрузить следущие библиотеки:

minicom, • usb_modeswitch, • NetworkManager(NM), • ModemManager

Первая библиотека, для работы с USB устройствами уже подгружена, поэтому остаётся установить только остальные: они нужны для работы непосредственно с модемом и чтобы изменять его конфигурации. [6] С помощью команды usb-devices можно узнать адресс модема, сообщение в консоли будет выглядеть следующим образом:

  • T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 8 Spd=480 MxCh= 0
  • D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
  • P: Vendor=12d1 ProdID=1f01 Rev=01.02
  • S: Manufacturer=HUAWEI_MOBILE
  • S: Product=HUAWEI_MOBILE
  • S: SerialNumber=0123456789ABCDEF
  • C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=2mA
  • I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

Так же, с помощью USB description data (for identification) можно узнатьболее конкретный номер модели:

Manufacturer: HUAWEI_MOBILE Product: HUAWEI_MOBILE Serial No.: 0123456789ABCDEF

Чтобы добиться подключению к мобильной сети, нужно переключится от массового хранения в сетевой режим, для это в файле "/etc/usb_modeswitch.conf" нужно добавить следущее: TargetVendor=0x12d1 TargetProductList="14db,14dc" HuaweiNewMode=1 NoDriverLoading=1 Затем выполнить команду по переключению режима: sudo usb_modeswitch -v 12d1 -p 1f01 -c /etc/usb_modeswitch.conf - J Модификатор "- J" даёт команду перейти в режим модема, появляется следующее сообщение, где стоит обратить внимание на последние строчки:

  • Look for default devices ...

  • product ID matched

  • Found devices in default mode (1)

  • Access device 004 on bus 004

  • Current configuration number is 1

  • Use interface number 0

  • Use endpoints 0x01 (out) and 0x81 (in)

  • USB description data (for identification)

  • Manufacturer: HUAWEI_MOBILE

  •  Product: HUAWEI_MOBILE
    
  • Serial No.: 0123456789ABCDEF

  • Using standard Huawei switching message

  • Looking for active driver ...

  • OK, driver detached

  • Set up interface 0

  • Use endpoint 0x01 for message sending ...

  • Trying to send message 1 to endpoint 0x01 ...

  • OK, message successfully sent

  • Reset response endpoint 0x81

  • Could not reset endpoint (probably harmless): -99

  • Reset message endpoint 0x01

  • Could not reset endpoint (probably harmless): -4

  • Device is gone, skip any further commands

  • -> Run lsusb to note any changes. Bye!

Обратим внимания на эту строчку «Could not reset endpoint (probably harmless): -99». Чтобы устранить возникшую ошибку, нужно в файле "/etc/usb_modeswitch.conf" прописать следущую команду:

MessageContent="55534243123456780000000000000011062000000101000000000000000000"

Теперь можно обращение к модему идёт непосредственно через файл, и можно вводить команду без модификатора -J. Она будет выглядеть следующим образом:

sudo usb_modeswitch -c /etc/usb_modeswitch.conf

  • Look for default devices ...

  • product ID matched

  • Found devices in default mode (1)

  • Access device 004 on bus 004

  • Current configuration number is 1

  • Use interface number 0

  • Use endpoints 0x01 (out) and 0x81 (in)

  • USB description data (for identification)


  • Manufacturer: HUAWEI_MOBILE

  •  Product: HUAWEI_MOBILE
    
  • Serial No.: 0123456789ABCDEF


  • Looking for active driver ...

  • OK, driver detached

  • Set up interface 0

  • Use endpoint 0x01 for message sending ...

  • Trying to send message 1 to endpoint 0x01 ...

  • OK, message successfully sent

  • Reset response endpoint 0x81

  • Reset message endpoint 0x01

  • -> Run lsusb to note any changes. Bye!

В этом случае команда пройдёт без ошибок, что означает, что модем теперь находится стабильно в одном режиме. Но модем модели Huawei e3372 всё равно система видит, что он в режиме диска, так как внутренние драйвера, установленные по умолчанию, не предназначены для работы с операционной системой, установленной на NanoPi Neo (Ubuntu 16.04).

Теперь рассмотрим, как получить сетевой интерфейс. Аналогичные процедуры были проведены для модемов Huawei e3372 и MegaFom M150-4.

Для подключения к модему с помощью minicom можно использовать файлы устройств /dev/ttyUSB4 или /dev/ttyS3. Это делается с помощью следующей команды:

-sudo minicom -D /dev/ttyUSB4

Для выхода в сеть удобно использовать утилиту qmcli. Для начала необходимо установить пакеты: • sudo apt-get update • sudo apt-get install libqmi-utils udhcpc

Радио-модуль модема по умолчанию выключен. Его можно включить с помощью следующих команд:

-sudo qmicli -d /dev/cdc-wdm0 -dms-set-operating-mode='online'

Индикатор NET на модеме должен начать мигать. Это значит, что модем перешел в режим поиска и подключения к GSM-сети. Необходимо проверить, что сеть найдена, и уровень сигнала не слишком низкий:

• sudo qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode • sudo qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength • sudo qmicli -d /dev/cdc-wdm0 --nas-get-home-network

Драйвер qmi-wwan, увидев подключение модема к NanoPi NEO, создает сетевой интерфейс etch1. По умолчанию, в качестве протокола на этом интерфейсе установлен 802-3, однако нужный нам протокол — это, по-видимому, raw-ip. Сделаем это изменение:[3]

• sudo qmicli -d /dev/cdc-wdm0 -w # проверим имя сетевого интерфейса, обычно это wwan0 • sudo ip link set etch1 down • echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip • sudo ip link set wwan0 up

Теперь соединяемся с 3G-сетью. Параметры для APN можно узнать на странице GSM-провайдера.[2]

• sudo qmicli -p -d /dev/cdc-wdm0 --device-open-net='net-raw-ip|net-no-qos-header' --wds-start-- network="apn='<YOUR_APN>',username='<YOUR_USERNAME>',password='<YOUR_PASSWORD>',ip-type=4" --client-no-release-cid

Например, в случае Мегафон: apn='internet',username='gdata',password='gdata'

И наконец, получаем IP-адрес с помощью команды: sudo udhcpc -i wwan0

С помощью команды ifconfig можно увидеть, что теперь интерфейсу уеср1 назначен определенный IP-адрес. [3]

ifconfig etch1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet 10.245.223.144 netmask 255.255.255.224 destination 10.245.223.144

С помощью команды “ping yandex.ru” можно проверить удалось ли подключить мобильную сеть. Модем «MegaFom M150-4» нуждается в дополнительной настройки через minicom.[5]

В терминале нужно выполнить команду, чтобы проверить устройство: ls /dev/ttyU*

Далее запускаем minicom командой:

minicom -s

Это запуск в режиме настройки. В этом режиме нужно, в настройках последовательного порта, указать устройство /dev/ttyUSB4. Затем сохранить настройки как dfl и выйти из режима настройки.

Затем, уже в терминальном режиме можно работать с модемом. Первым делом проверить подключение к модему командой[5] ATi

Далее проверяем текущий режим подключения: AT^QCNCFG?

Ответ будет: "00" или другая цифра - 01, 02, 03.

Если в выводе будет цифра 03, тогда режим подключения уже выставлен в 4G (LTE) и причина низкой скорости другая. А вот в случае цифр 00 или 01, можно будет переключить модем в режим 4G (LTE).

Это делается командой: AT^QCNCFG=03


Выводы

Оба модема были успешно подключены к nano-pi, но доступ к мобильной сети не был обеспечен. В случае с модемом Huawei e3372 это может быть из-за того, что у модема нет внутренних драйверов для работы с Ubuntu, потом что он успешно работал с Windows, но не с Linux. Чтобы решить проблему, его можно перепрошить. Модем MegaFom M150-4 нуждается в дополнительной настройки через minicom.

Литература

  1. https://habr.com/ru/post/485974/
  2. https://habr.com/ru/post/188886/
  3. https://itmaster.guru/nastrojka-interneta/routery-i-modemy/huawei-4g-modem.html
  4. https://forum.ubuntu.ru/index.php?topic=281443.0
  5. https://ru.d-ws.biz/articles/4g-megafon-m100-1-modem.shtml
  6. https://archlinux.org.ru/forum/topic/13139/
⚠️ **GitHub.com Fallback** ⚠️