# Интерфейс взаимодействия с модулем
Для взаимодействия с модулями "ГеоСкан Пионер" используются два подхода:
- Обработка данных с пинов/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: Обработка данных
```