Softserial расшифровывается как «Software Serial», что означает программную эмуляцию последовательного порта (UART, COM), который нужен для подключения дополнительных устройств к полетному контроллеру, это также хорошее решение на случай, если нет неинвертированного сигнала SmartPort на контроллерах с F4.
Оригинал: Tutorial: How to use Betaflight Softserial
Для чего можно использовать 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?
Все зависит от полетного контроллера, у каждого из них для этого доступны немного разные порты, конкретные рекомендации можно найти тут: 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.
В консоли (CLI) наберите «resource» и найдите TX1, который на самом деле является портом A09 (на вашем ПК это может быть другой порт).
Давайте назначим A09 на SoftSerial 1, для этого наберем:
resource SERIAL_TX 11 A09 save
Замечу, что нумерация портов SoftSerial начинается с 11, т.е. SoftSerial 1 — это 11, а SoftSerial 2 — это 12.
Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «SmartPort» в столбце «Telemetry Output»
Все должно работать! Если нет, тогда идем в консоль и убеждаемся, что:
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.
В консоли набираем «resource» и находим контакт для TX1, в нашем случае это A09.
Назначаем A09 на SoftSerial 1
resource SERIAL_TX 11 A09 save
Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «ESC» для UART1 и SmartAudio для SoftSerial1.
Возможно потребуется перезагрузить ПК, выдернув USB кабель и аккумулятор, и затем подключить все обратно.
Недостаточно последовательных портов? Давайте использовать LED_Strip для SmartPort
Если на вашем ПК имеется контакт LED_Strip и вы не подключили светодиоды, тогда можно превратить этот контакт в порт SoftSerial и использовать его для SmartPort или SmartAudio.
В консоли набираем «resource» и видим, что LED_Strip — это B06.
Назначаем B06 на SoftSerial 1, для этого вводим:
resource LED_STRIP 1 none resource SERIAL_TX 11 B06 save
Включаем фичу «SoftSerial» в Betaflight, теперь вы должны увидеть SoftSerial1 на закладке Ports. Выбираем «SmartPort» в столбце «Telemetry Output».
Если что-то не работает, см советы в первом примере.
Откуда вы узнаёте что TX1 пин это UART 1
???
где это описано и подписано ?
и как это определить?
TX1/RX1 — это UART1, TX2/RX2 — UART2, и т.д.