Berme Avionics

Panel de aviónica personalizado

Objetivo
El objetivo de este proyecto era crear un panel de aviónica compatible con el software de simulación de vuelo X-Plane. La interfaz esta inspirada en una avioneta bimotor genérica, tomando de referencia la aeronave King Air disponible en el software de simulación.
La motivación del desarrollo vino como consecuencia de tener que hacer un regalo a un buen amigo, en el cual yo tome el rol de desarrollador y el resto de amigos de accionistas.

La siguiente foto muestra el resultado final:


Fecha
Junio 2022

Descripción
Para la construcción del panel hice uso del siguiente material:

Desarrollo

Para el desarrollo del panel planteo una arquitectura basada en dos equipos, los cuales representen dos equipos de aviónica de la aeronave:
  • OrangePi, responsable de la representación del Navigation Display (ND) y de la comunicación con la periferia (interruptores, encoder, leds..). El sistema operativo instalado es un Debian.
Puede descargase desde la web oficial:


  • Samsung Galaxy, responsable de la representación del Primary Flight Display (PFD) y la interfaz táctil del piloto automático.
En un primer momento pensé que la tarjeta OrangePi representará el PFD, pero dado que no se obtenían más de 15fps, decidí invertir los roles, y que el smartphone tomará la representación del horizonte artificial. Debido a que era capaz de ofrecer más de 30fps, y que la tarjeta Pi se encargará de la representación la navegación, donde es preferible sacrificar los fps al no requerir tanta precisión en el vuelo.

Las siguientes fotografías muestran un diseño inicial del PFD en la pantalla de la Orange Pi, y una imagen de muestra en el móvil para ver una posible representación. Como he dicho, los roles se intercambiaron y el diseño del PFD se modifico bastante como se verá después.








Para el conexionado de la periferia se hace uso de la interfaz GPIO de la Orange Pi, haciendo uso de una masa común para todos los componentes, y con ellos disminuyendo el número de conexiones y longitud de cableado.

Antes de soldar el cableado y validar todo el panel, se lleva a cabo pruebas unitarias con una protoboard y algún led de control.




Para el conexionado en los pines macho de la tarjeta se hace uso de los cables macho-hembra de electrónica, los cuales dan un buen apriete en la tarjeta y garantizan el conexionado sin necesidad de aplicar ningún adhesivo u otro fijador.




Para el desarrollo de los pantallas de aviónica se hace uso de Processing, su elección se debe a varios motivos:
  • Permite desarrollar entornos gráficos de una manera rápida y potente
  • Es multiplataforma, lo que permite varias cosas:
    • Desarrollar en entorno Linux/Windows desde el ordenador de desarrollo
    • Generar ejecutables para arquitecturas ARM y poder lanzarlo desde la OrangePi
    • Generar ejecutables para sistemas operativos Android, así como debug en tiempo de ejecución, lo que facilita el desarrollo para el soporte smartphone.
  • Contempla librerías para la comunicación E/S en el GPIO de la OrangePi
Las siguientes fotografías muestran un estado de avance intermedio en el desarrollo gráfico del ND y PFD

El Navigation Display dispone de tres modos para interactuar, a los cuales se accede desde el encoder de control con pulsador en el panel. Los modos son:
  • Rango de visión del mapa
  • Modo de navegación del mapa 
  • Rumbo del autopilot



Se dedica un panel lateral en la pantalla del smartphone para la botonera de control, considerando las pulsaciones táctiles para interactuar con los modos y menús de navegación. Los modos son:
  • Activación del piloto automático
  • Activación del modo ALT (nivelación)
  • Activación y selección de ALT SEL (altitud a alcanzar)
  • Activación y selección de V/S (velocidad de ascenso a alcanzar)
  • Activación y selección de IAS (velocidad indicada a alcanzar)
  • Activación y selección de HDG (rumbo a alcanzar)
  • Activación y selección de HOLD (modo espera a establecer)
  • Activación del modo APP (aproximación)
  • Intercambio de la frecuencia de standby y la activa (el valor de frecuencia se selecciona a través del encoder de control).



El siguiente video muestra uno de los primeros ensayos con la GPIO, donde se hace lectura del estado de la llave de contacto y se envía una señal al simulador para que inicie el arranque de motor. Por simplicidad en el panel, se ha considerado una única señal de arranque para un arranque dual de motores. En la aeronave real los arranque están independizados.




Para la construcción del panel en metacrilato cuento con la ayuda de un buen amigo, el cual es un experto el SolidWorks.




Además conoce una empresa de corte por laser, mediante la cual se puede obtener un gran resultado de la carcasa y máscara. La siguiente fotografía muestra el resultado de presentar algunos elementos en el panel frontal, y comprobar el posible resultado final.




