COCKPIT SUITELIVE HUB /

Taller / FreeJoy y entradas USB

FreeJoy: tu panel USB de cabina sin escribir el firmware

¿Quieres botones reales y una palanca de gases en tu simulador sin programar un controlador USB? FreeJoy resuelve muchas funciones básicas. Conecta los componentes adecuados a una placa compatible, configura su comportamiento y asigna las entradas en el simulador. Empieza con un botón y amplía el montaje después de comprobar cada paso.

Lo que tendrás al terminarUn controlador USB planificado, con botones y ejes comprobados, configuración guardada y asignaciones claras en el simulador.

Contenido revisado: 18 de octubre de 2026

Qué trabajo te ahorra FreeJoy

FreeJoy es un firmware de libre disponibilidad y configurable para construir dispositivos de juego: botoneras, pedales, joysticks o palancas de gases. El configurador permite asignar pines, elegir cómo funcionan los interruptores, calibrar ejes y transferir los ajustes sin escribir personalmente esas funciones.

Ahorra trabajo con informes USB, lectura de entradas y lógica habitual. La mecánica, el cableado y las asignaciones del juego siguen formando parte del proyecto. No necesitas experiencia programando para empezar: conecta un botón y observa su respuesta antes de añadir otro. Para crear una pantalla con código propio, la guía de IA y programación explica otra vía que puede complementar tu panel.

Comprueba la placa y las versiones

El proyecto original está dirigido al STM32F103C8, normalmente en una placa Blue Pill. El color no demuestra compatibilidad: una Black Pill F401/F411, un ESP32 o un Arduino Uno no pueden recibir indistintamente ese firmware. Comprueba la referencia del chip, esquema, memoria necesaria y destino exacto del archivo. Un clon de aspecto parecido tampoco queda aprobado automáticamente.

ST especifica oficialmente 64 KB de memoria flash para el F103C8. El archivo de la versión 1.7.3b0 examinado aquí como datos permanece dentro de ese espacio; no necesita suponer una ampliación a 128 KB. Sigue siendo necesario comprobar la placa real y utilizar el procedimiento de instalación adecuado.

El 18 de octubre de 2026, las páginas oficiales señalan el firmware v1.7.3b0 y Qt Configurator 1.7.3b0 como versiones más recientes, tituladas 1.7.3. Utiliza versiones compatibles entre sí. No copies una configuración o esquema antiguo sin revisarlo: las notas documentan un cambio anterior de pines I²C. La comparación de microcontroladores ayuda a elegir. Una CPU más rápida no soluciona la incompatibilidad de firmware.

USB HID, DirectInput y botones DX

HID significa Human Interface Device. Con el firmware adecuado, FreeJoy aparece como controlador de juego USB y utiliza la infraestructura HID de Windows. El configurador no necesita permanecer abierto durante el uso normal de las entradas. Esto facilita conectar el panel y utilizar las asignaciones que ya guardaste.

DirectInput es una interfaz de Windows con la que los juegos pueden leer controladores. Un «botón DX» es una entrada de joystick, no una orden ya preparada para bajar el tren de aterrizaje. La asignación en el simulador le da ese significado. XInput es otra interfaz: un juego que solo admita XInput puede no reconocer este dispositivo. Algunos simuladores antiguos también aceptan menos botones. Prueba el juego concreto antes de diseñar un panel grande.

Planifica un panel de cabina manejable

El ejemplo utiliza cuatro pulsadores, un interruptor mantenido, un encoder incremental con pulsador y un potenciómetro lineal de 10 kΩ. Buscamos cuatro órdenes independientes, encendido y apagado separados para una función disponible, dos sentidos de ajuste y un eje continuo. Comprueba previamente que el vehículo del simulador ofrece esas asignaciones.

El plan propone pines para una Blue Pill adecuada con configuración nueva. Configura las entradas digitales indicadas como Button_Gnd y cierra sus contactos hacia una masa común. Los extremos del potenciómetro van a 3,3 V y GND; el cursor a A0. Cablea sin alimentación. Revisa las etiquetas y funciones de tu placa y reserva los pines USB, de programación y de cualquier interfaz ya utilizada.

