Руководство: как использовать Betaflight SoftSerial

Softserial расшифровывается как «Software Serial», что означает программную эмуляцию последовательного порта (UART, COM), который нужен для подключения дополнительных устройств к полетному контроллеру, это также хорошее решение на случай, если нет неинвертированного сигнала SmartPort на контроллерах с F4.

Для чего можно использовать SoftSerial?

Устройства и функции, для которых нужен UART:

  • SmartAudio
  • GPS
  • SBUS
  • ESC Telemetry — телеметрия для регуляторов скорости
  • SmartPort телеметрия

На полетных контроллерах число последовательных портов ограничено (всего 3 штуки на платах с F3/F4), но можно настроить неиспользуемые контакты типа LED_Strip или PPM для работы в режиме SoftSerial и подключить к ним доп. устройства.

Вы можете даже «разделить» один UART на 2 функции. Например, если RX порта UART1 используется для телеметрии регулей, то TX этого же порта можно использовать для SmartAudio или для SmartPort, если настроить SoftSerial. В этом случае целый порт освобождается для чего-либо еще.

О, я не упомянул, что SoftSerial можно использовать с инвертированными сигналами? Это очень полезно на платах с F1 и F4, потому что на них нет встроенных инверторов сигнала. При использовании Softserial можно подключать SmartPort прямо к полетному контроллеру, безо всяких хаков связанных с инверсией сигнала.

Ограничения, связанные с использованием SoftSerial

Нет ничего идеального, при использовании SoftSerial появляются некоторые ограничения:

  • SoftSerial не подходит для задач, которые требуют частого обмена большим объемом информации, например OSD или SerialRX
  • SoftSerial потребляет много процессорного времени:
    • на ПК с F1 не получится включить SoftSerial в Betaflight, просто не хватит ресурсов проца
    • возможно не лучший вариант и на платах с F3, особенно если вы хотите сократить время цикла (looptime), и использовать некоторые другие ресурсоёмкие функции
    • на некоторых ПК, softSerial отключен в официальных прошивках, но его можно включить в кастомной прошивке
  • Можно включить всего 2 SoftSerial одновременно

Как настроить и использовать Soft Serial?

Проще всего продемонстрировать это на примерах. Но в вкратце, всего 2 шага:

  • Включить SoftSerial feature
  • Назначить SoftSerial TX|RX на свободные порты при помощи Betaflight Resource Remapping

Руководство по использованию Resource Remapping.

После перезагрузки ПК увидите новый последовательный порт — SoftSerial.

softserial-smartport-port-tab

Какие контакты я смогу использовать для SoftSerial?

Все зависит от полетного контроллера, у каждого из них для этого доступны немного разные порты, конкретные рекомендации можно найти тут: https://github.com/betaflight/betaflight/wiki/Single-Wire-Software-Serial

В общем и целом, вы сможете использовать следующие пины в большинстве случаев:

  • UART TX & RX
  • PPM Input
  • LED strip — светодиоды
  • Выходы на моторы: 5, 6, 7 и 8 (если они есть)

Если встретились какие-то проблемы или вопросы технического плана, то в первую очередь нужно связаться с производителем ПК.

Примеры использования SoftSerial

Вот несколько типичных примеров использования. Во всех примерах я использую ПК Betaflight F4, но большинство шагов и примеров подойдет и для других полетников.

Подключаем «инвертированный» SmartPort к полетному контроллеру на F4

При использовании Softserial, можно подключать SmartPort к ПК на F4 без необходимости инвертировать сигнал.

В этом примере мы подключим TX порта UART1.

inverted-smartport-f4-flight-controller-fc-softserial

В консоли (CLI) наберите «resource» и найдите TX1, который на самом деле является портом A09 (на вашем ПК это может быть другой порт).

uart1-tx-serial-resource-betaflight-cli-f4-fc

Давайте назначим A09 на SoftSerial 1, для этого наберем:

resource SERIAL_TX 11 A09
save

Замечу, что нумерация портов SoftSerial начинается с 11, т.е. SoftSerial 1 — это 11, а SoftSerial 2 — это 12.

Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «SmartPort» в столбце «Telemetry Output»

softserial-smartport-port-tab

Все должно работать! Если нет, тогда идем в консоль и убеждаемся, что:

set tlm_halfduplex = on
set tlm_inverted = off

Для инвертированного сигнала SPort нужно выбрать “tlm_inverted” со значением “off”, для неинвертированного должно быть «on». Если запутались, попробуйте оба значения.

После этих изменений нужно отключить питание полетного контроллера (выдернуть USB разъем) и включить снова. Иногда для включения SoftSerial перезагрузки недостаточно, приходится передергивать питание.

«Делим» один UART между SmartAudio и телеметрией регуляторов

Использование контактов TX и RX одного порта для двух устройств позволяет освободить целый порт для чего-нибудь другого.

Например, вы можете повесить телеметрию регулей на RX UART1 и настроить TX UART1 как SoftSerial для работы SmartAudio.

esc-telemetry-flight-controller-fc-smartaudio-connection-same-uart-soft-serial

В консоли набираем «resource» и находим контакт для TX1, в нашем случае это A09.

uart1-tx-serial-resource-betaflight-cli-f4-fc

Назначаем A09 на SoftSerial 1

resource SERIAL_TX 11 A09
save

Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «ESC» для UART1 и SmartAudio для SoftSerial1.

Возможно потребуется перезагрузить ПК, выдернув USB кабель и аккумулятор, и затем подключить все обратно.

softserial-smartaudio-esc-telemetry-port-tab

Недостаточно последовательных портов? Давайте использовать LED_Strip для SmartPort

Если на вашем ПК имеется контакт LED_Strip и вы не подключили светодиоды, тогда можно превратить этот контакт в порт SoftSerial и использовать его для SmartPort или SmartAudio.

led-strip-resource-remap-softserial-smartport

В консоли набираем «resource» и видим, что LED_Strip — это B06.

led-strip-resource-betaflight-cli-f4-fc

Назначаем B06 на SoftSerial 1, для этого вводим:

resource LED_STRIP 1 none
resource SERIAL_TX 11 B06
save

Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «SmartPort» в столбце «Telemetry Output».

softserial-smartport-port-tab

Если что-то не работает, см советы в первом примере.

Руководство: как использовать Betaflight SoftSerial: 2 комментария

  1. the13

    Откуда вы узнаёте что TX1 пин это UART 1
    ???
    где это описано и подписано ?
    и как это определить?

Добавить комментарий для Новиков Александр Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.