COCKPIT SUITELIVE HUB /

Atelier / FreeJoy et commandes USB

FreeJoy : créer ton panneau de cockpit USB sans écrire le firmware

Tu souhaites utiliser de vrais boutons et une manette des gaz dans ton simulateur sans programmer un contrôleur USB ? FreeJoy fournit les fonctions essentielles. Tu raccordes les composants à une carte compatible, règles leur comportement et affectes les commandes dans le simulateur. Un premier bouton qui fonctionne constitue déjà une étape utile.

Ce que tu auras à la finUn contrôleur USB planifié, des boutons et axes vérifiés, une configuration sauvegardée et des affectations compréhensibles dans le simulateur.

Contenu révisé le 18 octobre 2026

Ce que FreeJoy prend en charge

FreeJoy est un firmware librement disponible et configurable pour fabriquer des contrôleurs de jeu : boîtier de boutons, pédalier, joystick ou commande des gaz. Le configurateur permet d'attribuer les broches, de choisir le comportement des interrupteurs et de calibrer les axes sans écrire ces fonctions toi-même.

Il économise du travail sur les rapports USB et le traitement des entrées. Il reste à concevoir la mécanique, réaliser le câblage et définir les affectations du jeu. Commence par un bouton dont tu peux observer la réaction, puis complète progressivement. Pour un afficheur programmé sur mesure, consulte aussi le guide IA et programmation : c'est une autre voie, complémentaire.

Vérifier la carte et les versions

Le projet d'origine vise le STM32F103C8, généralement installé sur une Blue Pill. La couleur ne garantit rien : une Black Pill F401/F411, un ESP32 ou un Arduino Uno ne peut pas recevoir indifféremment le même firmware. Vérifie le marquage du composant, le schéma, la mémoire nécessaire et la cible du fichier. Un clone ressemblant à la carte indiquée n'est pas automatiquement validé.

ST spécifie officiellement 64 Ko de mémoire Flash pour le F103C8. Le fichier 1.7.3b0 examiné ici comme données reste dans cette plage ; aucune extension supposée à 128 Ko n’est nécessaire. Il faut néanmoins vérifier la carte réelle et suivre la procédure d’installation adaptée.

Au 18 octobre 2026, les pages officielles présentent le firmware v1.7.3b0 et le configurateur Qt 1.7.3b0 comme dernières versions, sous le titre 1.7.3. Utilise un ensemble cohérent. Les notes de version mentionnent notamment un ancien changement de broches I²C : ne recopie pas un vieux schéma sans vérifier. Le comparatif des microcontrôleurs aide à choisir ; une fréquence supérieure ne remplace pas la compatibilité.

USB HID, DirectInput et boutons DX

HID signifie Human Interface Device. Avec le firmware adapté, FreeJoy se présente comme un contrôleur de jeu USB et utilise l'infrastructure HID de Windows. Le configurateur n'a pas besoin de rester ouvert pendant l'utilisation normale des commandes. Tu peux connecter le panneau, vérifier sa reconnaissance et utiliser les affectations sauvegardées.

DirectInput est une interface Windows permettant aux jeux de lire des contrôleurs. Un « bouton DX » représente une touche de joystick, pas une commande prête à sortir le train d'atterrissage. Cette signification vient de l'affectation dans le simulateur. XInput est différent : un jeu limité à XInput peut ignorer le périphérique. Un ancien simulateur peut également gérer moins de boutons que FreeJoy. Vérifie donc le jeu cible avant de construire un grand panneau.

Préparer un petit panneau de cockpit

Notre exemple comprend quatre poussoirs, un interrupteur à maintien, un encodeur avec poussoir et un potentiomètre linéaire de 10 kΩ. L'objectif est d'obtenir quatre commandes distinctes, deux actions séparées marche/arrêt, deux directions de réglage et un axe continu. Vérifie d'abord que le véhicule du simulateur expose les commandes souhaitées.

Le tableau propose une affectation pour une Blue Pill adaptée et une configuration neuve. Les entrées numériques sont réglées sur Button_Gnd ; chaque contact ferme vers la masse commune. Les extrémités du potentiomètre vont au 3,3 V et à GND, son curseur à A0. Effectue le câblage hors tension et contrôle le brochage de ta carte. Réserve les broches USB, de programmation et des interfaces déjà utilisées.