Plan de ejemplo para una botonera USB pequeña
ElementoPines propuestosRespuesta esperada
Cuatro pulsadoresB12, B13, B14, B15 → GNDCuatro botones normales independientes
Interruptor mantenidoB5 → GNDDos pulsos: cerrar / abrir
Encoder y pulsadorA/B en B6/B7; pulsador B8; masa comúnUn botón por sentido y otro al pulsar
Potenciómetro lineal 10 kΩ3,3 V / cursor A0 / GNDEje calibrado sin centrado

De la placa vacía a la primera entrada

Antes de modificar un controlador existente, guarda su configuración y anota su firmware. Para una placa vacía, el proyecto documenta la programación inicial mediante ST-Link o USB-UART. Sigue la guía oficial correspondiente al modo de arranque, alimentación y archivo elegido. Un cable USB por sí solo no convierte una placa vacía en FreeJoy. Encontrarás contexto en entender y cargar firmware.

Lee la configuración del dispositivo, asigna primero B12 como Button_Gnd y pulsa «Write Config to Device». Acciona el botón y localiza su número físico. Asígnalo a un botón lógico normal, vuelve a escribir y verifica. «Save Config to File» crea una copia en el ordenador; no sustituye la escritura en el dispositivo. Desconecta y conecta de nuevo para comprobar que el ajuste permanece antes de ampliar el cableado.

Contactos físicos y botones lógicos

El botón físico representa un contacto detectado; el lógico es la señal que recibe el ordenador. Los números pueden ser distintos. Anota componente, entrada física y salida lógica por separado. Un contacto puede participar en varias funciones. En un interruptor mantenido, ToggleSwich_On puede producir un pulso al cerrar y ToggleSwich_Off otro al abrir. Utiliza órdenes separadas de encendido y apagado solo si el simulador realmente las proporciona.

Button_normal sigue el contacto; Button_Toggle alterna un estado memorizado. El antirrebote rechaza oscilaciones de contacto; Delay Timer retrasa la activación y Press Timer fija su duración lógica cuando corresponde. Empieza con los valores predeterminados y cambia un parámetro cada vez. Un antirrebote excesivo puede perder pulsaciones breves; un pulso largo puede mantener una orden del juego. Prueba también el arranque con el interruptor ya activado.

Más funciones y más conexiones

FreeJoy documenta hasta 128 entradas digitales, ocho ejes, cuatro POV y cinco modificadores Shift. Son límites funcionales, no una garantía de utilizar simultáneamente todas las opciones sin conflictos de pines o recursos. Los grupos Radio mantienen una selección; los modos secuenciales recorren funciones y Shift permite otra capa de asignaciones. Etiqueta esas capas para encontrarlas durante una sesión.

Puedes ampliar mediante pines directos, una matriz o registros de desplazamiento compatibles. La matriz necesita filas, columnas y diodos según el esquema; comprueba varias pulsaciones simultáneas. Los 74HC165 y CD4021 utilizan Clock, Data y Latch configurados para el componente concreto. La documentación recomienda 3,3 V. Un 74HC595 cumple otra función y no es un sustituto de entrada. Consulta elementos de mando para escoger los controles físicos.

Otras funciones documentadas incluyen cuatro canales PWM de iluminación y hasta 24 LED individuales o en matriz. La versión 1.7.3 añade LED direccionables WS2812b/PL9823, activación por botones, temporizadores para LED de un solo color y su control externo mediante USB HID y el configurador. El proyecto indica hasta 50 LED direccionables. Los informes UART TX pueden enviar datos a dispositivos externos. Estas funciones no aportan automáticamente telemetría del simulador ni una integración comprobada con Cockpit Suite.

Encoders: girar no es pulsar

Un encoder incremental entrega dos señales desfasadas que indican el sentido. FreeJoy puede convertirlas en dos botones lógicos o cambios de un eje. El pulsador integrado es un contacto independiente. La documentación distingue hasta 15 encoders normales y uno rápido; Fast_Encoder utiliza A8 y A9, no cualquier pin libre. Nuestro ejemplo emplea B6/B7 para el encoder normal y B8 para su pulsador.

