Volante F1 RedBull 2016

Montajes Personales : Cockpits, Pedales, Botoneras...

Moderador: XRStaff

Responder
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Volante F1 RedBull 2016

Mensaje por jaht »

Hola:

Mi intención es crear un volante de f1 para sustituir el G27, lo más barato posible.

Para ello voy a partir del volante
http://www.loopin.eu/tienda.php?check=d ... evolutions

Aunque en principio mi intención era dibujarlo en 3D con solidworks, me iba a suponer muchisimo tiempo por mi falta de experiencia.

Luego he buscado una pantalla de 4,3 que pueda manejar con el microprocesador SAMD21
http://www.hotmcu.com/43-graphical-lcd- ... cPath=6_16

Ya se que hay muchas pantallas y softwares para poder usar de forma sencilla, pero no me convence tener una conexión HDMI de más.

La parte principal será una placa con el micro SAMD21 que llevará los pulsadores, levas y rotarys y manejará la pantalla y los leds y se conectará por USB al PC.

No sé si usaré una placa comercial con ese micro o me haré una. Ya he hecho dos proyectos con ese micro en el trabajo y quizás también haga lo de la pantalla para un producto de control de temperatura en mi empresa.Por ese lado no le veo problema.

Quizás si sea interesante hacer una envolvente en solidwords de la pantalla como la PCU-8D con su agujeros para los leds. Intentaré convencer a mi hijo para que la haga, ya que el volante es para él.

Lo que no me queda claro es lo de extraer y meter datos a los programas de simulación y llevarlos a mi placa con el micro SAMD21.

Primero vi x-sim, pero Vojvoda me ha dicho que tire por SimHub.
Lo he estado mirando y no me aclaro.Me he bajado el HubPackage.4.00.9

Por un lado está el programa SimHubWPF, que parece que lo que hace es que le dices el juego y configuras entradas y salidas, pero no se que genera
¿un fichero para arduino?
Por otro lado está SimHumNextionEditor que pemite una serie de pantallas. Supongo genera tambien código en arduino. Como mi pantalla no está
entre las posibles y son el doble de caras que la que he elegido, de momento no lo usaré.

Luego hay una carpeta de Arduino, que tiene los drivers en C de cada uno de los componentes, el driver de serie-USB y un configurador de los elementos que tienes.

Luego están los GamePlugins, que tiene poca cosa, como activar la telemetria y poco más.

Y por último la carpeta de plugingsdk que bien parece un programa en visualC o en C#.

Y aqui ya estoy perdido ¿donde está o se genera el código completo a cargar en la placa de arduino?

Yo el código para mi micro SAMD21 lo hago directamente en ATmelStudio. Tengo ya bastante software escrito en para ese micro y la cuestión es como pasarle los datos por USB desde el PC al micro.

Puedo hacer un programa de PC en QT que hablé con mi placa por USB (también he hecho ya varios), pero me falta saber donde cojo los datos en el PC del programa. Como se capturan los datos, si hay APIs que pueda llamar desde el programa en QT para interaccionar con los programas de simulación y no depender de que alguien haga el plugin de tal o cual juego.

Bueno, si alguien se anima.....
Avatar de Usuario
Vojvoda
Organización
Organización
Mensajes: 4367
Registrado: 12 Oct 2009 18:34
Volante: Fanatec CSW V2 + CSP V2
Contactar:

Re: Volante F1 RedBull 2016

Mensaje por Vojvoda »

Disculpa, pero me equivoqué con el nombre, no es SimHub es SimTools. -> https://www.xsimulator.net/simtools-mot ... -software/

Por otra parte quizás seas capaz de esnifar los datos directamente del simulador, en rFactor debes de crear una dll que se encargará de exportarlo, en otros juegos como Raceroom es posible leerlo directamente de la memoria compartida.
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

Hola:

Por fin me llegó la pantalla, casi dos meses.
Hoy empezaré la parte de la programación en el microcontrolador que manejará la pantalla y leerá los pulsadores y los rotarys.

