Intro
Utilisateur de Xplane depuis plus de 3 ans maintenant, je me suis dit qu'il était temps de bricoler à l'aide de quelques interrupteurs, de la colle et des clous, un tableau de bord me permettant d'ajouter des commandes supplémentaires au joystick actuellement utilisé le tout pour moins de 100 euros.Choix techniques :
Seulement les clous ne suffisent pas, il faut également un peu d'électronique et d'informatique. Mais rien de bien méchant à posteriori. Effectivement, un petit tour de piste du web m'a permis de découvrir que le micro-contrôleur Teensy permet facilement d'être programmé comme périphérique USB. Pour mon application, j'ai choisi le Teensy++2.0 car il possède une quarantaine d'entrées/sorties. Le site constructeur est le suivant : https://www.pjrc.com/teensy/.Pour se procurer ce bidule en France, j'ai trouvé pour l'instant qu'un seul revendeur : http://www.lextronic.fr/ . J'ai jusqu'à présent passé deux commandes chez eux et je n'ai pas eu à m'en plaindre. Dommage toutefois que seule la poste (colissimo) soit proposée pour les livraisons. Un service de relais colis m'aurait permis de gagner 4 à 5 jours de délais plutôt que d'attendre le samedi matin pour pouvoir enfin retirer mon colis à la poste...
Afin de mieux appréhender ce qu'il est possible de faire, un tour d'horizon sur des projets existants nous montre qu'à priori on doit même pouvoir faire le café... :
- switch panel (site en Allemand)
- Radio Module for X-Plane
- Garmin G1000 Emulator
- X-Plane Autopilot Panel
- ...
et bien sûr les forums sont une source immense de renseignements :
- forum x-plane.org (Low-cost hardware using Teensy USB boards)
- http://www.x-plane.fr/thread53808.html
- ...
Menuiserie :
Bref, après être rassuré sur la faisabilité du projet, nous pouvons commencer à scier quelques planches. Mais tout d'abord, un petit plan :Pour la menuiserie, des tasseaux de 13x38 feront le cadre et de l'aglo 'medium' de 3mm d'épaisseur sera parfait pour les faces.
Après quelques réflexions, voici les commandes choisies qui occuperont ce tableau de bord :
Électronique et câblage :
Maintenant, un peu de câblage nous attend. Faites chauffer le fer à souder...changement de fréquence radio :
Pour commencer, on va s'occuper de la partie des codeurs rotatifs (ceux qui serviront à changer les fréquences de la radio). Pour cela, j'ai opté pour ce type de codeurs : P23054-encodeur-lumineux-a-rotation-infini dont les plans se trouvent là.Ces codeurs sont rétro-éclairés par deux leds internes verte et rouge. J'ai choisi de prendre la couleur verte pour la partie radio et la couleur rouge pour la partie navigation. Pour le codage, il y a deux manières possibles: soit on utilise des bascules D (composant CMOS 40xx) pour le décodage du sens de rotation, soit un laisse le soin au micro-contrôleur Teensy de gérer cela par programme. Pour l'instant, nous choisirons la deuxième approche.
Le schéma de câblage pour les 4 encodeurs se composent de 4 résistances pour l'alimentation des leds intégrés. A noter que les valeurs de résistances sont plus importantes pour les leds vertes afin de réduire leur luminosité par rapport aux rouges.
et voilà le résultat :
Pour tester nos leds, on peut alimenter le montage en 5 volts :
Platine support pour le micro-contrôleur Teensy :
Nous allons ajouter au teensy deux barrettes de connections :Puis préparer sur un circuit imprimé "prototypage" la réception des fils et du connecteur teensy :
A noter que plutôt que d'opter pour un circuit imprimé, une autre solution aurait consisté à utiliser une nappe de 20 fils avec un connecteur femelle monté directement dessus.
Câblage :
En fouillant dans mes cartons, j'ai trouvé pour les fils un vieux câbles en nappe ainsi qu'un autre avec un connecteur 8 points très intéressant pour connecter les broches internes du Teensy. Ce dernier câble servait à raccorder 2 ports USB d'une carte mère vers la face avant d'un PC.A remarquer les 8 pins soudées en plus pour le raccordement de ce connecteur sur le Teensy ainsi que 2 autres pins pour déporter le bouton Reset du teensy. |
Je n'avais pas commandé assez de Pin lors de mon dernier achat, je suis allé à la déchetterie et j'ai pu y récupérer une vieille carte mère d'ordi sur laquelle j'ai récupéré ces connecteurs.
Côté platine d'accueil, voilà ce que cela donne :
Et enfin, les raccordements aux autres éléments :
Plus qu'à mettre le teensy:
Programmation du Teensy :
pré-requis :
- installer TeensyLoader : https://www.pjrc.com/teensy/loader.html
- installer le logiciel "Arduino" puis "Teensyduino" : https://www.pjrc.com/teensy/td_download.html
- installer le plugin pour xPlane : http://www.pjrc.com/teensy/td_flightsim.html (ancienne version), ou préférer la dernière version qui notamment permet de gérer des références xplane DataRefs de longueur supérieure à 58 caractères . Cette version se trouve sur github https://github.com/PaulStoffregen/X-Plane_Plugin/ , cliquer sur le bouton 'Download ZIP' et décompresser le fichier zip. Ensuite, utiliser le plugin xplane qui est dans le répertoire Target
un premier test :
Dans un premier temps, nous allons faire un programme juste pour repérer les branchements de chaque interrupteur. En effet, lors du câblage je n'ai peut être pas respecté exactement un ordre précis et maintenant mieux vaut vérifier qui est branché sur quoi. Vous remarquerez également que j'ai parfois sauté des Pins côté Teensy dans le but de garder les broches spécialisées (PWM -> Pulse Wave Modulation, AC/DC, etc ...). Ces broches pourront être utilisées plus tard comme par exemple un variateur d'éclairage du tableau de bord (sortie PWD), des manettes potentiomètres (convertisseur AN) pour le pas d'hélice, richesse carbu, etc...Bref, avant de fantasmer, repérons d'abord nos branchements.
Le programme est disponible à l'adresse suivante : https://github.com/Nicolou/cockpit/blob/master/testButtons/testButtons.ino.
Pour la manip du déversement du programme dans le Teensy, les instructions sont sur le site constructeur : https://www.pjrc.com/teensy/loader.html
Comme mentionné dans les pré-requis, n'oublions pas d'installer le logiciel de programmation Arduino ainsi que le plugin pour pouvoir y utiliser le Teensy : https://www.pjrc.com/teensy/tutorial.html
Pour visualiser le résultat du test, ouvrir une console afin de voir ce qui est écrit sur le port 'série' grace à la commande cat suivi du nom du périphérique.
exemples :
si le logiciel de programmation Arduino a été configuré en USB type: série
cat /dev/ttyACM0
ou en type Flight Sim Controls
cat /dev/hidraw4
Voici ce que cela donne chez moi :
A partir de là, voici le tableau récapitulatif des connexions
Pin number | ||
Button name | arduino style | C style |
BATTERY | 20 | B0 |
ALTERNATOR | 21 | B1 |
MAGENTO_STOP | 7 | D7 |
MAGENTO_LEFT | 8 | E0 |
MAGENTO_RIGHT | 9 | E1 |
MAGNETO_BOTH | 10 | C0 |
MAGNETO_START | 11 | C1 |
AVIONIC | 23 | B3 |
PUMP | 22 | B2 |
CARB HEAT | 19 | E7 |
NC1 | 5 | D5 |
NC2 | 4 | D4 |
LAND_LIGHT | 3 | D3 |
TAXY_LIGHT | 2 | D2 |
NAV_LIGHT | 1 | D1 |
STROB_LIGHT | 0 | D0 |
BEACON_LIGHT | 27 | B7 |
RADIO_SWITCH | 17 | C7 |
NAV_SWTICH | 14 | C4 |
RADIO_MHZ | 28,29 | PA0,PA1 |
RADIO_KHZ | 32,33 | PA4,PA5 |
NAV_MHZ | 30,31 | PA2,PA3 |
NAV_KHZ | 34,35 | PA6,PA7 |
LANDING_GEAR | 12 | C2 |
un deuxième test : les codeurs rotatifs
pour cela, on va utiliser la librairie "Encoder.h" comme indiqué dans l'exemple du site : https://www.pjrc.com/teensy/td_libs_Encoder.htmlEn adaptant le programme cité en exemple avec les numéros de pins correspondant au notre nous obtenons le code suivant : https://github.com/Nicolou/cockpit/blob/master/testEncoders/TwoKnobs/TwoKnobs.ino
Un déversement du programme dans le teensy et hop ! , le test s'avère concluant.
Maintenant, les choses sérieuses vont pouvoir commencer.
Programme pour Xplane :
Nous allons utiliser les spécifications du fichier dataref prévues pour la communication entre le cockpit Teensy et le logiciel Xplane.N'oublions pas d'installer le plugin xplane en le décompressant dans le répertoire de xplane à l'emplacement suivant ./Resources/plugins.
Mais d'abord, quelques explications sur les éléments utilisés dans le programme vont permettre de mieux comprendre son fonctionnement.
- Pour pouvoir utiliser la bibliothèque spécifique FlightSim de xplane, il faut, dans la configuration de l'éditeur de programme Arduino, aller dans le menu 'outil' -> 'usb type' et choisir 'Flight sim controls'
- Pour identifier les numéros de pins du teensy, nous utiliserons des constantes afin de définir ces numéros une seule fois et à un seul endroit du programme.
- En plus de la librairie 'Encoder.h'; nous utiliserons la librairie 'bounce.h'. Cette librairie permet de bien gérer les états des interrupteurs (anti- rebond, détection changement d'état, etc ... cf https://www.pjrc.com/teensy/td_libs_Bounce.html
- Lire la doc https://www.pjrc.com/teensy/td_flightsim.html
- Un programme 'Arduino' (ou teensy) se compose toujours d'une fonction setup() et d'une fonction loop().
Puis à compiler et déverser dans le teensy.
ça y est, la boi-boite est quasi terminée.Il me manque juste une prise USB femelle et un interrupteur poussoir (celui du reset) qui me permettront de fermer l'ensemble. |
Voilà, c'est Fini en ce qui concerne cette étape de prototypage. En espérant que cet article vous soit utile.
Nicolas Montarnal.