Exemple de plan pour un petit panneau USB
CommandeBroches proposéesRésultat attendu
Quatre poussoirsB12, B13, B14, B15 → GNDQuatre boutons normaux distincts
Interrupteur à maintienB5 → GNDDeux impulsions : fermeture / ouverture
Encodeur et poussoirA/B sur B6/B7 ; poussoir B8 ; masse communeUn bouton par sens et un pour l’appui
Potentiomètre linéaire 10 kΩ3,3 V / curseur A0 / GNDAxe calibré sans centrage

De la carte vierge au premier bouton

Sur un contrôleur existant, sauvegarde la configuration et relève la version avant toute modification. Pour une carte vierge, le projet décrit une première programmation par ST-Link ou USB-UART. Suis les instructions officielles correspondant au mode de démarrage, à l'alimentation et au fichier utilisé. Un câble USB ne suffit pas à transformer une carte vierge en contrôleur FreeJoy. Le guide firmware explique cette étape.

Lis ensuite la configuration du périphérique, attribue B12 à Button_Gnd et utilise « Write Config to Device ». Appuie sur le premier poussoir, repère son numéro physique, puis associe-le à un bouton logique normal. Écris de nouveau et vérifie. « Save Config to File » conserve une sauvegarde sur le PC ; cette action ne remplace pas l'écriture dans la carte. Débranche et rebranche pour confirmer que le réglage est conservé.

Distinguer contacts physiques et boutons logiques

Le bouton physique correspond au contact détecté ; le bouton logique est le signal envoyé au PC. Leurs numéros peuvent différer. Note séparément le composant, son entrée et sa sortie logique. Un même contact peut alimenter plusieurs fonctions. ToggleSwich_On peut produire une impulsion à la fermeture d'un interrupteur, ToggleSwich_Off à son ouverture. Cela permet deux affectations distinctes si le simulateur propose réellement marche et arrêt.

Button_normal suit le contact, tandis que Button_Toggle alterne un état mémorisé. L'antirebond supprime les transitions parasites ; Delay Timer retarde l'activation ; Press Timer règle sa durée logique lorsque le mode l'utilise. Pars des valeurs proposées et modifie un paramètre à la fois. Un antirebond excessif peut ignorer un appui bref ; une longue impulsion peut devenir une commande maintenue. Teste aussi le démarrage lorsque l'interrupteur est déjà enclenché.

Ajouter des fonctions et des entrées

Le projet annonce jusqu'à 128 entrées numériques, huit axes, quatre chapeaux POV et cinq modificateurs Shift. Ces limites ne garantissent pas toutes les combinaisons simultanées sans conflit de broches. Les groupes Radio conservent une sélection ; les modes séquentiels parcourent des fonctions ; Shift ajoute une couche d'affectations. Identifie ces modes sur la façade pour les retrouver en vol.

Une matrice économise des broches mais exige des lignes, colonnes et diodes conformes au schéma. Vérifie plusieurs appuis simultanés. Les registres 74HC165 et CD4021 sont documentés avec Clock, Data et Latch ; le projet recommande une alimentation de 3,3 V. Le 74HC595 est différent et ne constitue pas un remplacement pour ces entrées. Le guide des commandes physiques aide à choisir les composants avant de multiplier les connexions.

Les fonctions documentées comprennent aussi quatre canaux PWM d’éclairage et jusqu’à 24 LED individuelles ou en matrice. La version 1.7.3 ajoute les LED adressables WS2812b/PL9823, leur activation par bouton, des temporisations pour LED monochromes et leur commande externe via USB HID ou le configurateur. Le projet annonce jusqu’à 50 LED adressables. Des rapports UART TX peuvent alimenter des appareils externes en données. Cela ne fournit pas automatiquement la télémétrie du simulateur ni une intégration Cockpit Suite vérifiée.

Encodeurs : tourner et appuyer

Un encodeur incrémental fournit deux signaux décalés permettant de connaître le sens de rotation. FreeJoy peut produire deux boutons logiques ou modifier un axe. Son poussoir reste un contact séparé. La documentation distingue jusqu'à 15 encodeurs ordinaires et un rapide : Fast_Encoder utilise A8 et A9. Dans notre exemple, un encodeur ordinaire emploie B6/B7 et son poussoir B8.

