Skip to content

Introducción a los widgets

Alex Spataru edited this page Dec 28, 2020 · 12 revisions

Los widgets permiten visualizar la información proveniente del dispositivo serial de manera rápida y conveniente. En la sección del protocolo de comunicación se explica como instruir a Serial Studio a generar widgets.

Acelerómetro

El widget del acelerómetro calcula el promedio de las fuerzas G en cada eje y los muestra en un indicador similar al que se encuentra en la mayoría de las aeronaves.

Significado de cada manecilla:

  • Rojo valor máximo registrado
  • Azul valor mínimo registrado
  • Amarillo último valor registrado

Para crear este widget, es necesario tener el siguiente sintaxis en el grupo con los datos del acelerómetro:

{
   "t":"Acelerómetro",                    # Título del grupo
   "w":"accelerometer",                   # Tipo del widget para este grupo
   "d":[                                  # Arreglo de datos del grupo
      {
         "t":"Eje X",                     # Título del primer dato
         "v":"%valor_actual_eje_x%",      # Valor actual del primer dato
         "w":"x"                          # Opción de widget correspondiente (eje X)
      },
      {
         "t":"Eje Y",                     # Título del segundo dato
         "v":"%valor_actual_eje_y%",      # Valor actual del segundo dato
         "w":"y"                          # Opción de widget correspondiente (eje Y)
      },
      {
         "t":"Eje Z",                     # Título del tercer dato
         "v":"%valor_actual_eje_z%",      # Valor actual del tercer dato
         "w":"z"                          # Opción de widget correspondiente (eje Z)
      }
   ]
}

Tanque/Barra

Este widget sirve para poder indicar el valor de alguna medición respecto a un rango de valores máximos y mínimos. Ejemplos de aplicación:

  • Voltaje de la batería
  • Nivel de oxígeno/agua/etc
  • Progreso de alguna tarea
  • Etc.

A diferencia de los demás widgets, este widget se construye a nivel de dataset, no de grupo. Para crear este widget, es necesario tener el siguiente sintaxis en un dataset:

{
   "t":"Voltaje de Batería",    # Título del dataset
   "v":"%valor_actual%",        # Valor actual
   "w":"bar",                   # Especificación del tipo de widget (bar)
   "min":0,                     # Valor mínimo posible
   "max":5                      # Valor máximo posible
}

Nota: en caso de que él dataset especifique unidades (con la llave JSON u), estos se van a mostrar junto a los números que indican el nivel del tanque.

Horizonte artificial

El horizonte artificial es una representación de dos ejes de un giroscopio. Este instrumento es ampliamente utilizado en aeronaves y drones para darnos una idea general de la orientación de la aeronave.

Hacer uso de este instrumento requiere generar un widget a nivel de grupo:

{
   "t":"Gyroscope",          # Título del grupo
   "w":"gyro",               # Especificación de widget
   "d":[
      {
         "t":"X",            # Título de conjunto de datos
         "v":"%valor_x%",    # Valor actual
         "w":"yaw"           # Opción de widget correspondiente (guiñada)
      },
      {
         "t":"Y",            # Título de conjunto de datos
         "v":"%valor_y%",    # Valor actual
         "w":"roll"          # Opción de widget correspondiente (roll)
      },
      {
         "t":"Z",            # Título de conjunto de datos     
         "v":"%valor_z%",    # Valor actual
         "w":"pitch"         # Opción de widget correspondiente (pitch)
      }
   ]
}

Nota: el widget espera que los valores recibidos sean medidos en grados con valores de -180° a 180°.

Mapa

Finalmente, el mapa puede ser utilizado para mostrar la ubicación del GPS.

Hacer uso de este instrumento requiere generar un widget a nivel de grupo:

{
   "t":"GPS",                 # Título del grupo
   "w":"map",                 # Tipo de widget
   "d":[
      {
         "t":"Longitude",     # Título del conjunto de datos
         "v":"%longitud%",    # Valor actual
         "w":"lon"            # Opción de widget correspondiente (longitud)
      },
      {
         "t":"Latitude",      # Título del conjunto de datos
         "v":"%latitud%",     # Valor actual
         "w":"lat"            # Opción de widget correspondiente (latitud)
      }
   ]
}