Interfaces pour les pédales

Vous trouverez ici toutes les solutions pour brancher les pédales SRT. Deux philosophies : relier les pédales à votre volant, ou relier directement les pédales à l’ordinateur.

Sommaire

  1. Logitech (G27, G29, G920)
  2. Simucube 1
  3. Simucube 2
  4. Arduino
  5. Leobodnar
  6. Thrustmaster

La grande majorité des pédaliers utilisent des potentiomètres. Comme l’accélérateur est basé sur un potentiomètre, et que le capteur de pression hydraulique se comporte aussi comme un potentiomètre, on peut brancher ce pédalier sur la plupart des bases volants (logitech, Simucube, Thrusmaster…).

Sinon on peut le brancher sur une carte Leobodnar ou Arduino qui est ensuite branchée sur le PC via un câble USB.

1) Logitech (G27, G29, G920…)

Vous pouvez brancher le pédalier SRT sur un volant G27 ou G29. Pour cela, utilisez un connecteur VGA male (sur Amazon, ou Aliexpress) avec les pin suivants :

1 – Masse (0v)

2 – Accélérateur

3 – Frein

4 – Embrayage

5 –

6 – VCC (+5v)

7 –

8 –

9 – VCC (+5v)

b) Simucube

2) Simucube 1

On peut brancher un pédalier sur le port X11-upper. Voir le détail sur la doc Simucube.

Le pin 1 est celui le plus à droite. Il faut utiliser un câble RJ45 (8P8C)

1 – Frein

2 – Accélérateur

3 –

4 – VCC ( +3,3V)

5 – Embrayage

6 –

7 –

8 – Masse (0V)

X11-upper

Pin 1 is the right-most.

Use with a RJ45 (8P8C)

3) Simucube 2

Il y a un port « SC accessory port » sur lequel il y a des pins pour brancher un pédalier, c’est du vga db15 femelle.

Voir la documentation disponible ici. On peut utiliser ce type de connecteur mâle. Les pins qui vous intéressent :

2 – Masse (0V)

6 – Accélérateur

7 – Embrayage

8 – VCC (5V)

13 – Frein

15 – Masse (0V)

4) Arduino

Si vous ne voulez pas brancher le pédalier sur votre volant, utiliser une carte arduino est la solution la moins onéreuse. Le code suivant permet de gérer de une à trois pédales. Il ne fonctionne qu’avec les cartes Arduino Leonardo et Micro. La librairie joystick.h est disponible en téléchargement ici.

// V1.0 : ajout du mode verbose
// V1.1 : correction
// V1.2 : display min and max read when verbose_mode is active.
// V1.3 : handbrake analog and digital mode added
// V1.4 : code fix + fast debug : no need to disable DEBUG to operate at full speed.

// comment either out to disable || Mettre en commentaire pour désactiver

#define USE_ACCEL
#define USE_BRAKE
#define USE_CLUTCH
//#define USE_ANALOG_HANDBRAKE
//#define USE_DIGITAL_HANDRAKE
#define DEBUG   //allow to tune min and max

#define AcceleratorPin 0
#define BrakePin       1
#define ClutchPin      2
#define HandbrakePin   3

int minAccelerator = 210;
int maxAccelerator = 595;
int minBrake = 130 ;
int maxBrake = 800;
int minClutch = 130;
int maxClutch = 250;
int minHandbrake = 100;
int maxHandbrake = 300;
int digitalHandbrakeSwitch = 200;

int minAcceleratorRead = 1023;
int maxAcceleratorRead = 0;
int minBrakeRead = 1023 ;
int maxBrakeRead = 0;
int minClutchRead = 1023;
int maxClutchRead = 0;
int minHandbrakeRead = 1023;
int maxHandbrakeRead = 0;

int lastAcceleratorState ;
int lastBrakeState;
int lastClutchState;
int lastHandbrakeState;
int currentAcceleratorState;
int currentBrakeState;
int currentClutchState;
int currentHandbrakeState;
bool sendDebug = false;
int unsigned long lastDebug = 0;
int DebugRefreshRate = 250;

#include "Joystick.h"
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
                   JOYSTICK_TYPE_MULTI_AXIS, 4, 0,
                   true, true, false,  true, false, false,         // pour activé la fonction RxAxis
                   false, false, true, true, false);

