Contenus de la page
Introduction
Présentation du sujet
L’idée de ce projet est de réaliser un cockpit physique afin de pouvoir pousser la simulation de vol d’avions de chasse à son maximum.

Matériel
Le simulateur de vol est le jeu vidéo DCSWorld. Cette version du projet se limite à l’avion F/A-18C Hornet.
Quant à la partie physique du cockpit, elle est composée de :
- 1x ESP32
- 3x I/O Expander : PCF8574A
- 1x Analog Multiplexers : 74HC4051
- 6x switchs faits maison à 2 positions
- 6x switches faits maison à 3 positions
- 6x switches faits maison à plus que 3 positions
Réalisation
Conception
Panneaux latéraux
Les panneaux latéraux tels que visible sur la première image de la page ont été repris du projet OpenHornet. Ceci à permis d’assurer des dimensions similaires entre le cockpit simulé et le cockpit réalisé.
Ce projet met à disposition les trois panneaux (droit, gauche et devant) déjà modélisé. Le panneau droit disponible ressemble à :

Actionneurs
Les actionneurs du projet ont été refaits à la main. Les switches deux et trois positions ont été modélisé de la manière suivante :

Concernant les switches à plus que trois positions, ils ont été modélisé de la manière suivante :

Cependant, la conception des panneaux a été récupérée sur le projet OpenHornet, un projet OpenSource mettant à disposition les modèles des panneaux latéraux.
Certains sélecteurs ont demandez des ajouts particulier pour différentes raisons :
- limiter le débattement possible
- imposer un soulèvement pour permettre de passer à la position suivantes
- accueillir deux potentiomètres sur un seul axe
Électronique
Le but de projet étant de limiter le nombre de cartes électroniques nécessaire à la réalisation du cockpit, une manière de démultiplier le nombre de pins était nécessaire.
Pour cela, les PCF sont utilisé comme relais entre la carte et les switches permettant de réduire drastiquement le nombre de pins carte nécessaires. De cette manière, jusqu’à 7 PCF par carte peuvent être connectés via les pins de communication I2C et seuls deux pins de lecture sont nécessaires afin de connaître l’état des switches 2 et 3 positions. Les switches à plus que 3 positions fonctionnent de la même manière mais nécessite 8 pins de lecture.
Cependant, la lecture des états de chaque switches se faisant par scrutation, il n’est nécessaire d’avoir que 2 pins de lecture pour l’ensemble des switches 2 et 3 positions, et 8 pins de lecture pour l’ensemble des switches à plus que 3 positions.
Dans un deuxième temps, des PCB ont été realisé pour assurer le rétro-éclairage de chaque panneau via des leds RGB commander via le potentiomètre associé (CONSOLE)
Schéma électrique

PCB


Architecture du programme
Afin de réaliser la communication entre la partie physique et le simulateur, une grosse partie de la librairie DcsBios est utilisée. Cette librairie, normalement auto-suffisante dans le cadre d’un projet plus simpliste, est modifiée afin de répondre aux besoins de ce projet.
À l’heure actuelle, cette librairie se devrait se charger de la communication entre le simulateur et l’ordinateur, mais ceci n’est pas fonctionnel pour le moment. Pour assurer la communication entre l’ordinateur, la carte électronique et les composants, une autre librairie est utilisée : PCF8574.
Définitions des objets manipulés
L’assemblage des deux ainsi que la modification de certaines classes de la première librairie citée permet d’arriver à l’architecture suivante :

Fonctionnement général
Avec tout cela défini de cette manière, lorsque l’utilisateur active un switch, l’activation est détectée lorsque le programme a fait parcourir le courant dans le pin du PCF étant connecté à un des côté du switch qui met alors à jour la valeur stockée dans l’objet switch.
Ceci peut être résumé par le pseudo-code suivant :
// Fonction pour mettre à jour la valeur du switch
fonction Switch2Pos.update():
Activation Switch._pin
Switch._valeur <- Lecture PIN_OUT
Desactivation Switch._pin
Dans le cas de la lecture de l’état d’un switch à 3 positions, une disjonction de cas est effectué entre deux pins de sortie. Quant aux switches à plusieurs positions, les 8 pins de sorties sont parcourus jusqu’à trouver celui qui est actif. Les potentiomètres fonctionnent d’une manière identique, avec la lecture se faisant sur un pin de lecture analogique, sauf que la valeur courante est stocké dans l’objet « OwnMultiplex ».
Cette différence s’explique par le fait que sur un même PCF, des switches 2, 3 et plusieurs positions peuvent être reliés. L’analyse du résultat dépendant du nombre de positions possibles, le choix a été fait de stocker dans chaque switch leur valeur afin de limiter le nombre de disjonctions de cas. Ceci peut être revu afin de stocker la valeur des switches de la même manière que pour les potentiomètres.
Futur du projet
Amélioration
Pour pousser plus loin la version du projet qui existe aujourd’hui, quelques améliorations peuvent être apportés.
Côté informatique
Le code peut être revu afin de rassembler certaines classes notamment au niveau des définitions des switches qui, pour l’instant, sont répétitives entre les différents types qui existent.
De plus, il faut quasiment entièrement s’intéresser à la communication avec DCSWorld. Même si une librairie existe et semble pouvoir faire le travail nécessaire, à l’heure actuelle, le programme ne fait que récupérer les données mais ne les envoie pas au simulateur.
Côté électronique
Des PCB ont été réalisés pour ce projet, mais certains sont victimes de court-circuits. Il est donc nécessaire de retravailler le routage de certaines cartes afin de pouvoir proposer une version plus propre du projet.
Continuité
Si ce projet est amené à être poursuivis dans un cadre similaire au projet Makers, ou dans un cadre personnel, plusieurs choses sont déjà toutes faites afin de faciliter ceci.
Côté mécanique
Toute la partie conception est finie notamment grâce au modèle du projet OpenHornet sur lequel un modèle complet Fusion est disponible.
Quant aux switchs et aux potentiomètres, ceux déjà réalisés peuvent servir à compléter les panneaux de gauche et de face.
Côté informatique
Les switches du panneau droit étant fonctionnel, il reste à s’intéresser aux potentiomètres. Même si une solution est proposée, celle-ci n’a pas été testée.
Quant au reste du cockpit, il est nécessaire d’implémenter certains composants particuliers, tels que la manette des gaz ou les écrans.
Enfin, et comme déjà dit dans la partie Amélioration, il est nécessaire de s’intéresser à la communication avec le simulateur DCSWorld.
Côté électronique
Il s’agit du seul domaine où tout reste à faire. Cependant, une grande inspiration peut être prise sur ce qui a été réalisé sur le panneau droit.
Ressources
- OpenHornet : https://openhornet.com/
- DCS World : https://www.digitalcombatsimulator.com/fr/
- DcsBios github : https://github.com/DCS-Skunkworks/dcs-bios/tree/main
- PCF8574 documentation : https://www.ti.com/lit/ds/symlink/pcf8574a.pdf
- PCF8574 library : https://github.com/xreef/PCF8574_library#
- 74HC4051 documentation : https://www.alldatasheet.com/datasheet-pdf/view/26984/TI/74HC4051.html
- Github du projet : https://github.com/Timmilli/makers_F18