Estoy navegando buscando respuestas a como realizar el programa de PC que coja los datos del juego y se los envíe a mi placa.

Los juegos en principio serian rfactor, iracing y automobilista.

En rfactor hay un ejemplo de plugin en http://rfactor.net/web/dl/rf1/InternalsPluginsV3.zip
Para iracing de momento he encontrado esto https://www.xsimulator.net/community/th ... dash.7029/

Para programar en PC he pensado en Qt que es lo que uso para C++. Antes usaba Pascal con Delphi. El Visual C++ no me gusta nada.

No sé si habrá gente en el foro que pueda echar una mano en esto de la programación de los "plugins" para los juegos.

Os iré contando conforme avanze.
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

He estado siguiendo el tema de hilo de software de captación de datos y he continuado alli con mis avances.
Como creo que cada cosa debe estar en su sitio y no dejar cosas a medias añado aqui lo que he puesto en ese hio

Por fin encontré lo que queria.
Después de analizar Simhub(por sugerencia de Vojvoda), SimDash de Symprojects, X-sim (por sujerencia de Psarias, de 900grados.es) no me convencia nada. Todo andaba enfocado a arduino, no se explica de donde salen las cosas, que se envia por el puerto serie (hay que ir buceando en los códigos de arduino), y con la premisa de hacer todo en código abierto, encontré en un foro la referencia a un trabajo de ArduinoRacingDash

El código en cuestión es
https://github.com/WarriorOfAvalon/ArduinoRacingDash
Lo primero que pensé era en usar la iRacingSdkWrapper.dll en mi entorno de programación en QT y tras pasar unas horas buscando y no tenerlo claro no me ha quedado mas remedio que aceptar usar C#.
Hay un pdf que explica bien el funcionamiento de la dll, e incluso he llegado a encontrar una versión en python que tampoco domino.

Me he instalado el Visual Studio 2017, pero me petaban los programas descargados, asi que he instalado el Visual Studio 2013 y voila, ya tengo un código en C# que saca los datos del juego y los puede enviar a mi pantalla.

La primera curiosidad que he visto es que el código espera una placa arduino, como la mia no es, menos mal que he visto el fuente y lo cambiaré para que use lo que yo quiera.

for (int i = 0; i < cbo.Items.Count; i++)
{
if (cbo.Items.ToString().Contains("Arduino"))
{
String port = Regex.Match(cbo.Items.ToString(), @"\(([^)]*)\)").Groups[1].Value;
console("Found Arduino On Port: " + port);
startMethod(port);

for (int j = 0; j < SerialPort.GetPortNames().Length; j++)
{
if (SerialPort.GetPortNames()[j].Equals(port))
startPort = j;
}

break;
}
}

Por otro lado tengo control total sobre que se envía a mi placa y en que posiciones.