void setup() {
#ifdef DEBUG
  Serial.begin(9600);
  Serial.println("DEBUG mode activated");
#endif
  Joystick.setRxAxisRange(minAccelerator, maxAccelerator);
  Joystick.setBrakeRange(minBrake, maxBrake);
  Joystick.setXAxisRange(minClutch, maxClutch);
  Joystick.setYAxisRange(minHandbrake, maxHandbrake);
  Joystick.begin();
  lastAcceleratorState = analogRead(AcceleratorPin);
  lastBrakeState = analogRead(BrakePin);
  lastClutchState = analogRead(ClutchPin);
  lastHandbrakeState = analogRead(HandbrakePin);

  delay(1000); //safety delay to flash the code
}

void loop() {
  #if defined(DEBUG)
  if (millis() - lastDebug > DebugRefreshRate) {
    sendDebug = true;
    lastDebug = millis();
  }
#endif

#ifdef USE_ACCEL
  currentAcceleratorState = analogRead(AcceleratorPin);
  if (currentAcceleratorState != lastAcceleratorState)
  {
    Joystick.setRxAxis(currentAcceleratorState);
    lastAcceleratorState = currentAcceleratorState;
  }
#ifdef DEBUG
  minAcceleratorRead = min(minAcceleratorRead, currentAcceleratorState);
  maxAcceleratorRead = max(maxAcceleratorRead, currentAcceleratorState);
  if (sendDebug) {
    Serial.print("Acceleration : ");
    Serial.print(currentAcceleratorState);
    Serial.print(". Min is : ");
    Serial.print(minAcceleratorRead);
    Serial.print(". Max is : ");
    Serial.println(maxAcceleratorRead);
  }
#endif
#endif

#ifdef USE_BRAKE
  currentBrakeState = analogRead(BrakePin);
  if (currentBrakeState != lastBrakeState)
  {
    Joystick.setBrake(currentBrakeState);
    lastBrakeState = currentBrakeState;
  }
#ifdef DEBUG
  minBrakeRead = min(minBrakeRead, currentBrakeState);
  maxBrakeRead = max(maxBrakeRead, currentBrakeState);
  if (sendDebug) {
    Serial.print("       Brake : ");
    Serial.print(currentBrakeState);
    Serial.print(". Min is : ");
    Serial.print(minBrakeRead);
    Serial.print(". Max is : ");
    Serial.println(maxBrakeRead);
  }
#endif
#endif

#ifdef USE_CLUTCH
  currentClutchState = analogRead(ClutchPin);
  if (currentClutchState != lastClutchState)
  {
    Joystick.setXAxis(currentClutchState);
    lastClutchState = currentClutchState;
  }
#ifdef DEBUG
  minClutchRead = min(minClutchRead, currentClutchState);
  maxClutchRead = max(maxClutchRead, currentClutchState);
  if (sendDebug) {
    Serial.print("      Clutch : ");
    Serial.print(currentClutchState);
    Serial.print(". Min is : ");
    Serial.print(minClutchRead);
    Serial.print(". Max is : ");
    Serial.println(maxClutchRead);
  }
#endif
#endif



#ifdef USE_ANALOG_HANDBRAKE
  currentHandbrakeState = analogRead(HandbrakePin);
  if (currentHandbrakeState != lastHandbrakeState) {
    Joystick.setYAxis(currentHandbrakeState);
    lastHandbrakeState = currentHandbrakeState;
  }

#ifdef DEBUG
  minHandbrakeRead = min(minHandbrakeRead, currentHandbrakeState);
  maxHandbrakeRead = max(maxHandbrakeRead, currentHandbrakeState);
  if (sendDebug) {
    Serial.print("   Handbrake : ");
    Serial.print(currentHandbrakeState);
    Serial.print(". Min is : ");
    Serial.print(minHandbrakeRead);
    Serial.print(". Max is : ");
    Serial.println(maxHandbrakeRead);
  }
#endif
#endif
  if (sendDebug) {
    Serial.println("");
  }
  
#ifdef USE_DIGITAL_HANDBRAKE
  if(analogRead(HandbrakePin)>digitalHandbrakeSwitch){currentHandbrakeState = 1;}
  else{currentHandbrakeState = 0;}

  if (currentHandbrakeState != lastHandbrakeState)
  {
  Joystick.setButton(0, currentHandbrakeState);
    lastHandbrakeState = currentHandbrakeState;
  }
  #ifdef DEBUG
  minHandbrakeRead = min(minHandbrakeRead, currentHandbrakeState);
  maxHandbrakeRead = max(maxHandbrakeRead, currentHandbrakeState);
  Serial.print("Handbrake : ");
  Serial.print(currentHandbrakeState);
  Serial.print(". Min is : ");
  Serial.print(minHandbrakeRead);
  Serial.print(". Max is : ");
  Serial.println(maxHandbrakeRead);
  #endif
#endif

    sendDebug = false;
}
Code pour Arduino Leonardo