Asigna Encoder_A y Encoder_B siguiendo la guía. Gira diez pasos lentamente en cada sentido y repite más rápido, comparando las entradas obtenidas. Sentido invertido, pasos dobles y pérdidas tienen causas distintas: canales, modelo del encoder, calidad de contactos o tiempos. El wiki indica 10 ms de duración por defecto y recomienda menos de 50 ms. No es una duración óptima garantizada para todos los simuladores: modifica según pruebas repetibles.

Ejes: del sensor al recorrido útil

Configura A0 como fuente analógica y asígnala a un eje lógico, por ejemplo X. Desactiva los ejes no utilizados. FreeJoy también documenta sensores digitales como AS5600 y ciertas variantes TLE501x, además de ADC externos ADS1115 y MCP3201/02/04/08. Importan referencia exacta, interfaz, canal y versión; esto no implica que cualquier módulo Hall o I²C sea compatible.

Observa primero el valor bruto: debe cambiar de forma coherente con el movimiento. Inicia la calibración, recorre los límites mecánicos reales y guarda el resultado. Un eje autocentrado necesita registrar también el reposo; una palanca de gases normalmente no requiere centro artificial. Las entradas analógicas internas tienen resolución de 12 bits. Una escala USB con números mayores no crea precisión adicional ni mejora la mecánica.

Ajustar zonas muertas, filtros y curvas

La zona muerta central elimina pequeñas oscilaciones alrededor del reposo; la dinámica actúa sobre cambios pequeños alrededor del valor actual. Ambas pueden ocultar movimientos intencionados, así que empieza con poco. Los siete niveles de filtro suavizan pero añaden retraso; el proyecto desaconseja niveles superiores a 3 en ejes críticos para la respuesta. Un filtro fuerte no repara una conexión floja.

La inversión cambia el sentido. Las curvas modifican la sensibilidad a lo largo del recorrido. Prescaler, ejes combinados, acciones de botones para modificar, centrar o restablecer ejes y botones generados por zonas de eje son otras herramientas documentadas. Consigue primero una respuesta lineal fiable. Después añade únicamente lo necesario y compara con la configuración guardada. Las curvas del firmware y del simulador se combinan, complicando el diagnóstico.

Probar en el simulador y localizar fallos

Abre joy.cpl en Windows y las propiedades del controlador. Empieza por los botones con números bajos y el eje de ejemplo. La pantalla clásica puede no representar todos los botones de un dispositivo grande; eso no demuestra un fallo. Asigna después una función del simulador y prueba pulsación, mantenimiento, liberación, reconexión y reinicio. Ninguna entrada vecina debería activarse.

Si falta el contacto bruto, revisa cableado y modo del pin. Si funciona físicamente pero no lógicamente, revisa asignaciones, Shift y temporizadores. Si Windows responde pero el juego no, comprueba dispositivo seleccionado, límites y asignaciones duplicadas. El estado confirmado del tren para una LED u OLED necesita un canal de telemetría de retorno. Las salidas LED y el control desde el PC documentados también requieren una integración adecuada. Amplía en entradas USB y diagnóstico.

Desarrolla tu proyecto con la comunidad

Guarda configuración, esquema de pines y una breve prueba tras cada avance. Una consulta útil sería: «B12 responde físicamente, botón lógico 1 no; ambas versiones 1.7.3b0; Shift desactivado». En el foro de Cockpit Suite ayudamos también con cajas impresas en 3D, paneles fresados con CNC y trabajos láser mediante LightBurn.

Cockpit Suite es un proyecto joven con software ya disponible para dispositivos y simuladores compatibles. Buscamos una plataforma común y una puesta en marcha sencilla para combinaciones admitidas; no es una promesa sin comprobar de integración FreeJoy. Queremos acompañarte cuando surjan dificultades y responder el mismo día cuando sea posible, a veces más tarde si preguntas a última hora. Las experiencias de la comunidad europea y de otras regiones mejoran las guías. Tu primer botón bien documentado ya puede aportar algo.

Fuentes primarias y versiones

Comprobado el 18 de octubre de 2026. Funciones basadas en la documentación del proyecto y de Microsoft. El plan y las pruebas son un ejemplo propio, no un kit validado físicamente.

Continúa tu montaje