Arduino – Logitech G27 Shifter a USB

Vamos a convertir un shifter del g27 a usb con una placa arduino.

NOTA Importante: Compilar con la versión 1.6.9 del IDE de Arduino.

Dejo el link a continuación.

https://www.arduino.cc/download_handler.php?f=/arduino-1.6.9-windows.zip

Cuando compré el thrustmaster t300 alcantara me quedé sin poder utilizar el cambio de marchas que tenia con el Logitech G27 y la opción de comprar la Thrustmaster TH8A pues como que no me apetecía por su precio y por que tenia la del g27 tirada por ahí.

Pensé en la opción de comprar el adaptador de Leo Bodnar para el shifter, de hecho iba a comprarlo hasta que entré en la pagina y lo tenían fuera de stock, en ese momento me puse a rebuscar un poco por Internet y encontré la solución, para variar con un Arduino.

Voy a explicar paso a paso como he hecho para tener este adaptador por menos de 13€.

Antes de nada voy poner los links a las páginas en las que me basé para hacer el aparato, ya que lo único que hice yo es montarlo.

La primera de las paginas se basa en el proyecto de la segunda pagina, el cual utiliza dos db9 y mete con una controladora el shifter mas los pedales. Yo como ya tenía el adaptador Leo Bodnar para los pedales solo quería la parte del Shifter.

https://www.xsimulator.net/community/threads/g27-shifter-and-buttons-standalone-usb.9654/

https://github.com/functionreturnfunction/G27_Pedals_and_Shifter

Los componentes necesarios para el proyecto son los siguientes:

Pro Micro ATmega32U4 5V 16MHz (Sparkfun clone) Link a Amazon.es

La peculiaridad de este arduino es que se puede configurar como un mando de juegos, el Windows lo detecta como un mando.

Conector DB9 Macho

Caja de electrónica de plástico

Tanto la caja como el conector DB9 y los cables se pueden conseguir en cualquier tienda de electrónica a un precio bajísimo, el DB9 creo recordar que me costó 0,40€ y la caja no llegó al euro.

Las soldaduras quedarían de la siguiente manera:

Quedaria asi:

Igual que a la persona del primer post en el que me basé, mi clon del promicro de sparkfun tiene los pines 0 y 1 intercambiados, osea que hay que intercambiar los pines 0 y 1 del gráfico anterior por el lado del pro micro. El 1 del db9 va al 1 de la pro micro y el 2 del db9 va al 0 de la pro micro.

Ahora tocaría soldar, con la ayuda de mi compañero de trabajo, yo soy penoso soldando, la cosa quedó así.

Después, simplemente coger la cajita y hacerle los agujeros para el DB9, ya sea con limas, dremel o lo que querais.

Lo siguiente sería instalar el Arduino IDE de la siguiente página:

Nota: con versiones superiores a la 1.6.9 puede dar problemas al compilar.

https://www.arduino.cc/download_handler.php?f=/arduino-1.6.9-windows.zip

Despues instalamos las librerías de sparkfun en el IDE de arduino. Está perfectamente explicado en la pagina de github de sparkfun que os dejo a continuación.

https://github.com/sparkfun/Arduino_Boards

Una vez está correctamente instalado el IDEy las librerias de sparkfun lo único que hay que hacer es meter en las librerias de arduino los siguientes ficheros:

https://www.racingsimulator.es/wp-content/uploads/G27PedalsShifter.cpp

https://www.racingsimulator.es/wp-content/uploads/G27PedalsShifter.h

Creáis una carpeta en las librerías de arduino llamada G27_SHIFTER_USB y metéis esos 2 ficheros dentro. (La carpeta de las librerías suele estar en “mis documentos\arduino\librarys”)

Despues se crea un nuevo proyecto y agregais el codigo del siguiente fichero:

https://www.racingsimulator.es/wp-content/uploads/G27_Shifter_USB.ino

Configuramos el Hardware en el IDE. Vamos a herramientas y elegimos la placa sparkfun micro 5v 16mhz y el puerto serie que está utilizando.

Compilamos el proyecto y lo subimos al Arduino y ya queda listo.

Enchufamos la Palanca de cambios y ya la podemos configurar en los juegos. El pc nos la detecta como un dispositivo de juegos nuevo.

En la siguiente foto meto primera marcha y pulso botones al azar, funcionan todos los botones de la palanca.

Un Saludo, espero que le resulte de utilidad a alguien.

Cualquier duda podéis dejar comentarios o contactarme vía twitter.

