Jump to content

Kerbal Kontrol Station (Controlador KSP con Arduino)


sandroxil

Recommended Posts

Buenas a todos.

Estoy pensando en construirme un controlador para KSP, con sus botones, indicadores luminosos, pantallas, controles, etc... Algo como ésto.

El KSP es genial, pero será mucho mejor con un tablero de mandos "real", como si manejaras una auténtica nave espacial, con sus lucecitas, sus indicadores, la palanca de potencia, la información en pequeñas pantallas led, etc...

Quería saber si alguien de por aquí lo ha intentado y tiene algún consejo o recomendación. He estado trasteando con algunos proyectos de Arduino, y espero poder hacer un controlador decente, pero la verdad es que hay muchas opciones y no sé por cuál decantarme. Existen varios mods para comunicar KSP con un controlador externo (KSPSerialIO, KSPEthernetIO, y algunos más), también hay quien utiliza Arduino Mega, y hay quien usa una RaspberryPi, o ambas cosas.

Yo he empezado intentando lo que creía más fácil para hacer una prueba: instalar la Demo de KSPEthernetIO. Me ha parecido lo mejor, porque hay una aplicación para móvil en la PlayStore con la que se puede ver en el móvil la navball y se pueden controlar desde el móvilo algunas cosas, como las direcciones (progrado, retrógrado, normal, antinormal, etc), las luces, frenos, ruedas, y grupos de acción. Para ello hay que instalar el mod de KSPEthernetIO en el KSP, pero no logro conectar el PC al móvil. Si alguien controla un poco sobre puertos y conexiones entre PC y dispositivos externos y tiene ganas de probar, agradeceré sus comentarios.

Y si hay por aquí algún fan de Arduino y se anima a montar su propio controlador, será estupendo. Todos los foros que hay sobre ello están en inglés, y lo entiendo, pero cuando la terminología se complica, llega un momento en que algunas cosas me pasan altas, y no me entero bien. Estaría bien tener un hilo sobre controladores para KSP en español. Así que ánimo, a ver si alguien se quiere embarcar en esta aventura.

 

Link to comment
Share on other sites

Hi sandroxil,

I randomly saw you were testing KSPEthernetIO and had problems connecting your mobile phone to KSP. Sorry, I don't speak spanish, but I would like to find the problem. If you still want to test it, here are some advices that might solve the problem:

  1. It would be helpful to know your operating system, KSP version and other installed mods.
  2. Make sure to have the latest version of the KSPEthernetIO installed. Version 1.0.0 is no longer compatible with the client version 0.2b in the PlayStore.
  3. Make sure the computer and the mobile phone are in the same WLAN.
  4. Make sure KSPEthernetIO is load properly on startup. After starting the game press "alt gr"+"F12" to open the ingame console. If you scroll up a bit there should appear the messages [KSPEthernetIO]: Waiting for TCP client...
  5. It may be necessary to open port 2342 for incoming connection on your computer.
  6. Maybe you could send me the KSP logfile "KSP.log" in the game installation folder. If you do so previously open KSP, wait for main menu to appear, try to connect with your mobile phone and then close KSP. If you have done that you can send the logfile to [email protected] .

I'm also working on an RaspberryPi client, but this may take a while because currently I'm having exams and not that much time. But so far I have tested the Java client code on my computer on Eclipse and it seems to work. I'm thinking of using the Pi4J library to access the GPIO of the RaspberryPi. I'm also having a 1.2" 128x128px RGB oled here and I'm really excited about using that for an external Navball.

 

[Translation - hopefully -.-]

Hola sandroxil,

