Différences entre versions de « Projets:Interfaces XAC »

De wikiup
Sauter à la navigation Sauter à la recherche
 
(109 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
{{Infobox projet
 +
|Image principale=Mini Host Usb Soude.jpg
 +
|Description=Réaliser et mettre oeuvre une solution logicielle et hardware pour connecter des interfaces de type Joystick à une XAC
 +
|Porteur de projet=Jonathan
 +
|Contributeurs=Elektron
 +
|Fabmanager=Delphine
 +
|Référent documentation=Elektron, Delphine
 +
|Catégorie de handicap=Motricité
 +
|Etat d'avancement=Réalisés
 +
|Statut de la documentation=Complète
 +
|Relecture de la documentation=Non vérifiée
 +
|Techniques=teensy
 +
|Durée de fabrication=de 4 à 8 h
 +
|Coût matériel=Moins de 50 euros
 +
|Licence=by-sa
 +
|Projet date=2019-10-10
 +
|Nom humanlab=Humanlab_MHK
 +
}}
 +
== Description du projet ==
 +
Réaliser et mettre oeuvre une solution logicielle et hardware pour connecter des interfaces de type Joystick à une [https://www.xbox.com/en-US/xbox-one/accessories/controllers/xbox-adaptive-controller XAC (Xbox Adaptive Controller)]
  
Projet interface XAC
+
Un boitier et une nouvelle carte on été réalisé pour Chloé.
 
+
Cette réalisation s'appuie sur les éléments présents de cette page :
 
 
 
 
== Description du projet ==
 
Réaliser et mettre oeuvre une solution logicielle et hardware pour connecter des interfaces de type Joystick à une XAC (Xbox Adaptive Controller).
 
  
 +
[[Projets:Boitier_Souris_Vers_XAC|Boitier Souris Vers XAC]]
  
 +
===Synoptique des différentes configurations possibles===
 
On doit pouvoir se connecter sur les entrées arrières X1,X2 ou sur les entrées USB Gauche et Droite.
 
On doit pouvoir se connecter sur les entrées arrières X1,X2 ou sur les entrées USB Gauche et Droite.
  
<gallery mode="packed-hover" heights="200px">
+
Plusieurs types de dispositifs
File:JPS Ensemble Vue-01.jpg
+
* [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick Proportionnel Sensible (JPS)]] ou Arduino sur Entrées Arrières X1 ou X2
File:Interfaces XAC.png
+
* [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick JPS]] ou Arduino sur Teensy LC connectée comme Joystick à une entrée USB XAC
File:XAC.jpg
+
* [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick JPS]] ou arduino sur Arduino Micro Pro connectée comme Joystick à une entrée USB XAC
</gallery>
+
* Souris avec ou sans fil ou Souris au-travers de R-Net BT connectées comme Joystick à une entrée USB XAC
  
  
<gallery mode="slideshow" heights="700px">
+
[[File:Interfaces XAC.png|900px]]
File:JPS Ensemble Vue-01.jpg
 
File:Interfaces XAC.png
 
File:XAC.jpg
 
</gallery>
 
  
* Fournir plusieurs types de dispositifs
+
[[File:XAC.jpg|400px]] [[File:JPS Ensemble Vue-01.jpg|400px]]
** Joystick [[Projets:JPS_Joystick_Proportionnel_Sensible|JPS]] ou Arduino sur Entrées Arrières X1 ou X2
 
** Joystick [[Projets:JPS_Joystick_Proportionnel_Sensible|JPS]] ou Arduino sur Teensy LC connectée comme Joystick à une entrée USB XAC
 
** Joystick [[Projets:JPS_Joystick_Proportionnel_Sensible|JPS]] ou arduino sur Arduino Micro Pro connectée comme Joystick à une entrée USB XAC
 
** Souris avec ou sans fil ou Souris au-travers de R-Net BT connectées comme Joystick à une entrée USB XAC
 
  
 
== Analyse de l'existant ==
 
== Analyse de l'existant ==
  
 
== Equipe (Porteur de projet et contributeurs) ==
 
== Equipe (Porteur de projet et contributeurs) ==
 
+
* Christian (Concepteur)
 
* Jonathan (Porteur de projet)
 
* Jonathan (Porteur de projet)
* Contributeurs
+
* Delphine (Fabmanager référent)
* Animateur (Coordinateur du projet)
+
* Delphine & Christian (Documentation)
* Fabmanager référent
 
* Responsable de documentation
 
* Christian (Concepteur)
 
  
 
== Matériel nécessaire ==
 
== Matériel nécessaire ==
  
Carte Teensy LC.
+
* Carte Teensy LC. ou Carte Arduino Micro-pro selon la configuration souhaitée
 
