Enlace para el indice
Enlace para la tienda

Cómo usar el Soft Serial de Betaflight

 

Algún friki, al leer el título del post de hoy ya ha empezado a salivar. SOFTSERIAL. Sí, definitivamente suena a software. Mi tesooooro…  Sus dedos tienen ligeros temblores por el síndrome de abstinencia y necesitan introducir código ya. Sí, esto de los tornillos y los cables y los amperios y la soldadura es de mentes inferiores. Demasiado sencillo.

Bueno, vamos a darles un poquito de gusto a todos los que necesitan para su salud mental de esas pantallas negras llenas de comandos y números y cosas raras de esas. Pero sólo un poquito, se van a quedar con las ganas porque esto es muy fácil.

Para qué se utiliza el softserial de Betaflight? Pues se puede usar por ejemplo, cuando quieres conectar algo como por ejemplo un GPS a tu dron y parece que tu FC y no tiene un sitio libre dónde poder hacerlo. En realidad el softserial de Betaflight es algo muy útil y sencillo

Soft Serial

SoftSerial es la abreviatura de software serial. Se trata de emular por medio de software una puerta serie UART para conectar dispositivos adicionales a nuestra controladora de vuelo. También es una solución para las señales invertidas en los controladores F4.

Para qué se puede usar el SoftSerial

El SoftSerial se puede usar para todo tipo de cosas que requieran una conexión UART, como por ejemplo:

  • SmartAudio
  • GPS
  • SBUS
  • Telemetría ESC
  • Smart Port

Con el número limitado de UARTs en un controlador de vuelo (sólo tres en los FC con F3), puedes utilizar pines no usados como el PPM o los LEDs como puertos SoftSerial y conectar más dispositivos.

Puedes incluso utilizar un UART para dos tareas distintas. Por ejemplo, si lo ajustas para SoftSerial, puedes usar el pin RX del UART1 para telemetría y el pin TX para SmartAudio o SmartPort. Esto te permite liberar un UART completo para otra tarea.

El SoftSerial también soporta la señal invertida a diferencia de los puertos de los controladores F1 y F4 que no tienen inversores integrados. Con el SoftSerial puedes conectar el SmartPort directamente al FC sin hacer ningún cambalache para obtener la señal no invertida del RX.

Limitaciones del SoftSerial

Nada es perfecto y hay algunas desventajas al usar SoftSerial

  • Carga añadida al ciclo del procesador. El SoftSerial no funciona bien con ciclos de procesador muy ocupados y aplicaciones “parlanchinas” que ocupan mucho tiempo de procesador, como el OSD o la entrada Serial RX.
  • El SoftSerial consume recursos del procesador e incrementa la carga de la CPU
  • Los controladores F1 no pueden correr SoftSerial con la última versión de Betaflight debido a la falta de poder de procesamiento. (Betaflight dejó de soportar a los procesadores F1 a partir de la versión 3.2).
  • Puede no ser buena idea correr SoftSerial en algunos F3 si quieres un tiempo de ciclo rápido y estás usando al mismo tiempo otras aplicaciones que consuman muchos recursos.
  • Algunos FC tienen el SoftSerial deshabilitado en el firmware con el que vienen, y es necesario cargar un firmware custom para habilitarlo.
  • Con el firmware actual hay una limitación de dos puertos SoftSerial

Cómo se configura y usa el SoftSerial?

Es más fácil explicar con ejemplos como trabajar con el SoftSerial, y lo haremos a continuación, pero para resumir, sólo hay dos pasos a la hora de configurar el SoftSerial:

  1. Habilitar una función de SoftSerial
  2. Asignar al SoftSerial unos pines TX / RX usando el remapeador de recursos de Betaflight (Resource Remapping)

Puedes ver aquí un tutorial para principiantes del Betaflight Resource Remapping.

Tras reiniciar el FC deberías ver una nueva entrada “SoftSerial” en la pestaña de los puertos.

Qué pines se pueden usar para SoftSerial?

Esto depende del FC, y de a qué timers están los pines conectados, Puedes averiguar qué pines puedes usar para tu modelo particular de FC en este enlace

En general, en la inmensa mayoría de los FCs deberías ser capaz de encontrar los pines adecuados y poder usarlos como SoftSerial. Estos pines suelen ser:

  • UARTs TX & RX
  • Entradas PPM
  • Pines para los LED Programables
  • Motores 5, 6, 7 y 8 (si es que están disponibles)

Si tienes problemas deberías consultar las especificaciones de tu tarjeta FC.

