16 августа 2017

BetaFlight 3.2 - управление настройками курсовой камеры с передатчика

В тестовых версиях прошивки BetaFlight-3.2 появилась одна интересная функция - управление настройками курсовой камеры стиками передатчика или с помощью LUA-скриптов с передатчиков Taranis. Функция доступна для большинства камер, где есть настройка параметров через OSD. Например Foxeer HS1177, Foxeer Arrow V3 или аналогичных. Такой функционал удобно использовать, если надо подправить настройки камеры, но нет возможности разобрать квадрик, чтобы подключить блок кнопок управления.

Для начала ознакомился с небольшим описанием. Надо использовать всего один провод с резистором на 150-600Ом, подключить его к выводу OSD на камере и к любому выводу полетного контроллера с таймером. Это могут быть свободные выводы на моторы или вывод для управления цветными светодиодами.


Подключил через резистор на 470Ом к выводу под светодиоды, так как он единственный был свободен. Необходимо переназначить выбранный вывод на управление камерой. Для этого в консоли надо посмотреть список ресурсов командой 'resource':

# resource
resource BEEPER 1 C13
resource MOTOR 1 C06
resource MOTOR 2 C07
resource MOTOR 3 C08
resource MOTOR 4 C09
resource SERVO 1 A08
resource PPM 1 A03
resource LED_STRIP 1 B06
resource SERIAL_TX 1 A09
resource SERIAL_TX 2 A02
resource SERIAL_TX 3 C10
resource SERIAL_TX 4 A00
resource SERIAL_TX 5 C12
resource SERIAL_TX 11 A15
resource SERIAL_RX 1 A10
resource SERIAL_RX 2 A03
resource SERIAL_RX 3 C11
resource SERIAL_RX 4 A01
resource SERIAL_RX 5 D02
resource LED 1 B09
resource LED 2 A14
resource SPI_SCK 1 A05
resource SPI_SCK 2 B13
resource SPI_SCK 3 B03
resource SPI_MISO 1 A06
resource SPI_MISO 2 B14
resource SPI_MISO 3 B04
resource SPI_MOSI 1 A07
resource SPI_MOSI 2 B15
resource SPI_MOSI 3 B05
resource ADC_BATT 1 C05
resource ADC_RSSI 1 B01
resource ADC_CURR 1 C04

Ага, управление светодиодами у меня висит на B06. Переназначаю:

# resource LED_STRIP 1 NONE
Resource is freed

# resource CAMERA_CONTROL B06
Resource is set to B06

Заранее надо измерить напряжение между землей и свободным выводом OSD камеры. У меня получилось 3.27 вольта. Это значение через консоль тоже надо задать:

# set camera_control_ref_voltage = 327

Не забываю сохранить командой 'save'. Вот и все! Проверяю в работе - работает!


Вот таблица положения стиков для эмуляции нажатия кнопок :


Кстати, LUA-скрипты для управления камерой можно взять здесь. Проверил у себя - работают!

Вообще, камеру можно подключить к любому свободному выводу полетного контроллера, например к любому UART-TX или UART-RX так же через резистор, и переназначить ресурсы. Но тогда придется немного повозиться с настройками. За работу управлением камеры отвечают четыре параметра:

# get camera
camera_control_mode = HARDWARE_PWM
Allowed values: HARDWARE_PWM, SOFTWARE_PWM, DAC

camera_control_ref_voltage = 330
Allowed range: 200 - 400

camera_control_key_delay = 180
Allowed range: 100 - 500

camera_control_internal_resistance = 470
Allowed range: 10 - 1000

Если подключать к UART, то параметр camera_control_mode надо установить в SOFTWARE_PWM. Не факт, что сразу заработает. Например, у меня не получилось. Надо подбирать резистор, параметры camera_control_ref_voltage и camera_control_key_delay. Может быть потребуется поставить небольшой конденсатор между управляющим проводом и общим. И все равно, не факт, что заработает - функция экспериментальная.

Кстати, можно назначить тумблер, чтобы отключать BetaFlight OSD, если оно есть, чтобы не мешало настройкам камеры.

2 комментария :

  1. В 3.2 RC4 заменили команду включения с
    rcSticks == THR_LO + YAW_CE + PIT_LO + ROL_CE
    на
    rcSticks == THR_CE + YAW_HI + PIT_CE + ROL_CE

    ОтветитьУдалить
    Ответы
    1. Ага, видел. Так даже лучше стало.

      Удалить