public byte[] compile(Boolean spdUnit, int intensity){

int iSpeed = spdUnit ? Convert.ToInt16(Speed * 2.23693629) : Convert.ToInt16(Speed * (2.23693629 * 1.609344));
int iShift = Convert.ToInt16(Math.Round((Shift * 100 * 16) / 100));

serialdata[0] = 255;
serialdata[1] = Convert.ToByte((DeltaNeg << 7) | (intensity << 4) | 0);
serialdata[2] = Convert.ToByte(Gear + 1);
serialdata[3] = Convert.ToByte((iSpeed >> 8) & 0x00FF);
serialdata[4] = Convert.ToByte(iSpeed & 0x00FF);
serialdata[5] = Convert.ToByte((RPM >> 8) & 0x00FF);
serialdata[6] = Convert.ToByte(RPM & 0x00FF);
serialdata[7] = Convert.ToByte((Fuel >> 8) & 0x00FF);
serialdata[8] = Convert.ToByte(Fuel & 0x00FF);
serialdata[9] = Convert.ToByte(iShift);
serialdata[10] = Engine;
serialdata[11] = Convert.ToByte(Lap);
serialdata[12] = 0;
serialdata[13] = Convert.ToByte((Delta >> 8) & 0x00FF);
serialdata[14] = Convert.ToByte(Delta & 0x00FF);
serialdata[15] = Convert.ToByte(Mins);
return serialdata;

Espero tenerlo listo este fin de semana para el Iracing el leer los datos y mandarlos a mi pantalla.

Para los botones y rotarys he pensado en un software que los mapee como un jostick y asignarlos dentro del juego, pero eso es la segunda parte.

En cuanto tenga imágenes lo pongo, y si alguien se anima crearé un repositorio en Github (nunca lo he usado, supongo se podrá) para que pueda colaborar, y sino cuando lo termine lo colgaré de todos modos con todos los fuentes y referencias a los trabajos de donde he partido.
Última edición por jaht el 01 May 2017 20:55, editado 1 vez en total.
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

Sito2016 me ha aclarado lo de leer los botones con mi software.

viewtopic.php?f=107&t=10910&p=147487#p147454


De momento, gracias a este fin de semana largo ya he conseguido que me comunicara mi placa con el PC (me dio la lata el sábado que no se veia, al final tema de cloks de la placa), y luego me ha llevado unas cuantas horas añadir a la pantalla una fuente de letra mas grande de las que lleva nativas solo para la puñetera marcha (todo por un número) pero bueno, ya está funcionando con Iracing. Ahora a dar formato a los datos de tiempo. En el video que os pongo se envia la marcha, la vuelta, el fuel (que no se en que unidades está) y la velocidad.



En el vídeo se ven dos USB uno es el de cargar el software a la placa y el otro es el de comunicación de la placa con el PC

Voy a ir preparando también una placa con los botones y rotarys y los led para las revoluciones.
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

Bueno, esto va tomando forma. Aqui teneis como va quedando.
He partido de una foto impresa a tamaño real, recortado en dm de 5mm, forrado de vinilo de carbono chinesco, asideras laterales de una funda de volante chinesca y una carcasa para la pantalla dibujada en 3D e impresa en casa de una amigo.

Ahora queda la terminación de las empuñaduras, mejorar el pegado del vinilo, poner las placas electrónicas detrás, cablear todos los elementos, hacer un tape trasero con su adaptación a la base del G27 (las levas conservo las de este)

Imagen
Avatar de Usuario
nereida
Poleman
Poleman
Mensajes: 1674
Registrado: 30 Oct 2006 01:00
Volante: XBox 360 gamepad
Ubicación: ASTURIAS
Contactar:

Re: Volante F1 RedBull 2016

Mensaje por nereida »

.

norawena, jaht, ..va cogiendo forma el niño !!

Un saludo. :wink:

.
·
#TodoAcabaráYendoASuSitio
.
#JroñaKJroña
#Oikos
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

Unos pasos más.



Imagen

Un poco desastre el cableado, pero es el primer prototipo.

Imagen

La idea es terminarlo y con todo resuelto y funcionando, ver las mejoras (que serán muchas)
jaht
Espectador
Espectador
Mensajes: 19
Registrado: 10 Feb 2017 07:33
Volante: G27 con cambio

Re: Volante F1 RedBull 2016

Mensaje por jaht »

Bueno chicos, ya lo tenemos funcionando.

https://volantef1diyismajose.blogspot.c ... ion-1.html

Espero os guste, cualquier cosa que queráis saber solo tenéis que pedirla
Avatar de Usuario
nereida
Poleman
Poleman
Mensajes: 1674
Registrado: 30 Oct 2006 01:00
Volante: XBox 360 gamepad
Ubicación: ASTURIAS
Contactar:

Re: Volante F1 RedBull 2016

Mensaje por nereida »

.
Gracias por compartir tu trabajo, caballero.

Un saludo. :wink:

.
·
#TodoAcabaráYendoASuSitio
.
#JroñaKJroña
#Oikos
Responder