Ejemplos de uso del SoftSerial

Estos son algunos casos tópicos de uso del SoftSerial. Para los ejemplos se ha usado un controlador de vuelo Betaflight F4, pero todos los pasos deberían servir para cualquier otro FC.

Conectar una señal de SmartPort invertida a un controlador F4

RTX Frsky

Usando el SoftSerial, podemos conectar SmartPort a un FC F4 directamente sin preocuparnos de la inversión de señal.

En este ejemplo, lo conectaremos al TX del UART1

Este probablemente vaya a ser uno de tus primeros escarceos con la programación de un FC, pero no te preocupes, lo vamos a hacer tan fácil que va a ser un paseo.

  1. Entra en el CLI de Betaflight (Command Line Interface, o editor de comandos)
  2. Teclea “resource”, y podemos ver el número de pin del TX1, que es A09. Podría ser otro en otro modelo de FC.El CLI de Betaflight
  3. Asignamos el Softserial1 al pin A09 tecleando en el CLI:
    resource SERIAL_TX 11 A09
    save

    Los números de puerto del SoftSerial empiezan en 11, es decir 11 es el Softserial#1, 12 es el Softserial#2, etc.

  4. Habilita la función “Softserial” en Betaflight, y deberías ver una entrada Softserial1 en la pestaña de puertos. Selecciona entonces “SmartPort” en la salida de telemetría.Soft Serial de Betaflight
  5. Esto ya debería funcionar, vete de nuevo al CLI y asegúrate:

    set tlm_halfduplex = on
    set tlm_inverted = off

    Para una señal de SmartPort invertida, deberías tener “tlm_inverted” puesto a “off”, y para una señal no invertida de SmartPort debería estar puesto a “on”. Simplemente prueba con ambos si no estás seguro.

  6. Tras hacer estos cambios, necesitas desconectar el FC (quitando el USB y la batería) y luego volver a conectarlo. A veces el SoftSerial necesita un reseteo para funcionar correctamente.

 

Compartir un UART entre el SmartAudio y la telemetría ESC

Soft Serial

Usando los pines TX y RX de un mismo UART para dos dispositivos distintos, puedes dejar libre un UART para cualquier otra cosa. Por ejemplo,puedes poner la telemetría de los ESC en el UART1 RX y configurar el TX como SoftSerial1 y usarla para el SmartAudio.

  1. En el CLI, teclea “resource” y podemos ver el número de pin del TX1, que es A09.Dump CLI SoftSerial
  2. Asignamos el A09 a softserial1 tecleando en el CLI:
    resource SERIAL_TX 11 A09
    save

    Esto habilita la función SoftSerial en el Betaflight, y ahora deberías ser capaz de ver Softserial1 en la pestaña de puertos.

  3. Elige ESC en el UART1 y SmartAudio en Softserial1 antes de salvar.SoftSerial en Betaflight
  4. Es probable que tengas que reiniciar el FC desconectando el USB y la batería para que el Softserial empiece a funcionar.

 

No tienes suficientes UARTs? Usando el pin de los LEDS para el SmartPort

Asignar el pin de LEDS para Smartport

Si tienes un pin para los LEDs que no estás usando en tu FC, puedes convertirlo en un puerto Softserial y usarlo para dispositivos como SmartPort y SmartAudio.

  1. En el CLI, teclea “resource” y podemos ver que el número de pin para la tira de LEDs es B06.softSerial Bertaflight
  2. Asignaremos el Softserial1 al B06 tecleando en el CLI:
    resource LED_STRIP 1 none
    resource SERIAL_TX 11 B06
    save

    Esto habilita la función “Softserial” en Betaflight, y ahora deberías poder ver Softserial1 en la pestaña de puertos,

  3. Selecciona SmartPort como salida de telemetría.

Remapeado de recursos

Si esto no funciona, mira el ejemplo 1 para la resolución de problemas.

En ocasiones se obtiene el siguiente mensaje de error:

index not between 1 and 10

Existen dos posibles causas para esto:

  • Comprueba si la función de Softserial está habilitada. Reinicia el FC (retira el cable y la batería) después de habilitar la función Softserial. Prueba otra vez.
  • Tu FC particular tiene el Softserial deshabilitado en el firmware. Esto puede ser porque algunos F1 y F3 tienen una memoria muy limitada para almacenar el firmware, y alguna funciones como el Softserial deben ser retiradas para ahorrar memoria.

Enlace para el indice
Glosario de la guia de drones