A la par que mi colega me echa una mano con el lijado del panel y ajuste de la caja, continuo con los trabajos de las pantallas del panel. En la siguiente fotografía se puede ver casi el resultado fina de la pantalla PFD, a falta de las escalas en la indicación de velocidad, altitud y rumbo.




Y en paralelo se avanza con la integración de la periferia, donde en el siguiente video pueden verse los ensayos con las luces de landing, y mi querida mujer grabando mientras insiste en terminar de una vez e irse a dormir jajaja



Tras terminar los ajustes de la caja se inicia la colocación de los componentes en su interior, así como el cableado de todos los elementos validados e integrados en el software. 

Para el ajuste del teléfono se hace uso de unas presillas regulables mediante tornillos, impresas en 3D.




Se cierra la caja de manera provisional y se atornilla al soporte de monitor, con el fin de poder ver el resultado final.




Tras ello, se realiza de nuevo varias pruebas para asegurar que todos los componentes hacen un contacto correcto, no hay fallo de señal y situaciones similares.




Decido instalar un par de ventiladores para generar una circulación de aire forzada en el interior, con el fin de ayudar a la tarjeta OranePi en la evacuación de calor, sobre todo en los días de verano donde la temperatura de la sala puede ser algo elevada.




Se llevan a cabo algunos vuelos para comprobar la correcta conexión de la red, calentamientos o cuelgue de las aplicaciones.




Las siguientes fotografías muestran el estado final del panel. Para la alimentación se requiere de dos cables USB, uno para la alimentación de los ventiladores y pantalla ND, y otro para la alimentación de la OrangePi. Para ambos se requiere una corriente de 2A o superior, con el fin de alcanzar la potencia necesaria y no generar fallos de alimentación. Un tercer cable está disponible para la alimentación del teléfono cuando sea necearía, o actualización del software desde un ordenador.























Vuelos en Tenerife (Islas Canarias)

Vuelos de prueba y validación por la isla











Comunicación X-Plane - BermeAvionics

Para la comunicación del panel con el software X-Plane se hace uso de la siguiente arquitectura:
  • X-Plane plugin compilado en Qt y C++ para la construcción de dos sockets de comunicación:
    • Envío de datos al PFD, obteniendo toda la información necesaria a través de DataRefs
    • Envío de datos al ND, obteniendo toda la información necesaria a través de DataRefs
  • El PFD envía los comandos del panel de piloto automático al puerto UDP configurado en la aplicación de X-Plane
  • El ND envía los comandos de la periferia al puerto UDP configurado en la aplicación de X-Plane


De tal manera que puede decirse que las aplicaciones PFD y ND se alimentan de los datos que recopila y envía el plugin, y envían sus comandos a través de la comunicación UDP habilitada en la aplicación X-Plane.

La siguiente imagen muestra el menú para habilitar la comunicación UDP en X-Plane 11




Para saber como funcionan las tramas de los mensajes UDP de X-Plane puede consultarse un artículo de este blog X-PLANE UDP en el cual recopilo información de una web que explica los valores.

El motivo de desacoplar los mensajes de envío hacia el smartphone y la OrangePi fue el de disponer de mayor control y optimización sobre el socket, ya que si se hubiera optado por leer los mensajes UDP desde X-Plane directamente se estaría recibiendo información innecesaria. De esta manera se construye un mensaje a medida y eficiente, dedicado para cada aplicación.
El envío de comandos solo se realiza ante un cambio de valor, por lo que no satura el programa ni el socket.

Para evitar problemas con cambios de IP en los equipos se hace uso de la dirección de broadcast 192.168.1.255, y se asignan los siguientes puertos:
  • X-Plane 11: 49000 para el envío de comandos desde el PFD y ND
  • PFD: 6001 para la lectura de datos desde el plugin
  • ND: 6011 para la lectura de datos desde el plugin
En el siguiente repositorio de GitHub se dispone de un pequeño ejemplo para la compilación de un plugin desde cero en C++ y Qt




Pantallas de instrumentos

Haciendo uso de las funciones y herramientas de dibujo de Processing se ha conseguido el siguiente resultado:




Se ha tenido que tener en cuenta la limitación de procesamiento y calor generado en la Orange Pi, ya que no cuenta con la potencia de cálculo ni de representación gráfica como un PC al uso. Por ello se han restringido las representaciones gráficos combinadas con matrices de rotación, así como el cálculo de posicionamiento de aeropuertos. Para ello el plugin lleva a cabo el cálculo y transformación de coordenadas en latitud - longitud al plano  x - y, necesario para el pintado en el ND. Mediante el socket de comunicación se envían las nuevas coordenadas el programa de la Orange Pi, con una tasa de refresco de 3 segundos.






Comentarios