Attribue Encoder_A et Encoder_B selon la documentation. Tourne de dix crans lentement dans chaque sens, puis plus vite, et compare les pas obtenus. Sens inversé, doublons et pertes ne demandent pas le même diagnostic : canaux, type d'encodeur, contacts ou temporisation. Le wiki indique 10 ms par défaut et recommande une durée d'impulsion inférieure à 50 ms. Ce n'est pas une valeur optimale garantie dans tous les jeux.

Axes : du capteur à la course utile

Déclare A0 comme source analogique du potentiomètre et associe-la, par exemple, à l'axe logique X. Désactive les axes inutilisés. FreeJoy documente aussi certains capteurs numériques, dont AS5600 et des variantes TLE501x, ainsi que les convertisseurs ADS1115 et MCP3201/02/04/08. Référence exacte, interface et canal comptent : cela n'autorise pas n'importe quel module Hall ou I²C.

Observe le signal brut avant de calibrer : sa progression doit correspondre au déplacement. Lance la calibration, atteins les limites mécaniques réellement disponibles et sauvegarde. Une commande à rappel central nécessite aussi sa position de repos ; une manette des gaz n'a normalement pas besoin d'un centre artificiel. Les entrées analogiques internes ont une résolution de 12 bits. Agrandir la plage numérique USB n'améliore pas la précision du capteur.

Régler zones mortes, filtres et courbes

Une zone morte centrale élimine les petites variations autour du repos. Une zone morte dynamique concerne les petites variations autour de la valeur courante. Toutes deux peuvent masquer des mouvements voulus : commence modestement. Les sept niveaux de filtre lissent le signal mais ajoutent du retard ; le projet déconseille les niveaux supérieurs à 3 pour les axes sensibles au temps de réponse. Aucun filtre ne répare une connexion défectueuse.

L'inversion change le sens. Les courbes modifient la sensibilité le long de la course. Prescaler, combinaison d'axes, modification ou recentrage par boutons et génération de boutons à partir de plages d'axe sont également documentés. Obtiens d'abord une réponse linéaire fiable. Ajoute ensuite seulement la fonction nécessaire et sauvegarde avant de comparer. Les courbes dans FreeJoy et celles du simulateur se combinent, ce qui complique l'interprétation.

Vérifier dans le simulateur et rechercher les pannes

Ouvre joy.cpl sous Windows et les propriétés du contrôleur. Commence par les petits numéros de boutons et l'axe de l'exemple. L'affichage classique peut être incomplet pour un grand nombre de boutons ; ce n'est pas nécessairement une panne. Affecte ensuite une seule fonction dans le simulateur et teste appui, maintien, relâchement, reconnexion et redémarrage. Aucun bouton voisin ne doit réagir.

Contact brut absent : vérifie câblage et mode de broche. Contact physique correct mais sortie absente : vérifie affectation, Shift et temporisations. Windows réagit mais pas le jeu : examine périphérique sélectionné, limite de boutons et doublons. Un état réel de train destiné à une LED ou un OLED exige une télémétrie de retour séparée. Même les sorties LED et la commande par le PC documentées nécessitent une intégration adaptée. Consulte les entrées USB et le diagnostic.

Faire avancer ton projet avec la communauté

Conserve la configuration, le plan des broches et une note de test à chaque étape réussie. Une demande précise aide : « B12 fonctionne physiquement, bouton logique 1 inactif, versions 1.7.3b0, Shift désactivé ». Sur le forum Cockpit Suite, nous aidons aussi pour les boîtiers imprimés en 3D, les façades usinées sur CNC et les travaux laser avec LightBurn.

Cockpit Suite est un jeune projet avec un logiciel déjà disponible pour les simulateurs et appareils pris en charge. Notre objectif est un environnement commun et une mise en route simple ; cela ne constitue pas une promesse non vérifiée d'intégration FreeJoy. Nous souhaitons chercher une solution avec toi et répondre le jour même lorsque possible, parfois plus tard pour les questions tardives. Les expériences de la communauté européenne et d'ailleurs font progresser les guides. Un premier montage bien documenté compte déjà.

Sources primaires et versions

Vérification du 18 octobre 2026. Fonctions issues des documentations du projet et de Microsoft. Le plan et les essais proposés sont notre exemple, pas un kit validé physiquement.

Poursuivre ton montage