Al azar, vi que estaba probando KSPEthernetIO y tuve problemas para conectar su teléfono móvil a KSP. Lo siento, no hablo español, pero me gustaría encontrar el problema. Si aún desea probarlo, aquí hay algunos consejos que podrían resolver el problema:     

  • Sería útil conocer su sistema operativo, la versión de KSP y otras modificaciones instaladas.     
  • Asegúrese de tener instalada la última versión de KSPEthernetIO. La versión 1.0.0 ya no es compatible con la versión del cliente 0.2b en PlayStore.     
  • Asegúrese de que la computadora y el teléfono móvil estén en la misma WLAN.     
  • Asegúrese de que KSPEthernetIO se cargue correctamente en el inicio. Después de comenzar el juego, presiona "alt gr" + "F12" para abrir la consola del juego. Si se desplaza un poco hacia arriba, deberían aparecer los mensajes [KSPEthernetIO]: Waiting for TCP client...    
  • Puede ser necesario abrir el puerto 2342 para la conexión entrante en su computadora.     
  • Tal vez podría enviarme el archivo de registro de KSP "KSP.log" en la carpeta de instalación del juego. Si lo hace, abra KSP anteriormente, espere a que aparezca el menú principal, intente conectarse con su teléfono móvil y luego cierre KSP. Si lo ha hecho, puede enviar el archivo de registro a [email protected].

También estoy trabajando en un cliente RaspberryPi, pero esto puede llevar un tiempo porque actualmente estoy haciendo exámenes y no tengo mucho tiempo. Pero hasta ahora he probado el código del cliente Java en mi computadora en Eclipse y parece funcionar. Estoy pensando en usar la biblioteca Pi4J para acceder al GPIO de RaspberryPi. También estoy teniendo un 1.2 "128x128px RGB oled aquí y estoy muy emocionado de usar eso para un Navball externo.

Link to comment
Share on other sites

On 2/25/2020 at 5:05 PM, DrMarcel said:

Hi sandroxil,

I randomly saw you were testing KSPEthernetIO and had problems connecting your mobile phone to KSP. Sorry, I don't speak spanish, but I would like to find the problem. If you still want to test it, here are some advices that might solve the problem:

 

Thank you very much.
I didn't open the proper port.

Now it works.

May be I could add this to my Kerbal Controller. At the moment I'm just designing it and waiting for some components to arrive.
I will be watching your progress with this app and also withe the one for the Raspberry Pi.
You are making a very good job

Link to comment
Share on other sites

  • 1 month later...

Bueno, ya he tenido algo de tiempo y he empezado con el Kerbal Kontrol Station. De momento estoy haciendo un prototipo con una caja de cartón. Estoy usando una placa Arduino Mega, pero seguramente necesitaré un modo de aumentar los pines disponibles, porque con todos los leds y botones que quiero poner, se me va a quedar pequeña.

Cuanto esté terminado y compruebe que todo funciona bien, diseñaré una caja de un material más adecuado. Voy poco a poco; parece que este proyecto va a ser largo y complejo, pero es divertido ir añadiendo componentes y ver cómo funcionan. Sólo el hecho de activar y desactivar el SAS, el RCS, las luces o las patas es una gozada.

Aquí he puesto 3 LEDs un poco cutres (el diseño es temporal). El verde se enciende cuando el panel de control está conectado al juego; el amarillo se enciende cuando la fuerza G es algo elevada o cuando queda poco combustible, y el rojo cuando la fuerza G es muy elevada o se agota el combustible. Luego iré mejorando el sistema de señalización de alarmas con LEDs. También se ve aquí el indicador de carga de las baterías.

KKS-00.jpg

