Настройка Softserial в Betaflight
Что такое Softserial?
Softserial («Софтсериал») — функция Betaflight, эмулирующая последовательный порт (UART) для подключения дополнительных устройств к полётному контроллеру. Она также используется для подключения инвертированного сигнала SmartPort на контроллерах F4 без аппаратной инверсии.
Для чего используется Softserial?
Softserial подходит для устройств и функций, которым требуется UART, но которые не критичны к задержкам и скорости передачи данных, например:
-
SmartAudio (управление видеопередатчиком)
-
GPS
-
SBUS
-
ESC telemetry (телеметрия регуляторов скорости)
-
Smart Port (телеметрия FrSky)
Ключевые особенности и преимущества:
-
На контроллерах с ограниченным числом UART (обычно 2–3 на F3/F4) можно переназначить неиспользуемые пины, например, LED_Strip или PPM, под softserial и подключить к ним дополнительные устройства.
-
Можно “разделить” один UART на две задачи: например, RX пин UART1 использовать для телеметрии ESC, а TX этого же порта — для SmartAudio или SmartPort через softserial. Это позволяет освободить полноценный UART для других целей.
-
Softserial поддерживает инверсию сигнала программно, что особенно полезно для подключения SmartPort на F1 и F4 контроллерах, где нет аппаратных инверторов. Это позволяет подключать SmartPort напрямую без аппаратных модификаций.
-
Softserial лучше всего использовать для однопроводных интерфейсов (например, SmartAudio, SmartPort), где требуется только TX или RX.
Ограничения:
-
Softserial не рекомендуется использовать для скоростных или критичных к таймингу устройств.
-
В Betaflight 4.5 максимальная скорость softserial ограничена 19200 бод, и не поддерживается для MSP-соединений (например, HD OSD).
-
Одновременно можно использовать не более двух softserial портов, и скорость передачи данных на всех softserial портах должна быть одинаковой
Как настроить Softserial?
1. Включите функцию SoftSerial
-
Перейдите во вкладку Configuration (Конфигурация) в Betaflight Configurator.
-
Найдите опцию SOFTSERIAL и активируйте её (поставьте галочку).
-
Сохраните изменения и перезагрузите контроллер (Save and Reboot).
2. Назначьте пины для SoftSerial через CLI
-
Откройте вкладку CLI.
-
С помощью команды resource переназначьте свободные пины на функции SoftSerial TX и RX.
resource SOFTSERIAL_TX <номер_порта> <пин>
-
Например:
resource SERIAL_TX 11 A09
resource SERIAL_RX 11 A10
save
-
Здесь A09 и A10 — это названия свободных пинов, которые вы используете для SoftSerial (замените на свои значения).
-
После сохранения и перезагрузки в разделе Ports появится новый порт, например, SoftSerial1.
Какие пины можно использовать для Softserial?
Зависит от контроллера и таймеров пинов. Общие варианты:
- UART TX/RX
- PPM Input
- LED_Strip (в CLI —
LED_STRIP
, не путать сLED
— статусным индикатором) - Моторы 5–8 (если доступны)
Примеры использования Softserial
1. Подключение инвертированного SmartPort к F4-контроллеру
Используя Softserial, мы можем подключить SmartPort напрямую к F4 FC, не беспокоясь об инверсии сигнала.
- Подключите SmartPort к выводу TX порта UART1 (например, пин микроконтроллера A09).
- (присвоение пина A09 -> Softserial 1 в CLI):
resource SOFTSERIAL_TX 1 A09 save
- В разделе Ports должен быть уже выбран SmartPort для Softserial1 (см. выше).
- Проверьте настройки в CLI:
set tlm_halfduplex = on set tlm_inverted = off # Для инвертированного сигнала
- Перезагрузите контроллер (отключите USB и батарею).
2. Использование одного UART для SmartAudio и ESC-телеметрии
Используя контакты TX и RX одного и того же UART для двух устройств, вы можете освободить еще один UART для чего-то другого.
- RX UART1 — для телеметрии ESC, TX UART1 — для SmartAudio.
- В CLI:
resource SERIAL_TX 11 A09 # Softserial1 save
- Во вкладке Ports в Betaflight назначьте:
- UART1 → ESC,
- Softserial1 → SmartAudio.
3. Использование LED_Strip для SmartPort
Eсли у вас есть свободный пин LED_Strip на вашем FC, и вы не используете функцию LED, вы можете превратить его в порт softserial и использовать его для таких устройств, как SmartPort и SmartAudio.
- Освободите пин LED_Strip:
resource LED_STRIP 1 none resource SOFTSERIAL_TX 1 B06 # Пример: пин B06 save
- В разделе Ports выберите SmartPort для Softserial1.
Возможные ошибки
- «Index not between 1 and 10»:
- Убедитесь, что Softserial включён в настройках.
- Некоторые F1/F3-контроллеры исключают Softserial из прошивки из-за ограничений памяти.