40 comentarios sobre “Arduino – Logitech G27 Shifter a USB”

  1. Muchas Gracias, he seguido el proceso y se puede usar para el shifter del G29 aplicando algunas modificaciones en el código. Básicamente eliminando los botones aparir del 7 y ajustando el SHIFTER AXIS THRESHOLDS
    #define SHIFTER_XAXIS_12 350 //Gears 1,2
    #define SHIFTER_XAXIS_56 500 //Gears 5,6, R
    #define SHIFTER_YAXIS_135 750 //Gears 1,3,5
    #define SHIFTER_YAXIS_246 200 //Gears 2,4,6, R

    1. For my G29 Shifter This Value are Best with Arduino Pro Micro:

      // SHIFTER AXIS THRESHOLDS
      #define SHIFTER_XAXIS_12 400 //Gears 1,2
      #define SHIFTER_XAXIS_56 550 //Gears 5,6, R
      #define SHIFTER_YAXIS_135 800 //Gears 1,3,5
      #define SHIFTER_YAXIS_246 200 //Gears 2,4,6, R

  2. Hola, muchas gracias por el tutorial y enseñar que existe la posibilidad de utilizar los pedales y el shifter separado de la base del G25/27/29 por poco dinero. Lo que no termino de entender es el orden de soldadura de los cables. Podrias poner un diagrama o esquema que se vea claramente los cables donde van?

    Un saludo y gracias de antemano

    1. Siento responder tan tarde, últimamente estoy liadisimo. Cuando tenga tiempo saco una foto decente del cacharro y edito con los pines para que veáis claramente las soldaduras. A ver si en un par de días puedo tenerlo listo.
      Un Saludo.

  3. buen día mi querido amigo
    desde ya te felicito por este tutorial
    Tengo un shifter g25 y me gustaría usalo junto a mi drive force gt
    pero como soy laico en arduino tendría como hacer un video paso a paso sobre esa adaptación
    otra pregunta qué tipos de placa arduino sirve para ese proyecto?
    desde ya agradecer la atención
                                             ¡Felicidades !!!!!

    1. Siento haber tardado tanto en contestar ando liadillo.

      Te dejo un link de la pagina original donde se trata ese problema.
      https://github.com/functionreturnfunction/G27_Pedals_and_Shifter/issues/3

      Al parecer, pasa esto si te está detectando el Arduino como un “Arduino nano” y el Windows te lo tiene que detectar como un Pro micro instalando los drivers de Sparkfun
      También mira de estar compilando con la versión antigua de Arduino (la 1.6.9)
      En casa de un amigo nos diera fallos de compilación también (no recuerdo cuales) y fue instalar todo desde cero en otro ordenador y funcionar a la primera.
      Un Saludo y espero soluciones el problema.
      Cualquier cosa ando por aquí.

  4. hola buenas alguien que haya conseguido programarla , no soy capaz dado que no pones imagenes de como meter en la carpeta “Creáis una carpeta en las librerías de arduino llamada G27_SHIFTER_USB y metéis esos 2 ficheros dentro. (La carpeta de las librerías suele estar en “mis documentos\arduino\librarys”)”
    No explicas como hacer eso y crero que me da eror por que solo le meto para compilar el ultimo link que deja” Despues se crea un nuevo proyecto y agregais el codigo del siguiente fichero:
    https://www.racingsimulator.es/wp-content/uploads/G27_Shifter_USB.ino

    SI ALGUIEN SABE COMO HACERLO Y LE HA FUNCIONADO SE ACEPTA AYUDA; GRACIAS

    1. Lo siento, no, no las vendo.
      Las soldaduras son fáciles de hacer, pillas el soldador mas básico y prueba antes en cualquiera placa vieja.
      Ya verás que con un poquitín de practica sale adelante.
      Un Saludo.

  5. Hola buenas! llego tarde pero gracias por el aporte me ha ayudado bastante ya que hay pocos tutoriales para adaptar el cambio del g27 con la pro micro y casi todo está suelto. Me llegaron esta mañana unas pocas que pedí para algunos proyectos y al menos he conseguido que funcione la palanca de cambio, pero la marcha atrás y los botones y la luz de encendido están muertos y me ha costado lo mio que funcione solo eso, 10 minutos soldando cables y y el resto del dia intentando que arranque, vamos ya estaba por dejarlo tal cual pero no es plan.. a ver si me puedes echar un cable o alguien por aquí que se haya encontrado con la misma situación, que me da que es una tontería mu grande o es algo raro.. de momento tal como conecté la pro micro se actualizaron los drivers y me lo reconoce como arduino leonardo y parece que no quiere funcionar si no es configurandola como leonardo y eso.. solo van las marchas. He probado borrando drivers, reinstalando, probando configuraciones.. pero nada. alguien sabe como configurar esto? lo configuro como leonardo o es por eso por lo que me da fallo en los botones? menos los de las marchas el resto aparece como pulsado :c

    1. Hola, has encontrado la solución? estoy igual que tú, detecta las marchas de 1ª a 6ª, pero ni marcha atrás ni el resto de botones. Parece como si no alimentase la placa de la botonera.

    2. Prueba a intercambiar los pines 1 y 0 como le pasó a ser7orio.
      Como dije en el post hay clones que tienen estos pines intercambiados al original de sparkfun, los esquemas que puse (para el mio) ya están cambiados. Si pillas uno que sea como el de sparkfun tendrás que volver a cambiarlos.
      Un saludo

  6. Hola, tengo el mismo problema, sólo me van las marchas de la 1ª a la 6ª no funcionan ni marcha atrás ni el resto de botones ni se enciende el led rojo. He comprobado que llegan los 5v a los pines VCC en el DB9 y todo correcto. ¿Alguién sabe la solución a éste problema?

      1. Efectivamente, como pongo en el post hay clones del promicro que tienen los pines 1 y 0 intercambiados (como el mio) al original del sparkfun.
        Un saludo

        1. Gracias por responder, yo vi todo el post y los comentarios y cometí el fallo de intercambiarlos sin probar antes.. como la mia es copia china (1€ y pico) pues lo cambié sin dudarlo y como funcionaban los ejes me imaginé que se debería a alguna liada mia a la hora de cargar el código, ya que soy manitas pero de programación cortito..
          perdón por no contestar antes pero ando liado también fabricándo un cockpit, un freno de mano y un display de tres módulos con dos potenciómetros para regular el brillo y el color y a parte quiero conseguir conectar también los pedales a la pro micro del adaptador del cambio.. ya que juego en un macbook pro y solo tiene 2 puertos, uno para un hdd externo con partición w10, un hub de tres puertos para shifter/pedales, display y t300 y tengo que encontrar alguna forma de conectar el freno de mano a la base sin modificarla o a alguna de las otras controladoras.. vamos que no paro.. ahora probaré a intercambiarlos d nuevo y comento, pero seguramente será eso gracias!!!

  7. Hola MasMejorConmaTK, por lo que dices entiendo que tienes una pedalera Logitech y la quieres conectar a un t300, si te sirve de ayuda yo lo hice mediante adaptador muy simple y conecté los pedales directamente al TMX en mi caso, dejo el enlace por si le interesa a alguien http://www.retrovideogames.de/mods-adaptors/adaptorcables/logitech-thrustmaster-adaptor/.
    Yo ahora también me encuentro intentado hacerme un freno de mano DIY pero en mi caso juego en Xbox one, por lo que se me complica la vida no hacerlo sin puentear un botón del volante, en tu caso quizás es buena idea utilizar uno de los botones del cambio de marchas para accionarlo con el freno de mano.

    Un saludo nrgbubus y gracias por el post!

    1. Buenas Ser7orio, Gracias por contestar! Si, tengo una pedalera de un g25 y pensé en hacer lo que comentas, puenteando directamente un db9 hembra a un cable rj12, el problema sería que de esa forma no aumentaría los pasos, así que lo descarté. He visto que se puede hacer un adaptador para pedales y shifter con una pro micro per me queda probar un par de cosas.
      Por otra parte el freno de mano tengía pensado hacerlo con otra pro micro y un potenciómetro de tipo efecto hall para que sea progresivo y no un todo o nada. Me queda por comprobar si se puede hacer una especie de leobodnar y en vez de una salida a usb que sea a rj12, que la verdad no se si será posible pero me da que sí. Y si alguien ha hecho un display de más de un módulo con sinhub por favor que le eche un ojo a esto que llevo una semana dándome de cabezazos y no avanzo.. https://forum.arduino.cc/index.php?topic=657811.0
      Y mis disculpas por desviarme del tema, que el post no trata de eso. De nuevo gracias Ser7orio y a Nrgbubus por toda la ayuda

      1. Buenos días! ya entran todas las marchas y funciona la botonera, además conseguí conectarle también la pedalera con el código del otro video pero me sigue dando una especie de pico de voltaje o no se qué.. que la posición de los ejes no para quieta, como si tuviese demasiada sensibilidad, he intentado calibrarlo pero nada, y me pasa igual con los potenciómetros del display, de la pedalera, etc y el led del cambio sigue muerto. A alguien le pasa algo de esto? Puede que necesite añadirle alguna resistencia? A parte no estoy seguro de que programador debería usar, estoy usando AVR ISP y la placa me la sigue reconociendo como arduino leonardo‍♂️
        Buen viernes!!!

        1. Hola buenas. No he tenido tiempo de contestar antes, pero ya por fin todo solucionado, después de rallarme mucho y no encontrar nada decidí revisar la continuidad de los cables.. y efectivamente era eso.. el pico de voltaje del que hablaba se debía a lo cables de la pedalera, que tenía el de masa, el de la señal del acelerador y del embrague haciendo contacto (de segunda mano), el único problema ahora es que cambié el shifter por uno de un g25 y tendría que añadir código para el modo secuencial y no doy para tanto, conseguí un código del cambio del g25 con la opción de usarlo como freno de mano pulsando 3 botones simultáneamente y volver a cambio pulsando otros 3, pero tendría que mezclar los dos códigos y si no soy capar de modificar uno.. como que no xD Creo que me haré un mod de plástico para el secuencial y listo. Ya conseguí configurar la placa como sparkfun y no como arduino leonardo, a parte conseguí dar con los pines de corriente de los leds del cambio y se encienden las de “on” y la del selector del modo secuencial (he oído que esto le resta respuesta pero no termino de creérmelo). Y de ultimas he decidido sacrificar la pedalera que venía con el t300 (esa malísima que es toda de plástico y la venden por 10-15 euros) para utlizar el cable junto con uno de los potenciómetros y el engranaje que trae para la fabricación del freno de mano que tenia pensado hacer y así soluciono también el problema de que faltaba un puerto usb donde enchufarla, ya que va directa al t300, por si le sirve de solución también a alguien. Por cierto acabo de pillarme un par de juegos y he visto que han vuelto a rebajar: dirt rally 1, 2, assetto corsa, ..corsa unlimited edition y ..corsa competizione) Gracias de nuevo y Saludos!

  8. hola, sabes como se puede modificar el codigo para usar solo los pedales y un shifter secuencial casero?
    el shifter funciona con 2 microswitch

  9. Hello, one of the items says “Once the IDE and the sparkfun libraries are correctly installed, the only thing to do is put the following files in the arduino libraries:

    https://www.racingsimulator.es/wp-content/uploads/G27PedalsShifter.cpp

    https://www.racingsimulator.es/wp-content/uploads/G27PedalsShifter.h” there are two links, I open and there is a code, and it says that you need to save to the library folder, and how to save if there is just code, or just need to put each code in a normal txt file?

  10. but I still have this problem, I do not have a sparkfun micro 5V 16mhz Board, then I chose Arduino pro mikro( because I have an Arduino pro mikro) but I get this error ( C:\Users\SG\AppData\Local\Temp\arduino_modified_sketch_487502\sketch_apr19a.ino: In function ‘void setButtonStates(int*, int)’:

    sketch_apr19a:149: error: ‘G27’ was not declared in this scope

    G27.setButton(i, LOW);

    ^

    sketch_apr19a:153: error: ‘G27’ was not declared in this scope

    G27.setButton(gear – 1, HIGH);

    ^

    sketch_apr19a:157: error: ‘G27’ was not declared in this scope

    G27.setButton(buttonTable[i], buttons[i]);

    ^

    C:\Users\SG\AppData\Local\Temp\arduino_modified_sketch_487502\sketch_apr19a.ino: In function ‘void setup()’:

    sketch_apr19a:218: error: ‘G27’ was not declared in this scope

    G27.begin(false);

    ^

    C:\Users\SG\AppData\Local\Temp\arduino_modified_sketch_487502\sketch_apr19a.ino: In function ‘void loop()’:

    sketch_apr19a:244: error: ‘G27’ was not declared in this scope

    G27.sendState();

    ^

    exit status 1
    ‘G27’ was not declared in this scope

    ) who can tell you what the problem is? I will be very grateful, because I can’t set it up properly every day.

  11. Al intentar compilar, aparece el siguiente mensaje:

    cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

    exit status 1
    Erro compilando para a placa SparkFun Pro Micro

  12. Intento compilar y obtener el siguiente mensaje:

    cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

    exit status 1
    Erro compilando para a placa SparkFun Pro Micro

    1. I have used toothpicks before or a small piece of wood that was narrow enough to fit in the hole with the wire and got larger at the other end. I would stick the wire in the hole and wedge the toothpick in to firmly hold the wire in to where it didn’t wiggle an had a firm contact. Then I used glue to keep it locked in place. I would break of the extra ends off the toothpick before gluing. It has worked for me on different projects when I didn’t have a solder iron.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.