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:
- 1 x Pantalla táctil Raspberry 5 HDMI LCD V2 800x480 v2
- 1 x Orange Pi Lite 512MB RAM + MicroSD 8GB
- 1 x Galaxy Grand Neo Plus (GT-I9060I) Samsung
- 7 x Interruptor Palanca SPDT ON - ON 6A
- 2 x Interruptor Conmutador Unipolar De Palanca - 3A/250VAC - 3A/28VDC - 3 Posiciones
- 1 x Rotary Encoder Codificador rotativo con Pulsador
- 1 x Interruptor Basculante Bipolar - Luminoso - 16A / 250V - Rojo - Pack 2 Unidades
- 1 x 11.405.ITPR Interruptor bipolar 3 posiciones con retorno 16A/250V Faston ON-OFF
- Laserplast Placa de metacrilato transparente 6mm- Varios tamaños A0 A1 A2 A3 A4 A5 - Placa Acrilico transparente - Plancha Metacrilato - Lamina plástico - PMMA
- 1 x Selectores de Llave Metálicos 3 Posiciones
- KIT 25 DIODOS LEDS 5MM VERDE BLANCO ROJO AZUL AMARILLO ARDUINO RASPBERRYPI PIC
- 40 CABLES HEMBRA MACHO 20cm jumpers dupont 2,54 arduino pic protoboars
- 50x Resistencias 10 Kohm 1% 1/4w 0,25w carbón film"
- Vinilos decorativos
- 1 x Hub USB
- 1 x Pasamuros USB Tipo A
- 1 x VSG24 92001 – Soporte para Monitor POS o PC Pantalla Táctil, Brazo de Soporte para Pantalla, Ajustable, Plegable y Regulable, VESA, Metálico, para Pantallas de 10 a 22 Pulgadas
- ruthex Inserto roscado M4S SHORT - 50 casquillos roscados de latón RX-M4Sx4 – tuerca de inserción para piezas plásticas – tuerca moleteada para embutir en piezas de impresora 3D por calor
- sourcing map M4 x 45mm Hembra Roscado Latón Hexagonal Separador Pilar Espaciador Tuerca 10uds
- 1 x Boton De Mando Para Potenciómetro - Perilla Embellecedor - 17x15x6mm - 5 Colores
- 1 x Conector alimentacion DC Jack 5,5mm x 2,1mm tuerca – HEMBRA Chasis Lote 5 unidad
- Tornillería varia
- 2 x VENTILADOR 30 x 30 X 10 5V COOLING FAN 0,2A 2 CABLES REPRAP ARDUINO
- Clemas de conexión
- Cable de video HDMI y cables de alimentación USB tipo microUSB y tipo A-A
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
Publicar un comentario