5) Leobodnar

Cet adaptateur permet de brancher les pédales SRT sans avoir à manipuler de code. En effet, Leobodnar met à disposition un logiciel simple d’utilisation qui permet de calibrer les pédales.

J’ai créé une boîte de jonction : un connecteur VGA mâle d’un côté, et trois câbles en sortie (diamètre AWG22, c’est celui indiqué dans la liste de course des pédales. Il y a un système anti-arrachement qui assure un fonctionnement fiable. Les fichiers 3D sont sur Thingiverse. Le connecteur mâle peut-être commandé ici sur Amazon, ou Aliexpress.

6) Thrustmaster

Les volants Thrustmaster T-GT, T300, T150, TS-XW, TX et TMX sont reliés aux pédaliers via un câble RJ12 6P6C (6 fils). Si vous ne savez pas où est le 1 sur votre câble, regardez les codes couleurs sur google.

1 – Frein

2 – Accélérateur

3 – Embrayage

4 – VCC ( +5v)

5 – Masse ( 0v)

6 – Masse ( 0v)

Passionné de bagnoles depuis tout petit ! J'ai appris les multiples déclinaisons de la Skyline R34 à travers les Gran Tursimo, jusqu'à découvrir GTR2 au volant d'un clavier. Quelques années plus tard je replonge corps et âmes dans le Sim Racing équipé d'un G27 qui me fera entrer dans le monde du DIY. Toujours à la recherche d'une immersion hors d'atteinte dans la réalité, je développe des projets que je prends soin de rendre accessibles à tout possesseur d'imprimante 3D !
Posts created 124

10 commentaires pour “Interfaces pour les pédales

  1. Bonjour Lebois,

    Super explication encore une fois.
    Je me suis attaqué au coté harware de ta pédale hydraulique SRT version 5.3.
    tout est nickel dans ma version beta.
    Je me suis donc lancé sur la programmation d’une leonardo. Et tout semble marcher. iracing le reconnait ( même si à l’envers pour le moment). Mais j’ai cependant un soucis avec le maximum de pression. impossible de dépasser le 1011 en lisant les valeurs verbose dans le moniteur même si je definis le max à plus de 1024 (ou plus). j’ai pourtant un capteur 0-500psi. je n’arrive pas à comprendre où aurais-je pu faire une erreur.

    As tu déjà rencontré ce problème?

    Merci d’avance et bonne journée

    1. Salut ! Désolé je viens seulement de voir mon message… La valeur lue par l’arduino va de 0 (0V) à 1023 (5V), donc la valeur lue ne peut excéder 1023. Normalement avec un capteur 500psi, vu la géométrie de la pédale, dépasser 50% est difficile. Si tu souhaites que 50% soit le max de ta pédale, alors tu mets maxBrake = 511 (1023/2 en gros). Dans le verbose, il affichera 511 quand tu seras à 50% du capteur, mais en jeu, ce sera ton 100%.

  2. Salut Lebois
    Ca y est je me lance dans la réalisation de tes pédales, j’ai un ami qui me réalise les pièces 3D, donc je voulais confirmation .J’ai un arduino micro est ce suffisant pour alimenter la pédale de frein et d’accélérateur, je trouve que c’est bien petit pour alimenter les deux pédales, dans ta description tu dis arduino léonardo ou micro, Léonardo ok il y a une alimemntation externe mais pas l’arduino micro, peux tu me confirmer que cela va fonctionner.
    Merci à toi encore félicitation pour toutes tes réalisations.
    Marino

  3. Salut,
    Je viens de televerser le code pour l’arduino mais j’ai une erreur comment5 la corriger.
    merci

    Joystick.h: No such file or directory

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut