DIY - [TUTO] Configurer SimTools + code XPID arduino par Wanegain

Votez pour l'image du mois
  • tuto rédigé par @Wanegain ici http://www.racingfr.com/forum/index.php?showtopic=48939

    _________________

    Je suis passé il n'y a pas longtemps sur SimTools et je me suis dit que ça serait peut être bien d'écrire quelques lignes expliquant comment j'ai fait le passage de X-Sim à SimTools.


    Je connaissais déjà SimTools, vu que je l'avais utilisé pour le simulateur low cost, ce qui m'a permis de faire la transition de l'un à l'autre en 5 minutes !


    Pour info, le code fournis est toujours compatible X-sim, mais il ne faut plus utiliser le plugin USB XPID, mais passer par Universal Serial Output. J'écrirai au moment voulu la manip à faire dans ce tuto.



    Tout d'abord, SimTools c'est une suite de 3 logiciels :


    PluginUpdater : un petit utilitaire qui va installer/mettre à jour vos plugins pour les jeux


    GameManager : l'équivalent d'Extractor, qui récupère les données des jeux et les envois à GameEngine


    GameEngine : l'équivalent de Converter qui va convertir la télémétrie et l'envoyer à la carte de contrôle (Arduino par exemple)



    [size=4]PluginUpdater[/size]



    Tout d'abord, il faut installer les plugins, on va donc ouvrir PluginUpdater (GameManager et GameEngine doivent être fermés)


    plugin10.jpg


    Un simple glisser/déposer de l'archive suffit pour l'installer :++: !


    Si vous avez déjà installé le plugin et que c'est une mise à jour, alors vous allez voir apparaître ce message :


    plugin11.jpg


    Si vous avez déjà effectué des réglages sur votre jeu et que vous avez modifié une des valeurs max/min alors cliquez sur non (sinon oui évidemment)


    Si le plugin a correctement été pris en compte alors vous aurez ce message


    plugin12.jpg


    NOTE IMPORTANTE : Si vous utilisez 2 PC il faut installer les plugins sur les deux !



    [size=4]GameManager[/size]



    Lorsque vous allez le lancer, vous allez voir apparaître une sorte d'image publicitaire que vous pouvez fermer :


    gamema10.jpg


    il faut cliquer sur l'icone dans la barre des tâches pour faire apparaître l'interface.


    Vous avez un menu déroulant avec la liste des plugins installés, choisissez votre jeu et cliquez sur Tools et IP Setting pour indiquer l'adresse du pc où se trouve GameEngine (127.0.0.1) si c'est le même PC).


    gamema11.jpg


    On va maintenant patcher le jeu (recliquez sur Tools pour revenir au menu principal), il faut cliquez sur Patching. Indiquez le chemin du jeu Edit Path et cliquez sur Patch Game. Pour la plupart des jeux (mais pas tous) il vous indiquera que le jeu est bien patché !


    gamema12.jpg


    Le reste pas besoin d'y toucher.


    Si vous lancez GameEngine sur le pc dont vous avez indiqué l'adresse alors (après quelques secondes) vous pourrez voir que les logiciels sont connectés :


    gamema13.jpg


    Vous pouvez alors réduire le GameManager, vous n'avez plus rien à faire tant qu'il tourne en tâche de fond :++:



    [size=4]GameEngine[/size]


    Par défaut il se lance aussi réduit dans la barre des tâches pour que la suite soit la plus discrète possible


    Faites un double clic dessus (ou clic droit settings) pour faire apparaître l'interface :


    gameen10.jpg


    On va aller dans Interface settings pour définir comment le pc communiquer avec l'Arduino :


    Vérifiez que vos paramètres sont bien identiques à l'image ci-dessous (excepté le port COM).


    gameen11.jpg


    EDIT : vous pouvez installer mon fichier de config qu'il suffit de glisser déposer dans l'onglet Tools sur Drag and Drop


    Note : Si vous voulez réutiliser X-sim avec ce même code, il faut alors décocher toutes les interfaces dans Interfaces settings et aller dans Output setup, USO et mettre les valeurs de ~a01~ et ~a02~ sur 16 bits en binaire et value = ( value / 64 ). Il faut remplacer < Axis 1 > par ~a01~


    Vous pouvez tester que ça fonctionne correctement en passant par Output Testing (Turn On) et en sélectionnant Axis Output :


    gameen13.jpg


    Note : Pour tester avec le DOF output, il faut que le preset Default soit complété


    Maintenant on va configurer les effets sur les moteurs dans Axis Assignments :


    gameen12.jpg


    Donc par Axe je définis un effet par DOF.


    Roll = rotation latérale (pour les jeux de voiture, c'est l'inclinaison de la voiture sur le côté)


    Pitch = rotation longitudinale (pour les jeux de voiture, c'est l'inclinaison de la voiture avant/arrière)


    Heave = translation vertical (effet vertical)


    Yaw = rotation autour de l'axe vertical (pour les jeux de voiture, c'est l'effet de glisse)


    Sway = translation latérale (forces gauche/droite pour les virages)


    Surge = translation longitudinale (accélération/freinage)


    La case Dir en orange sert à inverser le sens du moteur


    La case Flt sert à ajouter un filtre sur un effet :


    Smoothing - permet de lisser la valeur, si une valeur semble saccadée ou n'est pas fluide, cela peut être augmentée pour ajouter un effet de lissage en créant une valeur moyenne des valeurs qui viennent.


    Washout - est pratique lorsque nous voulons remettre une valeur à 0. Par exemple l'effet de lacet qui ne tourne pas à 360 degrés pour donner le sentiment au pilote qu'il elle est toujours en train de tourner.


    DeadZone - C'est pour définir une zone morte des mouvements


    Boundary - C'est pour définir un seuil maximum afin qu'un seul effet n'utilise pas plus de X% de l'axe disponible.



    [size=4]Vérifier que GameManager et GameEngine communiquent[/size]



    Il faut faire clic droit sur l'icone dans la barre des tâches et Tuning Center, choisissez votre jeu et normalement en jeu les valeurs devraient bouger :+:


    gameen14.jpg



    Voici mon code à envoyer dans l'Arduino (mai 2016):


    XPID_SimTools1_4_2x32.ino


    XPID_SimTools1_4_2x25.ino


    Avec la version 1.4 vous pouvez connecter un potentiomètre sur A5 qui permet de gérer la puissance globale du simulateur (pratique lorsqu'on passe de la Fiat 500 à une F1 :++:)


    Pour que ça fonctionne il faut éditer le fichier et modifier GP_select et mettre 1:


    int GP_select = 1; //1:use potentiometer 0:always 100%

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

    Message modifié 1 fois, dernière modification par RacingMat (20 avril 2017 à 21:45).

  • Coucou,

    Après plus de 3 années au placard pour différentes raisons, je relance mon projet de GSeat et je voulais une nouvelle fois saluer l'énorme boulot de classification et d'archivage de RacingMat. Ce tuto m'avait beaucoup aidé à l'époque et j'ai pu le retrouver très rapidement ici, ce qui m'a permis en quelques heures de retrouver une config prête à l'emploie

    Quelques remarques:

    _ Simtool est actuellement en version 2.40 et les axes se nomment Axis1a, Axis2a... Attention dans la page Interface setting de Simtool et dans le code arduino.

    _ Ne pas oublier de mettre les librairies qui vont bien dans le dossier librairie. Celle de la sabertooth se trouve sur le site officiel, ici

    Ça peut paraitre évident à certains mais quand on a pas bidouillé de l'arduino depuis longtemps, ça demande quelques heures de recherche pour se remettre à niveau.

    A bientôt

  • Ha, ha ! Wanegain on voudrait bien voir cette version 1.8 :+:

    d'autant que j'ai sorti ma sabertooth de sous la poussière !! :china:

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

  • trouvée ! je vais dépenser mes coins !

    https://www.xsimulator.net/community/mark…o-6-motors.241/

    mais pourquoi pas un topic pour l'utiliser avec PTMover ? :shy3:

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

  • pouvoir éditer le pid en temps réel

    le Graal !!

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition

  • Parce que j'ai pas encore testé le soft... Je dois peut être voir avec FlyPT pour intégrer plus de fonctionnalités. Ce que je cherche en priorité pour le moment c'est pouvoir éditer le pid en temps réel (ainsi que d'autres paramètres) mais pour ça il faut pouvoir visualiser les courbes des consignes ainsi que celles des potentiomètres...

    C'est presque fait... Regarde les modules rig.
    Tu peux voir les controles pur le PID

  • Voici la version 1.8 : https://drive.google.com/drive/folders/…G_5?usp=sharing

    !!! ATTENTION : NE PAS UTILISER LES VERSIONS DE SIMTOOLS 2.4.9 et 2.5.0, il y a des bugs avec les communications séries !!!

    Donc il y a 2 fichiers qui doivent absolument être dans le même dossier. Vous ne devez éditer que le fichier config.h

    Lorsque vous êtes dans le logiciel Arduino avec le serial monitor, vous pouvez utiliser les différentes fonctions pour récupérer des informations :

    XV00C --> version du code

    XC00C --> voir les paramètres globaux (nombre de moteurs, Deadzone, ReadAnalog, vitesse de déplacement lors de l'arrêt du simulateur)

    XM00C --> voir les paramètres de chaque moteur (min, max, standvy, PID)

    XP00C --> voir les valeurs des potentiomètres en temps réel

    Mais aussi :

    XS00C --> positionne les moteurs sur la valeur 512 des potentiomètres (valeur moyenne, position de départ). Ce qui peut être pratique pour mettre les manivelles à plat et vérifier avec XP00C que les potentiomètres sont bien aux alentours de la valeur 512

    XE00C --> remettre le simulateur en position standby et arrêt des moteurs

    Si vous voyez des bugs, n'hésitez pas à les remonter !