+
* Carte Mini Host Usb
Carte Arduino Micro-pro
 
 
 
Carte Mini Host Usb
 
  
 
==Outils nécessaires==
 
==Outils nécessaires==
Imprimante 3d
+
* Imprimante 3d (si réalisation d'un [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick Proportionnel Sensible(JPS))]]
IDE Arduino 1.89
+
* IDE Arduino 1.89 ou 1.10
TeensyDuino 1.46
+
* TeensyDuino 1.46 ou 1.48
  
 
==Coût==
 
==Coût==
Ligne 58 : Ligne 62 :
  
 
==Fichiers source==
 
==Fichiers source==
'''Attention pour que le fichier compile il ne faut pas oublier de configurer depuis IDE Arduino>Outil>USB type>Serial+keyboard+Mouse+Joystick '''
 
 
  
 
===Schémas===
 
===Schémas===
Ligne 72 : Ligne 74 :
 
</gallery>
 
</gallery>
  
 +
===Préparation de l'environnement ===
 +
* Installer l'IDE Arduino (1.8.10)
 +
* Installer [https://www.pjrc.com/teensy/td_download.html teensyduino 1.48] (attention seulement compatible avec certaines versions d'Arduino)
 +
 +
==== Dossiers à placer dans le dossier des librairies Arduino====
 +
Deux librairies sont à ajouter : Joystick1 (version modifiée de la librairie xac-mouse2joy, et USB_Host_Shield_20)
 +
 +
[[Media:Lib-189.zip|Télécharger les librairies et les ajouter au dossier Libraries de Arduino]]
  
 +
La librairie USB_Host_Shield_20 permet de configurer les boutons en leur assignant des numéros qu'on retrouve dans l'interface XAC ou interface de la console. C'est dans le fichier MouseParser.h du sketch qu'on assigne ces boutons.
 +
 +
Le développement de ce code a été modifié par Christian Fromentin MHK Rennes.
 +
 +
(A retrouver : Voir le fichier "Regarde-moi.txt" dans le dossier XAC-Joystick)
 +
 +
=====Sources librairies avant modification=====
 +
https://github.com/felis/USB_Host_Shield_2.0
 +
 +
https://github.com/gdsports/xac-mouse2joy/blob/master/joystick_teensy_20181205.zip
 +
 +
====Fichiers à placer dans le répertoire du logiciel /../Arduino/Hardware ====
 +
Précaution : Faire un backup des fichiers originaux avant de les remplacer. En effet ce changement de configuration vient modifier les headers de certains fichiers lors de la compilation.
 +
 +
[[Media:A deposer dans Arduino Hardware 189.zip|A deposer dans Arduino>hardware]]
 +
 +
======Sur windows======
 +
C>Program Files (x86)>Arduino>hardware
 +
 +
======Sur Linux======
 +
Selon où et comment le programme a été installé, peut être dans :
 +
 +
Ordinateur>opt>arduino-1.8.10>hardware
 +
 +
Pour être  certain d'être dans le bon dossier, vérifier que le dossier contient l'ensemble des dossiers (examples, hardware,java,lib, libraries,reference,tools,tools-builder)
  
 
===Code Arduino===
 
===Code Arduino===
 +
'''Attention pour que le fichier compile il ne faut pas oublier de configurer depuis IDE Arduino>Outil>USB type>Serial+Joystick
 +
 +
Si cette option n'est pas visible, c'est que les librairies sont mal ou pas installées.
 +
 
* Les fichiers ".Ino" pour le firmware des cartes :
 
* Les fichiers ".Ino" pour le firmware des cartes :
 
** BT Hid vers XAC ou Pc sans envoie sur le port série carte Teensy LC :
 
** BT Hid vers XAC ou Pc sans envoie sur le port série carte Teensy LC :
Ligne 85 : Ligne 124 :
 
*** [[File:LC USBHID Mouse-to-Joy-Serial PC.zip]]
 
*** [[File:LC USBHID Mouse-to-Joy-Serial PC.zip]]
 
** JPS ou Analogique Arduino vers XAC ou Pc sans envoie sur le port série carte Teensy LC :
 
** JPS ou Analogique Arduino vers XAC ou Pc sans envoie sur le port série carte Teensy LC :
***File:LC JPS-to-Joy-XAC-PC.zip
+
*** [[File:LC JPS-to-Joy XAC-PC.zip]]
 
** JPS ou Analogique Arduino vers Pc avec envoie sur le port série carte Teensy LC :
 
** JPS ou Analogique Arduino vers Pc avec envoie sur le port série carte Teensy LC :
 
*** [[File:LC JPS-to-Joy-Serial PC.zip]]
 
*** [[File:LC JPS-to-Joy-Serial PC.zip]]
Ligne 93 : Ligne 132 :
 
*** [[File:MICRO JPS-to-Joy-Serial PC.zip]]
 
*** [[File:MICRO JPS-to-Joy-Serial PC.zip]]
  
==== Les Librairies à ajouter ou à remplacer ====
+
==Notes d'utilisation des différents type de joystick==
Sources librairies :
+
'''Quand on utilise le [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick Proportionnel Sensible]]''', il doit être alimenté en 5V. Si on le met directement sur une entrée analogique de la teensy, elle va griller car va recevoir 5V or car elle accepte 3V max. (Les entrées analogiques ne sont pas régulées comme le VIn). il faut donc ajouter un régulateur de tension (5V->3.3V) pour éviter la catastrophe.
  
https://github.com/felis/USB_Host_Shield_2.0
+
'''Quand on utilise un joystick type arduino''', il y a des potentiomètres ordinaires dedans, on les alimente avec le 3.3V récupéré sur la teensy. Quelle que soit la tension d'alimentation du joystick, la sortie du potentiomètre ira de 0 au maximum de la tension. Au lieu de les alimenter en 5V , on les alimente en 3.3v, et on aura bien toute la plage de valeurs de 0 à 1024.
  
https://github.com/gdsports/xac-mouse2joy/blob/master/joystick_teensy_20181205.zip
+
Si on connecte les joysticks directement sur les entrées arrières de la xac , c'est pareil (joystick type arduino, besoin de rien, avec le [[Projets:JPS_Joystick_Proportionnel_Sensible|Joystick Proportionnel Sensible]] il faut un régulateur)
 
Le développement de ce code a été modifié par Christian Fromentin MHK Rennes.
 
  
Voir le fichier "Regarde-moi.txt" dans le dossier XAC-Joystick
+
==Description de la XAC==
 +
===Différence des entrées sur la xac===
 +
*Entrées à l'arrière: entrées analogiques
 +
*Entrées USB sur le coté: entrées numériques.
  
A placer dans la librairie Arduino :
 
*** [[File:Lib-189.zip]]
 
** A placer dans le répertoire du logiciel /../Arduino/Hardware :
 
*** [[File:A deposer dans Arduino Hardware 189.zip]]
 
  
==Etapes de fabrication pas à pas==
+
==Préparation de la carte Mini USB Host==
  
 
La carte Mini Usb Host doit être modifiée.
 
La carte Mini Usb Host doit être modifiée.
  
(Certaine carte possède un strap qui permet de le faire sans couper une piste)
+
(Certaines cartes possèdent un strap qui permet de le faire sans couper une piste)
  
 
Il faut permettre l'alimentation du connecteur USB avec 5 volt et non 3.3v par défaut avec cette carte:
 
Il faut permettre l'alimentation du connecteur USB avec 5 volt et non 3.3v par défaut avec cette carte:
  
* Etape 1 :
+
=== Etape 1 :Couper la piste comme sur la photo (juste avant l'inscription "2.2k") et souder un fil ===
** Couper la piste comme sur la photo (juste avant l'inscription "2.2k") et souder un fil :
+
[[File:Mini Host Usb Prepa.jpg]]
*** [[File:Mini Host Usb Prepa.jpg]]
+
 
 +
=== Etape 2:  Souder l'autre extrémité du fil ===
 +
[[File:Mini Host Usb Soude.jpg]]
  
* Etape  :
 
** Souder l'autre extrémité du fil :
 
*** [[File:Mini Host Usb Soude.jpg]]
 
  
 
==Config 1: BT Hid vers XAC ou PC sans envoi sur le port série carte Teensy LC ==
 
==Config 1: BT Hid vers XAC ou PC sans envoi sur le port série carte Teensy LC ==
  
 +
Cette configuration permet de rendre la XAC bluetooth et de s'y connecter via un joystick de fauteuil roulant afin de pouvoir jouer à des jeux videos sur console.
 +
 +
 +
===Schema===
 +
[[File:Host Usb-to-LC-to-XAC.JPG|Host Usb-to-LC-to-XAC|700px]]
 +
 +
Les résistances+leds ne sont pas essentiels au montage.
 +
Par contre les condensateurs si.
 +
 +
Le 3.3V et le RESET mentionnés sur le schema (en bas à gauche) sont ceux de la carte host USB.
 +
 +
===Méthode pour valider le fonctionnement de l'ensemble===
 
Pour tester le Joystick du fauteuil (industriel), il faut couper le Bluetooth du PC pour empêcher le fauteuil de se connecter directement au PC en mode souris.
 
Pour tester le Joystick du fauteuil (industriel), il faut couper le Bluetooth du PC pour empêcher le fauteuil de se connecter directement au PC en mode souris.
  
Ensuite connecter la teensy en USB à l'ordinateur.
+
====1-Vérifier que le montage Teensy+Host USB est reconnu en tant que joystick par l'ordinateur====
 +
#Connecter uniquement la teensy avec le host USB à l'ordinateur
 +
#Ouvrir le [[Media:LC JPS-to-Joy XAC-PC TEST.zip|sketch test du joystick :LC JPS-to-Joy XAC-PC_TEST]]
 +
#Dans l'IDE Arduino, choisir dans Outil>USB Type : Joystick +Serial (vous devez voir cette option sinon c'est que les librairies sont mal ou pas installées)
 +
#Téléverser le sketch sur la Teensy.
 +
#Ouvrir les périphériques contrôleur de jeu :
 +
* Sur Windows, taper dans la barre de recherche en bas à gauche, "Configurer les contrôleurs de jeu" puis la fenêtre Contrôleurs de jeu s'ouvre et vous devriez voir Keyboard/Mouse/Joystick, puis cliquer  sur Propriétés pour avoir un affichage de l'état du joystick.)
 +
*sur linux: taper en ligne de commande :jstest-gtk
 +
#Vous devriez voir le joystick bouger
 +
 
 +
====2-Vérifier la communication entre la XAC et l'ordinateur====
 +
#Connecter la XAC à l'ordinateur (le pilote s'installe à la connection)
 +
#On garde les propriétés du contrôleur de jeu ouvert
 +
#On doit voir le dispositif xbox reconnu, avec le périphérique qui s'actualise dans la fenêtre des propriétés du controleur. Evidemment ici on ne voit pas le joystick bouger puisque la teensy n'est pas connectée
 +
(Il faut télécharger l'interface de la xbox pour ordi pour pouvoir prendre le contrôle/remapper/etc... (ou on peut le faire sur la xbox)
 +
 
 +
====3-Vérifier que le joystick simulé par la teensy est reconnu quand connecté à la XAC====
 +
#connecter le proto host usb/teensy sur la xac toujours avec le [[Media:LC JPS-to-Joy XAC-PC TEST.zip|sketch test du joystick :LC JPS-to-Joy XAC-PC_TEST]]
 +
#vérifier dans les propriétés du contrôleur de jeu que le joystick bouge
 +
 
 +
====4-Test avec le joystick du fauteuil====
 +
#Teléverser le sketch [[Media:LC BTHID Mouse-to-Joy XAC-PC.zip|LC_BTHID_Mouse-to-Joy_XAC-PC]] sur la teensy
 +
#Connecter directement la teensy+host sur le pc
 +
#Vérifier dans les propriétés du contrôleur que le joystick du fauteuil envoie en bluetooth les informations de déplacement
 +
 
 +
====5-Vérifier que la XAC est reconnue par le PC====
 +
#Déconnecter la teensy du pc
 +
#Connecter la xac sur le pc
 +
#Vérifier dans le contrôleur de jeu que la xbox one (xac) est bien reconnue (le contrôleur doit actualiser le nom du périphérique reconnu)
 +
#connecter ensuite la teensy+host usb sur la xac. Vous devriez visualiser les mouvements du joystick du fauteuil.
 +
 
 +
====6-[OPTIONNEL] Test avec l'application Accessoire xbox====
 +
#Télécharger l'application. '''Cette application est uniquement valable pour Windows 10'''. Elle permet de visualiser la XAC et de la paramétrer. https://www.microsoft.com/fr-fr/p/accessoires-xbox/9nblggh30xj3?activetab=pivot:regionofsystemrequirementstab
 +
#Démarrer l'application
 +
Aller sur "configurer">Editer en cliquant sur l'icône crayon>Stick analogique gauche
 +
Vous devriez visualiser le joystick bouger.
 +
 
 +
La sensibilité du joystick se règle directement sur la xac. Il est préférable de laisser toute la configuration du mapping se faire dans l'interface la XAC et de ne pas introduire cette notion dans le code.
 +
 
 +
====7-Tester le dispositif sur la XBOX====
 +
#Déconnecter la XAC du PC
 +
#Connecter la XAC +teensy host USB sur la XBOX
 +
 
 +
 
 +
===Contexte technique du projet===
 +
====Contraintes du joystick du fauteuil====
 +
'''Le joystick du fauteuil est en réalité une souris''', c'est-à-dire qu'à chaque fois qu'on bouge la souris on reprend la position là où on l'avait laché, on est en position relative qui s'incrémente à chaque fois qu'on la bouge. Le code n'est pas optimisé pour l'utilisation avec le joystick du fauteuil, mais pour le joystick proportionnel sensible qui lui a une position neutre (mécanique) et fonctionne avec des positions absolues.
 +
 
 +
'''Le joystick du fauteuil a deux clicks : ''' droit et gauche
 +
 
 +
====Mapping du joystick====
 +
Christian n'a pas mappé les valeurs dans le code. Les valeurs vont de 0 à 1024 sur les deux axes (X et Y).
 +
Il est impératif de faire le mapping à un seul endroit : soit dans l'interface de la xac, soit dans l'interface de la xbox ou de son application mais en aucun dans le code !
 +
 
 +
====Valeurs renvoyées par la souris (joystick)====
 +
La valeur de la position de la souris est proportionnel à la vitesse de déplacement.
 +
 
 +
Par défaut sur une souris, la vitesse de deplacement est prise en compte pour l'incrémentation (lentement on incrémente de 1 et rapidement on a un pas de 100 voir plus).
 +
 
 +
Ce qu'il faudrait , c'est implémenter dans le code une transformation de ce comportement : au lieu d'avoir un pas de 100, le remplacer par un pas de 1 mais qui va beaucoup plus vite.
 +
 
 +
C'est le fichier MouseParser.h qui communique avec la librairie Host USB, et qui traite les informations reçues de la souris (joystick).
 +
 
 +
La variable mi = valeurs renvoyées par la souris
 +
 
 +
===Développements à prévoir===
 +
====Introduction du neutre dans le code====
 +
- Avoir un neutre sur une souris en respectant les contraintes de temps (latence) dans un jeu.
 +
On ne peut avoir l'information que la souris est en position neutre à part observer qu'elle n'envoie pas d'information sur un temps donné (ce temps doit être très court, de l'ordre de microsecondes).
 +
Ajouter cette fonction dans le fichier MouseParser.h du sketch [[Media:LC BTHID Mouse-to-Joy XAC-PC.zip|LC_BTHID_Mouse-to-Joy_XAC-PC]]
 +
 
 +
====Assignation des boutons====
 +
 
 +
====Ajout du clic droit====
 +
Pour l'instant, il n'a pas été implémenté.
 +
 
 +
====Configuration des déplacements de la souris (joystick)====
 +
Dans le code, la vitesse de deplacement de la souris est prise en compte pour l'incrémentation (lentement on incrémente de 1 et rapidement on a un pas de 100). Ce qu'il faudrait , c'est au lieu d'avoir un pas de 100, le remplacer par un pas de 1 mais qui va beaucoup plus vite.
 +
 
 +
====Code à prévoir et actualisation de la carte électronique pour retour visuel des connections/com====
 +
Prévoir des leds de couleurs ou clignotement pour avoir un retour visuel des informations reçus par la Teensy :
 +
* l'appairage en bluetooth
 +
* reconnaissance du joystick fauteuil
 +
* de la xac
 +
* Quand le joystick bouge.
 +
* système sous tension
 +
 
 +
====Anticiper l'ajout de boutons/leds/ ... sur des pins====
 +
- Prévoir les pins pour les devs futurs avec des pins headers (voir schema) pour pouvoir ajouter des boutons, leds ou autres
  
Attendre l'apairage du fauteuil avec le host USB et teensy BT (penser à ajouter une led à l'apairage pour avoir un retour visuel)
+
====Schemas sur Fritzing et / ou sur veroboard (DIYLC)====
 +
Transférer le schema ci-dessus sur les logiciels Fritzing et / ou sur veroboard (DIYLC)
  
Ensuite tester le joystick avec un logiciel par exemple dans Windows:
+
====Faire une boite====
Gestionnaire de périphériques
 
Taper dans la barre de recherche de windows en bas à gauche, "Configurer les contrôleurs de jeu" puis la fenêtre Contreurs de jeu s'ouvre et vous devriez voir Keyboard/Mouse/Joystick, puis appuyer sur Propriétés pour avoir un affichage de l'état du joystick.
 
  
A noter que le joystick du fauteuil est en réalité une souris, c'est-à-dire qu'à chaque fois qu'on bouge la souris on reprend la position là où on l'avait laché, on est en position relative qui s'incrémente à chaque fois qu'on la bouge. Le code n'est pas optimisé pour l'utilisation avec le joystick du fauteuil, mais pour le joystick proportionnel sensible qui lui a une position neutre et fonctionne avec des positions absolues.
 
  
Problème: comment avoir un neutre sur une souris en respectant les contraintes de temps (latence) dans un jeu ?
+
<span style="color:red; font-size:18px">Ce développement à venir a été continué sur la page du projet Magic Joystick [[Projets:Magic_Joystick]]</span>
On ne peut avoir l'information que la souris est en position neutre à part observer qu'elle n'envoie pas d'information sur un temps donné.
 
  
  
 
[[Category:Projets]]
 
[[Category:Projets]]
[[Category:En cours]]
+
[[Category:Réalisés]]
 +
[[Category:Motricité]]

Version actuelle datée du 18 juillet 2022 à 12:19

Interfaces XAC

Mini Host Usb Soude.jpg

Informations
Description Réaliser et mettre oeuvre une solution logicielle et hardware pour connecter des interfaces de type Joystick à une XAC


Catégorie Motricité
Etat d'avancement Réalisés
Techniques teensy
Durée de fabrication de 4 à 8 h
Coût matériel Moins de 50 euros"Moins de 50 euros" n’est pas dans la liste (De 50 à 100 euros, De 100 à 200 euros, Plus de 200 euros, Moins de 10 euros, De 10 à 50 euros) de valeurs autorisées pour la propriété "A coût matériel".
Niveau
Licence by-sa
Date de création 2019-10-10
Équipe
Porteur de projet Jonathan
Contributeurs Elektron
Fabmanager Delphine
Référent documentation Elektron, Delphine
Nom humanlab Humanlab_MHK
Documentation
Statut de la documentation Complète
Relecture de la documentation Non vérifiée

Description du projet

Réaliser et mettre oeuvre une solution logicielle et hardware pour connecter des interfaces de type Joystick à une XAC (Xbox Adaptive Controller)

Un boitier et une nouvelle carte on été réalisé pour Chloé. Cette réalisation s'appuie sur les éléments présents de cette page :

Boitier Souris Vers XAC

Synoptique des différentes configurations possibles

On doit pouvoir se connecter sur les entrées arrières X1,X2 ou sur les entrées USB Gauche et Droite.

Plusieurs types de dispositifs

  • Joystick Proportionnel Sensible (JPS) ou Arduino sur Entrées Arrières X1 ou X2
  • Joystick JPS ou Arduino sur Teensy LC connectée comme Joystick à une entrée USB XAC
  • Joystick JPS ou arduino sur Arduino Micro Pro connectée comme Joystick à une entrée USB XAC
  • Souris avec ou sans fil ou Souris au-travers de R-Net BT connectées comme Joystick à une entrée USB XAC


Interfaces XAC.png

XAC.jpg JPS Ensemble Vue-01.jpg

Analyse de l'existant

Equipe (Porteur de projet et contributeurs)

  • Christian (Concepteur)
  • Jonathan (Porteur de projet)
  • Delphine (Fabmanager référent)
  • Delphine & Christian (Documentation)

Matériel nécessaire

  • Carte Teensy LC. ou Carte Arduino Micro-pro selon la configuration souhaitée
  • Carte Mini Host Usb

Outils nécessaires

Coût

Délai estimé

Fichiers source

Schémas

Préparation de l'environnement

  • Installer l'IDE Arduino (1.8.10)
  • Installer teensyduino 1.48 (attention seulement compatible avec certaines versions d'Arduino)

Dossiers à placer dans le dossier des librairies Arduino

Deux librairies sont à ajouter : Joystick1 (version modifiée de la librairie xac-mouse2joy, et USB_Host_Shield_20)

Télécharger les librairies et les ajouter au dossier Libraries de Arduino

La librairie USB_Host_Shield_20 permet de configurer les boutons en leur assignant des numéros qu'on retrouve dans l'interface XAC ou interface de la console. C'est dans le fichier MouseParser.h du sketch qu'on assigne ces boutons.

Le développement de ce code a été modifié par Christian Fromentin MHK Rennes.

(A retrouver : Voir le fichier "Regarde-moi.txt" dans le dossier XAC-Joystick)

Sources librairies avant modification

https://github.com/felis/USB_Host_Shield_2.0

https://github.com/gdsports/xac-mouse2joy/blob/master/joystick_teensy_20181205.zip

Fichiers à placer dans le répertoire du logiciel /../Arduino/Hardware

Précaution : Faire un backup des fichiers originaux avant de les remplacer. En effet ce changement de configuration vient modifier les headers de certains fichiers lors de la compilation.

A deposer dans Arduino>hardware

Sur windows

C>Program Files (x86)>Arduino>hardware

Sur Linux

Selon où et comment le programme a été installé, peut être dans :

Ordinateur>opt>arduino-1.8.10>hardware

Pour être certain d'être dans le bon dossier, vérifier que le dossier contient l'ensemble des dossiers (examples, hardware,java,lib, libraries,reference,tools,tools-builder)

Code Arduino

Attention pour que le fichier compile il ne faut pas oublier de configurer depuis IDE Arduino>Outil>USB type>Serial+Joystick

Si cette option n'est pas visible, c'est que les librairies sont mal ou pas installées.

Notes d'utilisation des différents type de joystick

Quand on utilise le Joystick Proportionnel Sensible, il doit être alimenté en 5V. Si on le met directement sur une entrée analogique de la teensy, elle va griller car va recevoir 5V or car elle accepte 3V max. (Les entrées analogiques ne sont pas régulées comme le VIn). il faut donc ajouter un régulateur de tension (5V->3.3V) pour éviter la catastrophe.

Quand on utilise un joystick type arduino, il y a des potentiomètres ordinaires dedans, on les alimente avec le 3.3V récupéré sur la teensy. Quelle que soit la tension d'alimentation du joystick, la sortie du potentiomètre ira de 0 au maximum de la tension. Au lieu de les alimenter en 5V , on les alimente en 3.3v, et on aura bien toute la plage de valeurs de 0 à 1024.

Si on connecte les joysticks directement sur les entrées arrières de la xac , c'est pareil (joystick type arduino, besoin de rien, avec le Joystick Proportionnel Sensible il faut un régulateur)

Description de la XAC

Différence des entrées sur la xac

  • Entrées à l'arrière: entrées analogiques
  • Entrées USB sur le coté: entrées numériques.


Préparation de la carte Mini USB Host

La carte Mini Usb Host doit être modifiée.

(Certaines cartes possèdent un strap qui permet de le faire sans couper une piste)

Il faut permettre l'alimentation du connecteur USB avec 5 volt et non 3.3v par défaut avec cette carte:

Etape 1 :Couper la piste comme sur la photo (juste avant l'inscription "2.2k") et souder un fil

Mini Host Usb Prepa.jpg

Etape 2: Souder l'autre extrémité du fil

Mini Host Usb Soude.jpg


Config 1: BT Hid vers XAC ou PC sans envoi sur le port série carte Teensy LC

Cette configuration permet de rendre la XAC bluetooth et de s'y connecter via un joystick de fauteuil roulant afin de pouvoir jouer à des jeux videos sur console.


Schema

Host Usb-to-LC-to-XAC

Les résistances+leds ne sont pas essentiels au montage. Par contre les condensateurs si.

Le 3.3V et le RESET mentionnés sur le schema (en bas à gauche) sont ceux de la carte host USB.

Méthode pour valider le fonctionnement de l'ensemble

Pour tester le Joystick du fauteuil (industriel), il faut couper le Bluetooth du PC pour empêcher le fauteuil de se connecter directement au PC en mode souris.

1-Vérifier que le montage Teensy+Host USB est reconnu en tant que joystick par l'ordinateur

  1. Connecter uniquement la teensy avec le host USB à l'ordinateur
  2. Ouvrir le sketch test du joystick :LC JPS-to-Joy XAC-PC_TEST
  3. Dans l'IDE Arduino, choisir dans Outil>USB Type : Joystick +Serial (vous devez voir cette option sinon c'est que les librairies sont mal ou pas installées)
  4. Téléverser le sketch sur la Teensy.
  5. Ouvrir les périphériques contrôleur de jeu :
  • Sur Windows, taper dans la barre de recherche en bas à gauche, "Configurer les contrôleurs de jeu" puis la fenêtre Contrôleurs de jeu s'ouvre et vous devriez voir Keyboard/Mouse/Joystick, puis cliquer sur Propriétés pour avoir un affichage de l'état du joystick.)
  • sur linux: taper en ligne de commande :jstest-gtk
  1. Vous devriez voir le joystick bouger

2-Vérifier la communication entre la XAC et l'ordinateur

  1. Connecter la XAC à l'ordinateur (le pilote s'installe à la connection)
  2. On garde les propriétés du contrôleur de jeu ouvert
  3. On doit voir le dispositif xbox reconnu, avec le périphérique qui s'actualise dans la fenêtre des propriétés du controleur. Evidemment ici on ne voit pas le joystick bouger puisque la teensy n'est pas connectée

(Il faut télécharger l'interface de la xbox pour ordi pour pouvoir prendre le contrôle/remapper/etc... (ou on peut le faire sur la xbox)

3-Vérifier que le joystick simulé par la teensy est reconnu quand connecté à la XAC

  1. connecter le proto host usb/teensy sur la xac toujours avec le sketch test du joystick :LC JPS-to-Joy XAC-PC_TEST
  2. vérifier dans les propriétés du contrôleur de jeu que le joystick bouge

4-Test avec le joystick du fauteuil

  1. Teléverser le sketch LC_BTHID_Mouse-to-Joy_XAC-PC sur la teensy
  2. Connecter directement la teensy+host sur le pc
  3. Vérifier dans les propriétés du contrôleur que le joystick du fauteuil envoie en bluetooth les informations de déplacement

5-Vérifier que la XAC est reconnue par le PC

  1. Déconnecter la teensy du pc
  2. Connecter la xac sur le pc
  3. Vérifier dans le contrôleur de jeu que la xbox one (xac) est bien reconnue (le contrôleur doit actualiser le nom du périphérique reconnu)
  4. connecter ensuite la teensy+host usb sur la xac. Vous devriez visualiser les mouvements du joystick du fauteuil.

6-[OPTIONNEL] Test avec l'application Accessoire xbox

  1. Télécharger l'application. Cette application est uniquement valable pour Windows 10. Elle permet de visualiser la XAC et de la paramétrer. https://www.microsoft.com/fr-fr/p/accessoires-xbox/9nblggh30xj3?activetab=pivot:regionofsystemrequirementstab
  2. Démarrer l'application

Aller sur "configurer">Editer en cliquant sur l'icône crayon>Stick analogique gauche Vous devriez visualiser le joystick bouger.

La sensibilité du joystick se règle directement sur la xac. Il est préférable de laisser toute la configuration du mapping se faire dans l'interface la XAC et de ne pas introduire cette notion dans le code.

7-Tester le dispositif sur la XBOX

  1. Déconnecter la XAC du PC
  2. Connecter la XAC +teensy host USB sur la XBOX


Contexte technique du projet

Contraintes du joystick du fauteuil

Le joystick du fauteuil est en réalité une souris, c'est-à-dire qu'à chaque fois qu'on bouge la souris on reprend la position là où on l'avait laché, on est en position relative qui s'incrémente à chaque fois qu'on la bouge. Le code n'est pas optimisé pour l'utilisation avec le joystick du fauteuil, mais pour le joystick proportionnel sensible qui lui a une position neutre (mécanique) et fonctionne avec des positions absolues.

Le joystick du fauteuil a deux clicks : droit et gauche

Mapping du joystick

Christian n'a pas mappé les valeurs dans le code. Les valeurs vont de 0 à 1024 sur les deux axes (X et Y). Il est impératif de faire le mapping à un seul endroit : soit dans l'interface de la xac, soit dans l'interface de la xbox ou de son application mais en aucun dans le code !

Valeurs renvoyées par la souris (joystick)

La valeur de la position de la souris est proportionnel à la vitesse de déplacement.

Par défaut sur une souris, la vitesse de deplacement est prise en compte pour l'incrémentation (lentement on incrémente de 1 et rapidement on a un pas de 100 voir plus).

Ce qu'il faudrait , c'est implémenter dans le code une transformation de ce comportement : au lieu d'avoir un pas de 100, le remplacer par un pas de 1 mais qui va beaucoup plus vite.

C'est le fichier MouseParser.h qui communique avec la librairie Host USB, et qui traite les informations reçues de la souris (joystick).

La variable mi = valeurs renvoyées par la souris

Développements à prévoir

Introduction du neutre dans le code

- Avoir un neutre sur une souris en respectant les contraintes de temps (latence) dans un jeu. On ne peut avoir l'information que la souris est en position neutre à part observer qu'elle n'envoie pas d'information sur un temps donné (ce temps doit être très court, de l'ordre de microsecondes). Ajouter cette fonction dans le fichier MouseParser.h du sketch LC_BTHID_Mouse-to-Joy_XAC-PC

Assignation des boutons

Ajout du clic droit

Pour l'instant, il n'a pas été implémenté.

Configuration des déplacements de la souris (joystick)

Dans le code, la vitesse de deplacement de la souris est prise en compte pour l'incrémentation (lentement on incrémente de 1 et rapidement on a un pas de 100). Ce qu'il faudrait , c'est au lieu d'avoir un pas de 100, le remplacer par un pas de 1 mais qui va beaucoup plus vite.

Code à prévoir et actualisation de la carte électronique pour retour visuel des connections/com

Prévoir des leds de couleurs ou clignotement pour avoir un retour visuel des informations reçus par la Teensy :

  • l'appairage en bluetooth
  • reconnaissance du joystick fauteuil
  • de la xac
  • Quand le joystick bouge.
  • système sous tension

Anticiper l'ajout de boutons/leds/ ... sur des pins

- Prévoir les pins pour les devs futurs avec des pins headers (voir schema) pour pouvoir ajouter des boutons, leds ou autres

Schemas sur Fritzing et / ou sur veroboard (DIYLC)

Transférer le schema ci-dessus sur les logiciels Fritzing et / ou sur veroboard (DIYLC)

Faire une boite

Ce développement à venir a été continué sur la page du projet Magic Joystick Projets:Magic_Joystick