Joystick pour simulateur en USB avec arduino

Yoke USB
Dernière modification
mar 11/02/2020 - 19:18

L'évolution et l'adaptation USB du joystick.

J'ai longtemps cherché à créer une adaptation USB pour le joystick ( manche à balais pour simulateur de vol ) que je possédais.
Cela me permettrais :

  • d'améliorer la précision des commandes
  • d'augmenter le nombre de commande possible
  • d'utiliser des encodeur optique en lieu et place des potentiomètres

Je regardais pour cela le proget V-usb qui est une implémentation USB universel pour microcontroleur 8bit Atmel.

Seulement le temps de réaliser ce projet, j'ai découvert l'arduino. La facilité de prototypage et le cout réduit des plateformes m'ont séduit.
De plus le fait que certaine carte soit montée avec des micro ATmega32U comme interface USB permet à l'arduino de pouvoir être reconnu comme un joystick HID ( sans besoin de driver spécifique).

Afin d'avoir assez d'entrées et sorties, je me suis tourné vers l'arduino mega2560 V3 qui pocède un ATmega32U pour réaliser la liason série afin de communiquer avec le PC.

Passer la liaison serie de l'arduino mega en joystick HID grace à FLIP.

La programmation de l'arduino se passe normalement grace à l'IDE arduino. Cela me permet également de débugger et de voir si tout fonctionne normalement grace à la liaison série.
Une fois que tout est bon, on peut programmer le micro Atmega32U pour qu'il soit reconnu comme un joystique HID. Cela se réalise en passant le micro en mode DFU, au reset, il faut relier les 2 pin comme sur l'image pendant 1s.
Et grace au programme FLIP d'Atmel on programme le micro avec ce fichier : Arduino-big-joystick.hex

Yoke_Atmega_DFU.jpg

Le retour en arrière est possible grace au bootloader serie :  Arduino-usbserial-mega.hex

Les évolutions :

Dans le but d'avoir une meilleur résolution sur les axes X et Y et pour éviter les problème d'usure, je voulais passer par des encodeurs optiques.
C'est en démontant une imprimate que j'ai trouvé la solution. En effet, les imprimante jet d'encre utilise des encodeur optique afin de controler les différents moteurs présents dans l'imprimante et ainsi connaitre la position de :

  • la tête d'impression
  • la position du papier.

J'ai dons récuperé ce matériel et je l'ai adapter pour le réutiliser dans mon joystick.

Voici l'axe X

Et l'axe Y

Le principe est celui de l'encoder quadrature. J'ai donc utilisé cette blibliothèque quadrature qui fonctionne très bien si l'on utilise les sorties des encodeurs sur les " Interrupt Pins" de l'arduino mega.

Cela me permet une précision de l'ordre de 3000 pas sur la totalité de la course.

Ajout des boutons et encodeurs

J'ai décider dans cette nouvelle version, d'ajouter des boutons et led afin d'avoir un retour de position du joystick.
Pour cela j'ai réutilisé un ancien module d'une vielle imprimante jet d'encre que je possedais.

Il a fallu que je fasse du reverse processing pour pouvoir l'utiliser.

 

yoke_bouton.jpg

j'ai égalelement ajouté 3 encodeurs rotatif pour les trims des différents empennages.

J'ai ajouté un module de commande de gaz cablé sur les entrées analogiques grace à trois potentiomètre de 10k ohms.

yoke_gaz.jpg

Cela me permet de controler, les gaz, le mélange et le pas de l'hélice.

Prochaine évolution : Le force feedback ...

 

Étiquettes

Commentaires

Soumis par netokorn2000@g… (non vérifié) le jeu 05/03/2020 - 15:04

Permalien

hello friend help me to program this joystick, your project is very good, but the error in the compilation, I put all the libraries, but still the error. thanks

Arduino: 1.8.13 Hourly Build 2020/02/19 03:33 (Windows 7), Board: "Arduino Leonardo"

RFRWheel: 194: 59: error: macro "SendInputReport" requires 5 arguments, but only 4 given

     SendInputReport ((s16) turn, (u16) brake, (u16) accel, buttons);

                                                            ^

exit status 1
"SendInputReport" macro requires 5 arguments, but only 4 given

This report would have more information with
"Show detailed output during compilation"
option can be activated in "File -> Preferences"

Ajouter un commentaire