---
# System prepended metadata

title: Интерфейс взаимодействия с модулем

---

# Интерфейс взаимодействия с модулем

Для взаимодействия с модулями "ГеоСкан Пионер" используются два подхода:
 - Обработка данных с пинов/UART (LUA)
 - Передача данных на другое устройство (pioneer_sdk)

## LUA
Для взаимодействия модуля с LUA-скриптом, обработка изображений внутри LUA-скрипта не целесообразна, поэтому требуется реализация логики обработки изображений на самом модуле (так, например, реализован модуль [Камера OpenMV](https://docs.geoscan.aero/ru/master/module/openMV.html))

В этом случае требуется добавить в модуль дополнительный контроллер (В случае с OpenMV использовался STM32) - Цена увеличится примерно на 65 долларов

Схема взаимодействия Пионера с модулем:
```mermaid
sequenceDiagram
    participant P as Пионер
    participant M as Контроллер модуля
    participant C as Камера
    
    P->>M: Запрос проверки
    activate M
    C-->>M: Изображение
    Note over M: Обработка изображения и показаний с датчиков
    M-->>P: Результат проверки
    deactivate M
```

## pioneer_sdk
```python
class Pioneer:
    def __init__(self, pioneer_ip='192.168.4.1', pioneer_video_port=8888, pioneer_video_control_port=8888,
                 pioneer_mavlink_port=8001, logger=True):
...
        video_control_address = (pioneer_ip, pioneer_video_control_port)
        self.__video_control_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.__video_control_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.__video_control_socket.settimeout(5)
        self.__video_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.__video_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.__video_socket.settimeout(5)
...
```

pioneer_sdk использует сокеты для получения изображения с ЛА. Для взаимодействия с камерами модуля требуется расширение базового класса и модификация прошивки Пионера

Схема взаимодействия Пионера с модулем:
```mermaid
sequenceDiagram
    participant C as Компьютер
    participant P as Пионер
    participant M as Контроллер модуля
    
    
    C->>P: Запрос данных
    activate P
    M-->>P: Данные
    P-->>C: Данные
    deactivate P
    Note over C: Обработка данных
```