En la segunda imagen se ven los interruptores de RCS, SAS, Luces, y tren de aterrizaje. En la esquina izquierda están los botones Abort y Stage, con un interruptor cada uno para armar o desarmar el botón (y no pulsarlos por error. Lo último que hice ayer es añadirle las dos pantallas LCD y empecé a trastear con ellas para que indicaran los niveles de combustible, monopropelente, etc. La idea es que en el diseño definitivo estén en la parte superior, no en un lado de la caja, pero creo que no me va a caber todo en la caja de cartón, así que las he colocado ahí para tener más espacio.

KKS-01.jpg

Tengo muchas ideas en la cabeza, y he realizado un diseño de cómo me gustaría hacerlo, pero sobre la marcha me van surgiendo nuevas ideas o problemas que me obligan a cambiar mis planes. Si alguien tiene alguna idea, agradezco sugerencias. Igual hay algo que no se me ocurre y podría estar bien. Espero que os guste mi KKS de cartón (es muy Kerbal, ¿no?)

 

Edited by sandroxil
Link to comment
Share on other sites

On 4/16/2020 at 3:49 PM, Noobton said:

Esta de lujo. Qué material más apropriado para un controlador Kerbal que una caja encontrada al lado del camino.

Sandroxil Inc. revolviendo los contenedores de basura de Rockomax Conglomerate y de Kerlintong Model Rocket and Papel Product Inc. ( NO ES ESPIONAJE INDUSTRIAL! )  encontró suficiente material para diseñar una cómoda consola de comando para el control unificado de los diseños. Se aconseja disyuntor y térmica ad doc, no apoyar bebidas, mantenga libre de insectos, no comer hojuelas fritas de papas sobre el mismo, tener a mano el Matafuegos. :cool:

Link to comment
Share on other sites

Wow!!! Que maravilla.

Quedaría genial un tipo de panel informativo transparente con funciones básicas de SAS, RCS y similares, que de estar activadas se iluminase. Me explico mal pero creo que se entiende.

Seguro que ya tienes idea para la mayoría de funciones de control. Tal vez unos interruptores para los atajos configurables numéricos.

Me encantaría probar un lanzamiento con un controlador.

Sigue así y mantennos informados.

Link to comment
Share on other sites

  • 3 weeks later...
On 4/17/2020 at 11:55 PM, NeoDarkF said:

Wow!!! Que maravilla.

Quedaría genial un tipo de panel informativo transparente con funciones básicas de SAS, RCS y similares, que de estar activadas se iluminase. Me explico mal pero creo que se entiende.

Seguro que ya tienes idea para la mayoría de funciones de control. Tal vez unos interruptores para los atajos configurables numéricos.

Me encantaría probar un lanzamiento con un controlador.

Sigue así y mantennos informados.

Ahora tengo unos LEDs verdes que se encienden cuando está activado cada elemento (SAS, RCS, LUCES...), pero la idea es hacerlo como tú dices, en un panel indicador y que se enciendan los cuadraditos de los elementos que están activados. En el mismo panel, quiero poner también avisos de alarma (combustible bajo, calor excesivo, baja altitud, etc.). Y no estaría mal añadir una alarma sonora, y sonidos al activar y desactivar cosas. 
Madre mía, cada vez se me ocurren más cosas, y no sé si seré capaz de implementarlo todo.

Link to comment
Share on other sites

  • 4 weeks later...

Poco he avanzado últimamente. El prototipo tiene un par de cosas más, pero no mucho. Acelerador, y botones para cambiar el modo del SAS.

IMG-20200601-200900.jpg

No obstante, he decidido empezar desde cero de nuevo, ya que me han ido viniendo ideas a la cabeza, y he tenido que reimaginar todo el proyecto. He utilizado una placa de un teclado USB para poder añadir más botones al controlador que controlen algunas teclas del teclado normal en el juego, y me ha costado lo mío; ya pondré algunas imágenes del trabajo realizado con la placa del teclado, y del nuevo diseño del controlador.

Esto va para largo, porque algunas de las piezas las he tenido que comprar en China y van a tardar meses en llegar, y la programación en Arduino no es tan fácil como parecía, pero al menos ya tengo más claros los objetivos.

Link to comment
Share on other sites

On 6/1/2020 at 10:29 PM, Noobton said:

:o el control de throttle es analogo?

Sí. Es un potenciómetro lineal deslizante, y funciona bien. Tengo pensado añadir al lado una barra de LEDs que se ilumine más o menos según la posición del acelerador.

Link to comment
Share on other sites

Bueno, como comenté anteriormente, estoy empezando de cero. Estoy con el diseño del panel de control. 

Dise-o-panel-KKS-00.png

El panel tiene 30 x 60 cm. No he decidido el material del que estará hecha la caja. Puede ser metal, madera o metacrilato, o una combinación de ellos.

Los letreros no se leen bien, porque son figuras en 3D. Son para hacerme una idea, pero en el diseño definitivo, los arreglaré.

Dise-o-panel-KKS-01.png

  • Interruptores para armar los botones ABORT y STAGE (Si no están armados, los botones no funcionan)
  • Los interruptores llevan LED incorporado (se enciende al estar encendidos)
  • Palanca SCROLL STAGE ICONS:  Sirve para mover arriba y abajo la lista de etapas de la nave que aparece en pantalla.
  • Botón ABORT: para abortar la misión.
  • Botón STAGE: Activar siguiente etapa.

Dise-o-panel-KKS-02.png

  • Display 7 segmentos de 4 dígitos: indica la velocidad en m/s (creo que con 4 dígitos es suficiente para el juego; tengo que comprobar si se alcanzan velocidades más altas; en tal caso, añadir un indicador de unidades (m/s y Km/s). Si alguien tiene información acerca de esto, le agradecería que la compartiera conmigo.
  • LED THROTTLE ENGAGED: indica si el motor está activado. Cuando bajas el acelerador al mínimo, sigue proporcionando empuje, porque el motor no se para; hay interruptores para apagar los motores. El LED se apagará sólo cuando no haya nada de empuje activo.
  • EDs VVI (Vertical Velocity Indicator) SURF (Surface), ORBIT, IAS (Indicated Air Speed): indican si la velocidad mostrada es velocidad vertical (utilizada al despegar y aterrizar), velocidad relativa a la superficia, velocidad orbital o velocidad del aire (utilizada en el vuelo de aviones). Estos modos se cambian al modificar el Display Mode (en otro panel)
  • NavBall Mode: OFF / ORB / SUR / TGT (elegir si los parámetros de navegación son relativos a la órbita, a la superficie o al objetivo)

Dise-o-panel-KKS-03.png

  • Buzzer: Pequeño altavoz para producir sonidos al toquetear los botones y palancas, y para la alarma.Está puesto al lado del indicador de alarma, pero puede ir en otro sitio, incluso en el interior de la caja (estos bichos hacen mucho ruido)
  • MASTER ALARM: Alarma general, se activa cuando hay algún problema; parpadea en rojo y emite sonido. En uno de los displays LCD se muestra información sobre la alarma. El botón que hay al lado es para apagarla.
  • THROTTLE: Potenciómetro lineal deslizante para acelerar
  • Barra LED para indicar el nivel de potencia
  • FULL: acelerador al máximo (tecla z)
  • CUT: acelerador al mínimo (tecla x) Estos dos botones no creo que puedan funcionar, pues si el potenciómetro está en un punto concreto, el programa leerá siempre ese nivel de aceleración. Tengo que combrobarlo.
  • CHECK: Modo de prueba. Si está activado, al usar cualquier control, en lugar de realizar su finción, se muestra en la pantalla de información. Sirve para comprobar que todos los sistemas funcionan, y para detectar errores (Debug mode)
  • LIGHTS: Enciende todas las luces (Fiesta de LEDS); activo sólo en modo Check
  • PHOTO: Hacer una foto (equivalente a la tecla F1)

Dise-o-panel-KKS-04.png

Estos son los botones para el SAS Mode. Tienen luz incorporada; así el modo que está seleccionado está iluminado.

  • HOLD (Mantener posición).Modo por defecto al activar el SAS
  • MANEUVER: colocarse en posición para la próxima maniobra
  • PROGRADE / RETROGRADE (relativo a la órbita)
  • NORMAL / ANTINORMAL
  • RAD IN / RAD OUT
  • TGT PRO / TGT RET (Prograde/retrograde respecto al objetivo)
  • INVERT SAS: Invierte momentáneamente el SAS (activado/desactivado); creo que equivale a la tecla F; se enciende su luz mientras lo pulsas.
  • SAS OFF: si se pulsa cualquier botón de SAS Mode pero el interruptor del SAS está desactivado, se enciende el LED "SAS OFF" durante un segundo mientras suena una alarma de aviso.

Dise-o-panel-KKS-05.png

  • Interruptores para RCS, SAS, luces, patas o tren de aterrizaje, paneles solares y escalera. Para los frenos hay un interruptor (bloquear frenos) y un botón (freno sin bloqueo).

Dise-o-panel-KKS-06.png

  • PANEL LIGHT: enciende o apaga la luz interior de la caja, que sirve para iluminar los letreros y líneas que hay en el panel.
  • DISPLAY: enciende o apaga las 2 pantallas informativas.
  • Interruptores para motor 1 y 2, modo de motor, y 5 grupos de control genéricos.
  • DISPLAY MODE: palanca para seleccionar los modos del display y un botón para seleccionarlo. (Modos: despegue, orbita, encuentro, aterrizaje, vuelo, etc…); los modos también afectan al panel de velocidad. Por ejemplo en modo vuelo, se muestra la velocidad IAS, en el despegue la velocidad VVI, en órbita la velocidad orbital,…
  • STAGING CONTROLS y DOCKING CONTROLS, cambian el tipo de control entre el predeterminado y el de docking (acoplamiento); equivalen a botones del teclado USB
  • PRECISION MODE activa y desactiva el modo de precisión (los movimientos son más sutiles, para maniobras delicadas como el acoplamiento). Equivale a la tecla Bloqueo Mayúsculas, así que el mismo botón sirve para activar y desactivar el modo. Además, incluye al lado el LED del teclado que se enciende al bloquear las mayúsculas, para ver que el modo está activado.

Dise-o-panel-KKS-07.png

  • Apoapsis (se puede cambiar el display entre altitud de la apoapsis y tiempo restante para llegar a ella)
  • Periapsis (se puede cambiar el display entre altitud de la periapsis y tiempo restante para llegar a ella)
  • Altitud (se puede cambiar entre altitud respecto al nivel del mar o respecto al terreno); las unidades están en metros cuando la nave está a una altura hasta 1000m; a mayor altura, están en Km)

 

Dise-o-panel-KKS-08.png

  • El tiempo que se muestra puede cambiarse entre fecha actual (en Kerbin) y tiempo de misión (MET, Mission Elapsed Time, tengo que cambiar el letrero). Por cierto, en Kerbin un día dura unas 6 horas, un mes son 6 o 7 días y un año tiene 426 días (66 meses). Aproximadamente. Esto va a ser difícil de cuadrar. Investigaré más a ver exactamente cómo cuenta el tiempo el juego.
  • INDICADORES BARRAS LED  y VOLTÍMETRO: Esto son las barritas que indican el nivel de SolidFuel, LiquidFuel, Oxidizer y Monopropellant, y el indicador de carga de las baterías.
  • PANEL INDICADOR: Esto es una especie de caja con LEDs que se encienden. Algunos indicadores son de un solo color; otros tienen más de un LED.
    • FUEL, POWER, ALT (Altitude), G-FORCE, HEAT: amarillo indica precaución y rojo peligro.
    •  RCS, SAS, LIGHTS, GEAR, BRAKES, ENG 1, ENG 2, SOLAR PANELS, LADDER, se encienden cuando el sistema está activado. Me acabo de dar cuenta de que he olvidado los paracaídas. Hay que incluir control de los paracaídas también.
    • ATMO se enciende al estar dentro de la atmósfera
    • ORBIT cuando se alcanza una órbita estable
    • LANDED cuando la nave está en tierra parada.

Dise-o-panel-KKS-09.png

  • TURN VIEW: girar la cámara
  • ZOOM + / ZOOM –
  • TOGGLE OM: alternar entre la vista ORBITAL MAP y la vista de la nave
  • IVA (Intra-Vehicular Activity): vista del interior de la nave, desde la perspectiva del Kerbal.
  • CAM: alternar cámara (4 tipos de cámara)
  • NavBall: mostrar/ocultar NavBall
  • UI: mostrar ocultar User Interface
  • SHIP + / - : cambiar de nave (anterior/siguiente)
  • CYCLE FOCUS: en ORBITAL MAP, cambiar de objeto
  • RESET FOCUS: en ORBITAL MAP, volver al objeto inicial
  • TIME WARP
    • (-)          decelerar el tiempo
    • STOP     tiempo normal
    • (+)         acelerar el tiempo

Dise-o-panel-KKS-10.png

  • Un joystick para rotación y otro para traslación
  • Tienen un botón, que de momento no uso para nada

Para los paracaídas, me gustaría poner un interruptor para armarlos (que no se pulse el botón por error), y un botón para cada paracaídas (poner 2 o 3 diferentes, uno de frenado y otro principal, uno para aterrizar en Duna (Marte) y otro para la vuelta a casa…

También quiero un indicador luminoso que indique cuándo es seguro abrir el paracaídas (depende de la altura y la velocidad)

Al poner más paracaídas diferentes, necesitaría más grupos de control; si consigo usar el Mod que añade más grupos de control (ControlGroupExtender, o algo así), podré añadir más controles.

 

 

De momento, así está el proyecto. Tengo que hacer pruebas en el juego para ver cómo funcionan algunos de los sistemas y poder buscar la mejor forma de implementarlos en el controlador para que funcionen correctamente. Tengo que montar los joysticks y comprobar que sé hacerlos funcionar, y así con todos los componentes. Algunos, como el Throotle ya los he probado.

Las barras de LEDs van a ser de lo más complicado. También el hecho de tener demasiadas cosas que conectar; la placa Arduino Mega no tiene tantos pines digitales, así que tendré que usar multiplexores y demultiplexores para aumentar el número de pines de entrada y salida. Esto complica un poco la programación, pero no hay más remedio. Y seguro que necesitaré algún componente más que ni siquiera he pensado aún (reguladores de voltaje, mosfets, chips varios...), pero poco a poco. Al menos ya tengo claro qué es lo que quiero hacer.

Un saludo a todos.

Nos vemos en el espacio.

 

Link to comment
Share on other sites

On 6/5/2020 at 4:08 PM, Noobton said:

Increible este proyecto si pudieras compartir los diseños de pronto algún día me animo a copiarte. Qué programa usas para el diseño?

Lo iré compartiendo todo, por si alguien se lo quiere copiar. De momento, son sólo imágenes, porque no está totalmente definido. Compartiré los diseños definitivos, porque estos tienen algunos errores. Por ejemplo, no he tenido en cuenta el espacio necesario para los tornillos que aguantan algunos de los dispositivos, como las pantallas LCD, el potenciómetro del acelerador, los displays numéricos...

Estoy usando tinkercad. Es muy básico, pero fácil de usar. Sólo hay que registrarse, y los diseños se hacen y guardan online; permite exportar a formato *.stl, *.obj, y para cortar con láser. Utilizo este programa tanto para piezas impresas con la Ender 3 (impresora MDF) como con la Elegoo Mars (impresora de resina). También para algunas pìezas que he cortado con láser (Laser K40) para otros proyectos.

 

Link to comment
Share on other sites

  • 2 weeks later...
On 6/5/2020 at 2:19 PM, sandroxil said:

Bueno, como comenté anteriormente, estoy empezando de cero. Estoy con el diseño del panel de control. 

Nos vemos en el espacio.

Shut Up and Take My Money!! x2 :0.0: 

Impresionante proyecto que esperamos ver terminado pronto.

Link to comment
Share on other sites

  • 4 months later...

IMG-20201122-183404.jpgTras unos meses en pausa, he retomado el proyecto. He redistribuido los módulos en el panel, y éste es el primer sub módulo cortado con láser. Como el panel tendrá un tamaño de 30x70cm no me cabe en el láser y tengo que cortarlo y grabarlo a trozos. Éste es el primer trozo. Hay 6 en total. Aunque está incompleto (faltan cosas en el hueco) y tiene algunos fallos que hay que modificar en el diseño, sólo es un prototipo para pruebas. El definitivo tiene que estar retroiluminado y no será una simple chapa de madera, sino una capa de metacrilato translúcido y otra de ABS tintado de color plata o negro. La idea es que las líneas y las letras se iluminen

Link to comment
Share on other sites

  • 2 years later...
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...