DIY RC – USB Adapter für VRC Pro

Kürzlich bin ich im Internetz über billige kleine Atmega32u4 USB Knuffel gestolpert.
Dachte mir die wirken gut um USB Adapter zu basteln, also hab ich gleich mal welche bestellt.
Als erstes habe ich mir einen Adapter vorgenommen um gängige 2-Kanal Fernsteuerungen aus dem Modellbaubereich als USB Joystick für Spiele zu nutzen.
Das ist vor allem interessant für VRC Pro, einer RC Rennsimulation für PC.

Die Platine findet man unter Arduino SS Micro und ansonsten brauchts nur 2 Servokabel.
Plus und Minus des Empfängers kommen natürlich an VCC (5V) und GND des SS Micro und für die Signalleitungen habe ich die danebenliegenden Kontakte D3 und D2 genommen die mit PD0 und PD1 des Atmega verbunden sind.

Für das Häufchen Software habe ich Arduino und die ArduinoJoystickLibrary genommen.
Der SS Micro ist kompatibel mit dem Arduino Micro und kommt mit vorinstalliertem Bootloader.
Um die vorhandenen RX und TX Leds in meinem Programm nutzen zu können, musste ich die USBCore.cpp von Arduino bearbeiten. Diese liegt im Download natürlich bei, ist aber optional.
Die Datei sollte sich in Arduino/hardware/arduino/avr/cores/arduino befinden.
Die Änderungen lassen sich deaktivieren indem man #define NOLEDS auskommentiert.
Wenn man die Datei nicht ersetzt signalisieren die LEDs nicht korrekt ob beide Kanäle des Empfängers angeschlossen sind. Ist also eigentlich ziemlich unwichtig.

Nach dem Aufspielen der Software wird das ganze nun als USB-Gamecontroller erkannt.
Nun muss der Joystick nurnoch kalibriert werden und sollte dann seinen Dienst vollrichten.

Das ganze sieht nun nicht besonders elegant aus oder so.
Ist mit unter 5€ aber sehr viel günstiger als fertige Lösungen.
Vielleicht kann ja jemand etwas damit anfangen. Die Software findet ihr hier:
Download 2Ch Version 1.0


Nachtrag: 4Ch Update

Aufgrund mehrerer Nachfragen gibt es hier eine neue Version mit Unterstützung für bis zu 4 Kanälen. Es beinhaltet auch ein Bild, welches die Verbindung veranschaulichen sollte.

Download 4Ch Version 1.0


Nachtrag: Kompatibilität

Das Projekt sollte ohne Änderung kompatibel sein mit folgenden Boards:

SS Micro -> SCL D3SDA D2TX D1RX D0

DM Micro -> SCLSDATXRX

CJMCU Beetle -> SCLSDATXRX

Arduino Micro -> 32TXRX

Arduino Leonardo -> 32TX 1RX 0

Sparkfun Pro Micro (5V) -> 32TXRX


Nachtrag: Update 1.1

Ich habe das Delay im Code reduziert wie Gary hier beschrieben hat.

Ich spüre zwar spontan keinen Unterschied aber andere vielleicht schon.

Download 4Ch Version 1.1

PS: Eine englische Schritt-für-Schritt Anleitung findet ihr auf micropanoply.com!

English step-by-step instructions can be found on micropanoply.com!

Thanks!

Comments (56)

  1. 02:24, 18. April 2018Ricardo  / Antworten

    Hi , is it possible make ir work with 3ch.?
    Retarda from Portugal
    Ricardo

    • 12:34, 14. August 2018Hummtaro  / Antworten

      Hey! Sure!
      It would be easy to add two more channels by using pins D0 and D1, wich are connected to PD2 (INT2) and PD3 (INT3). :)

      Greetings

  2. 12:43, 24. Oktober 2018Ricardo  / Antworten

    hello it is me ricardo again.
    so i bought the pro mini board with 32u4,and then i connect the pins 8, 9, 10 to the pwm signal from the receiver ,str, thr, aux.
    i flash your code to the board, and the windows see it as a controler Sparkfan pro micro.
    but when i move the steering or thr. on the radio nothing happens on the control setings.
    can you guide me thro your code to change the input pins?

    regards
    Ricardo

    • 17:55, 13. März 2019Hummtaro  / Antworten

      A bit late but i updated the main post! :)

  3. 20:50, 19. November 2018Griff  / Antworten

    Hi, This looks very good and promising. Please would you post an update. I’m not very good at understanding flashing code and things like that, but I’m able to do soldering, etc. Please could you write a little more, with a few more pictures to help me. I need to make one work with VRC PRO and my Flysky FS GT3C radio. many thanks

  4. 14:04, 22. November 2018griff  / Antworten

    any update on this ? does it work ??

  5. 14:06, 22. November 2018griff  / Antworten

    Ricardo, Did you find the answer to your problem ? Did you get it working ??

  6. 12:23, 3. März 2019Rodrigo  / Antworten

    Hi,

    Great job!
    I have ordered one board to use for VRC.
    Do you mind sharing the connection scematic to se servo leads?

    Thanks!

    • 17:55, 13. März 2019Hummtaro  / Antworten

      A bit late but i updated the main post! :)

  7. 18:57, 6. April 2019Ricardo  / Antworten

    @griff
    Hello, yes it work, in my board that is a Pro micro (https://farm8.staticflickr.com/7538/27704970094_a922871f10_b.jpg)
    and my pins PD0, Int0 is pin 3,
    PD1, int1 is pin 2

    Hummtaro, when i add a wire to PD2, int2, what i need to code on arduino to recognize the new input?

  8. 19:00, 6. April 2019Ricardo  / Antworten

    I just saw the update now, i will test-it and give a word.!

    you are awesome !!!

  9. 21:14, 6. April 2019Ricardo  / Antworten

    it gave me joystic error :s

  10. 21:16, 6. April 2019Ricardo  / Antworten

    hello this line
    #include are in red color whit this message

    exit status 1
    Joystick.h: No such file or directory

  11. 22:56, 6. April 2019Ricardo  / Antworten

    i really don’t understand, my arduino works just fine with you amaizing code, for flash the new code, i instal again arduino ide, add my board to board list and flash a setup and loop with nothing to clear the memory, after the simple flash, my windows doesn’t recognise the board…. what i’ve done? :(

  12. 22:12, 7. April 2019Ricardo  / Antworten

    Good news!!!!! soo at first for mistake i delete the bootloader of my board.
    -After fix it, i installed IDE 1.8.9, and add the sparkfun board to library.
    -Add a joystic library and your RCusb4, select my board and upload the code.
    -Now with my Spektrum DX3S fanaly i can drive and push the RS bottun to restart the car!

    My board is a pro micro ATMega32u4.

    • 19:29, 18. April 2019Hummtaro  / Antworten

      Glad to hear finally everything went fine!
      I wish you much fun with your new adaptor! :)

  13. 22:42, 10. Juli 2019Rodrigo  / Antworten

    Hi,

    I am not able to verify/compile.
    My computer detects the board as an arduino leonardo, but when i try to verify i get the following error:
    Arduino: 1.8.8 (Windows 10), Board: „Arduino Leonardo“

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\ArduinoJoystickLibrary-master\Joystick\src\Joystick.cpp:21:0:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\ArduinoJoystickLibrary-master\Joystick\src\Joystick.h:24:35: fatal error: DynamicHID/DynamicHID.h: No such file or directory

    compilation terminated.

    exit status 1
    Error compiling for board Arduino Leonardo.

    This report would have more information with
    „Show verbose output during compilation“
    option enabled in File -> Preferences.

    I have the COM3 port selected and it is correct with the board.

    Can anyone help me with a step-by-step?

    • 04:49, 17. Juli 2019Hummtaro  / Antworten

      This looks like you have installed the Joystick library to the wrong location.

      First remove your wrongly installed joystick library..
      Then extract the downloaded Joystick library to one of those locations:
      %userprofile%\Documents\Arduino\libraries\
      C:\Program Files (x86)\Arduino\libraries\

      The folder named „Joystick“ should be directly in there.
      NOT inside a „ArduinoJoystickLibrary-master“ subfolder.

      Then you have to open my source code, select your Arduino Leonardo as board and press Upload..

      Good luck! :)

  14. 22:57, 10. Juli 2019Rodrigo  / Antworten

    @Ricardo
    Hi Ricardo,

    Can you please explain me how can i program my board?
    What steps have you done to make it work?

    Kind regards,
    Rodrigo Catarino

  15. 21:13, 14. August 2019Ricardo  / Antworten

    @Rodrigo Ola vou assumir que sabes portugues.
    Tens de adicionar o joystic á biblioteca do programa IDE do arduino, para ele conhecer os comandos joystic.
    e depois é que mandas o codigo do Hummtaro para a placa.
    no meu caso, ainda tive de instalar as placas sparkfun á biblioteca para o programa IDE conhecer o meu chip 32u4

  16. 10:00, 15. September 2019Sven  / Antworten

    Vielen Dank, läuft super! So macht VRC Spaß, kein Vergleich mit einem Gamepad. Fühlt sich fast echt an.

  17. 22:22, 9. Dezember 2019Oliver  / Antworten

    Hai,
    die Mailadresse geht leider nicht mehr.
    Das Arduino SS Micro habe ich nicht mehr so richtig gefunden und mit einem Attiny85 Board wimmelt das nur so von Fehlermeldungen beim kompilieren ;(

    • 18:30, 17. Dezember 2019Hummtaro  / Antworten

      Fisch,
      Das ‚SS Micro‘ findet man leider nur aus China: https://www.ebay.de/itm/273346469460
      Alternativ funktionieren auch andere Boards mit einem Atmega32U4, wie z.B. ‚Arduino Micro‘ oder das etwas kleinere ‚Pro Micro‘.
      Auf einem Attiny85 kann der Code überhaupt nicht funktionieren, da dieser über keine interne USB Schnittstelle verfügt..

      Liebe Grüße

  18. 07:14, 25. März 2020michael  / Antworten

    Hi I am trying this, but it only changes the „X Axis Rotation“ and „Y Axis Rotation“ when I do the calibration in Windows. The bars change and move around but the plus sign in the middle of the grid for the calibration never moves. What is happening?

    Thanks!

    • 21:32, 28. März 2020Hummtaro  / Antworten

      Hello Michael,
      the latest code supports 4 RC channels.
      If you use only two of them, the others will not move.
      Just calibrate with the two channels you use then. :-)

  19. 08:51, 27. März 2020Thomas  / Antworten

    Funktioniert das ganze auch mit einem Arduino UNO? Die kleinen sind ja anscheinend auf die schnelle nirgendwo zu bekommen…

    • 21:36, 28. März 2020Hummtaro  / Antworten

      Für den Uno müsste das Programm aufgeteilt werden, sodass der USB Teil auf dem Atmega8u4 und der RC Teil auf dem Atmega328 läuft..

      Einfacher wäre es ein Arduino Leonardo, Arduino Micro oder SparkFun ProMicro zu nutzen.
      Auf diesen 3 problemlos erhältlichen Boards läuft der Sketch direkt. :-)

  20. 22:22, 27. März 2020Alex  / Antworten

    Vielen Dank für diese Anleitung und den Code! Habe das ganze heute für einen Vereinskollegen mit einem Pro Micro gebaut, für Signal müssen hier die Pins 2 und 3 benutzt werden, für Kanal 3 und 4 müssten es dann TX1 und RX0 sein, das habe ich aber nicht probiert weil es nur um einen Adapter für VRC ging.

  21. 03:08, 29. März 2020Keightley  / Antworten

    Hi, is this the same Arduino but with different labelling on the contacts? https://i.ebayimg.com/images/g/ofgAAOSwT4lWS80k/s-l500.jpg
    Many thanks, Arun

    • 05:58, 29. März 2020Hummtaro  / Antworten

      Hello,
      it is a different board but it uses the same Atmega32U4 and should work just fine!
      Use SCL, SDA, TX, RX for signal pins.

      Greetings

  22. 09:38, 29. März 2020Adenauer Horst  / Antworten

    Ich hab im Moment diese Fehlermedung Joystick_‘ does not name a type
    Der Adapter wird vomPC als Arduino Micro erkannt. Empfänger binden funktioniert auch. Ich muss irgenwo etwas übersehen haben. Gibt es bitte eine Lösung ?

    • 16:52, 29. März 2020Hummtaro  / Antworten

      Das klingt als fehlt die Joystick Library!
      Laden sie diese hier herunter und entpacken sie den Ordner ‚Joystick‘ in das ‚libraries‘ Verzeichnis ihrer Arduino installation!

  23. 15:16, 29. März 2020Andres  / Antworten

    Hallo zusammen,

    ich habe ein anderes Board, und zwar dieses hier: https://www.amazon.de/gp/product/B07FQBQ4Z6/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1

    Folgendes Problem, ich habe die Software schon auf dem Board, jedoch heißen die Ports hier ja A0-5 macht das was? Auf den Ports habe ich aktuell auch keinen Ausschlag in der Konfiguration. WEnn ich allerdings auf RX und TX anstecke habe ich einen Ausschlag in der Konfiguration am PC kann aber nicht wirklich konfigurieren, da sich das X nicht bewegt…

    Kann mir bitte einer bei der Fehlerbehebung helfen? ICh kann ja in der Config nicht einfach aus den D ein A machen, da dann ein Fehler auftritt…. Vielen Dank.

    • 16:41, 29. März 2020Hummtaro  / Antworten

      Die Pins D3 und D2 an dem SS Micro entsprechen den Pins 3 und 2 am Pro Micro.
      Das D vor den Ziffern bedeutet, dass es ein Digital Input ist..
      Beim Pro Micro heißen die 4 Signal Pins also: 3, 2, TX, RX

      Wenn sie nur zwei Signale nutzen, Beschleunigung und Lenkung, können sie den Controller dennoch konfigurieren. Einfach ignorieren, dass sich die anderen beiden nicht bewegen. :-)

  24. 13:51, 30. März 2020Keightley  / Antworten

    Hi, sorry another question! Does the AVRPort23 ‚H‘ file need to be uploaded to the board too?

    • 15:14, 30. März 2020Hummtaro  / Antworten

      This file is used in RCUSB4.ino and will be included automatically.
      You don’t have to care about it. :-)

  25. 04:12, 31. März 2020Jan M.  / Antworten

    Servus!
    Gute Anleitung und Idee! Kommt momentan immer mehr zum Tragen.. :-)
    In einer vorherigen Antwort wurde gesagt, dass es auf einem Attiny85 nicht läuft, da keine interne USB Schnittstelle vorhanden ist.

    Wie sieht es denn mit diesem hier aus:
    https://www.az-delivery.de/products/digispark-board?variant=27602549577&gclid=Cj0KCQjwsYb0BRCOARIsAHbLPhG13l2m1zZBtQR356sSyX5FzkfIE0P31nNLv-GqTlWh1G5dzMJXjbYaAihCEALw_wcB

    Attiny85 mit interner USB Schnittstelle.
    Wenn ja, wie wäre hier die Belegung?

    Danke und Grüße,
    Jan.

    • 12:49, 31. März 2020Hummtaro  / Antworten

      Moin!
      Ja, die Nachfrage die letzte Woche ist erstaunlich!

      Der Attiny85 hat zwar genug Leistung um USB 1.1 in Software zu Emulieren, was gerne getan wird, aber es ist keine USB Hardware.
      Auch wenn ein Adapter damit möglich wäre, würde das ein gänzlich anderer Programmcode erfordern und am Ende vermutlich eine höhere Latenz haben..

      Mein Programm ist darauf ausgelegt auf einem Atmega32U4 die maximale Performance zu erreichen und läuft ohne Änderung entsprechend auch ausschließlich darauf..
      Und da es von der ArduinoJoystickLibrary abhängt, läuft es nur auf Boards die vollständig mit Arduino Micro und Leonardo kompatibel sind..

      Liebe Grüße

  26. 11:26, 31. März 2020Kristian  / Antworten

    Hello Hummtaro.

    I want to thank you for putting this together for us to use however I have an issue with the code when trying to upload it to the board (Arduino Due). I get this error message: https://drive.google.com/open?id=1rU-oVTf2_n-N4xwtKtgZ8jX76g0ZJwXA

    Do you have any suggestion why this would happen? What is the DDR port?

    • 13:00, 31. März 2020Hummtaro  / Antworten

      Hello Kristian,
      this sketch is written only for Atmega32U4 based boards like Arduino Micro and Leonardo.
      I use hardware features directly to get the maximum performance, making it impossible to run on a completely different controller..

  27. 20:31, 1. April 2020Vari23  / Antworten

    Hallo, ich komme aus Argentinien und möchte eine Anfrage stellen.
    Ich bin neu in diesem Bereich und wollte wissen, ob dies mit Atmega32u4 möglich ist
    danke und sehr gut das forum

    https://www.ebay.com/itm/New-Pro-Micro-ATmega32U4-5V-16MHz-Replace-ATmega328-Arduino-Pro-Mini/221891843710?epid=1042391255&hash=item33a9c8d67e:g:D70AAOSwVL1V~1dn

    • 21:13, 1. April 2020Hummtaro  / Antworten

      Ja, Pro Micro ATmega32U4 5V ist kompatibel!
      Viel Spaß. :)

  28. 13:27, 3. April 2020Andreas  / Antworten

    Hallo,

    auch von mir ein großes Dankeschön für die Bereitstellung und Aktualisierung der tollen Doku!
    Sind wohl einige RC Racer hier die jetzt wohl eher virtuell fahren… ;-)
    Ich habe überhaupt keine Programmiererfahrung, aber ich konnte die Software problemlos auf folgenden Pro Micro laden:

    https://ae01.alicdn.com/kf/HTB115IeFQ9WBuNjSspeq6yz5VXaY/Mini-USB-ATmega32U4-Pro-Micro-5V-16MHz-Board-Modul-F-r-Arduino-Leonardo-ATMega-32U4-Controller.jpg_640x640q70.jpg_.webp

    Habe nur noch abschließend eine Frage zum Anschluss der Servokabel. Minus löte ich an GND, Signale sind auch klar.
    Aber Plus, kommt das dann direkt gebrückt auf die J1 Lötstellen? Sehe ich das richtig?

    Dankeschön für eine kurze Antwort.

    Viele Grüße und weiter Durchhalten an alle!

    Andreas

    • 22:05, 3. April 2020Hummtaro  / Antworten

      Hallo,

      Plus kommt an den VCC Pin des Pro Micro! Der liegt Gegenüber von GND..

      Viel Spaß mit dem Adapter! :-)

  29. 04:20, 10. April 2020janos  / Antworten

    dos this work with ATmega328P chipset too?
    thank you for your time

    • 20:51, 10. April 2020Hummtaro  / Antworten

      Nope, it’s written only for Atmega32u4..

  30. 05:01, 14. April 2020janos  / Antworten

    i got the pro micro with a ATmega32u4 chip
    computer recognize it as a leonardo.
    i upload your sketch and th. and st. works but no ch3 or ch4.
    when i try to calibrate it in windows, the 1 and 2 button wasn’t show up at all.
    any suggestion?
    thanks for the quick reply

    • 13:10, 14. April 2020Hummtaro  / Antworten

      All 4 channels are analog axis, no buttons at all..
      If the other axis do not show up, you probably have used the old 2ch RCUSB code instead of the newer 4ch RCUSB4..

  31. 11:56, 17. April 2020Alex  / Antworten

    Hallo!

    Ich habe keinen Plan wie ich die Software komplett auf den Arduino Pro Micro bekomme.
    Habe mir die Arduino Software runtergezogen und hab den Sketch drin. Jetzt sagt mir das Programm „Fehler beim kompilieren für das Board Arduino Micro“ ??

    • 20:34, 20. April 2020Hummtaro  / Antworten

      Du benötigst auch noch die genannte und verlinkte ArduinoJoystickLibrary! :-)

  32. 09:09, 19. April 2020Andreas  / Antworten

    @Hummtaro
    Dankeschön! Funktioniert einwandfrei!
    Nur einen Lötpunkt auf J1 gesetzt, damit Brücke besteht und 5V anliegen. Plus dann an VCC habe ich nun auch verstanden ;-)
    Viele Grüße,
    Andreas

    • 13:22, 21. April 2020Hummtaro  / Antworten

      Bei dem Pro Micro 5V sollte das gleich so sein! :-)

  33. 20:08, 10. Mai 2020michse  / Antworten

    Hummtaro / Antworten

    Du benötigst auch noch die genannte und verlinkte ArduinoJoystickLibrary! :-)

    Moin Hummtaro,
    vielen Dank für die Anleitung. Habe das ATmega32u4 verlötet und diese oben erwähnte Joystick Library runtergeladen. Beim entpacken erhielt ich folgende Fehlermeldung.

    „Angegebener Ordner/ZIP-Datei enthält keine gültige Bibliothek“

    Kannst Du evtl noch eine andere Joystick Library empfehlen. Mein Adapter wird zur Zeit nur als Tastatur/Maus erkannt. :-)

    Vielen Dank und viele Grüße
    michse

    • 21:07, 12. Mai 2020Hummtaro  / Antworten

      Irgendetwas anderes als die genannte Library wird dir nicht weiterhelfen.
      Du musst die Library einfach nur von Hand in den richtigen Ordner entpacken anstatt die ZIP in Arduino zu importieren. Das steht auf der verlinkten Seite der ArduinoJoystickLibrary..

  34. 16:42, 12. Mai 2020Joe Cool  / Antworten

    Hallo zusammen, komme so langsam voran, erhalte jetzt aber folgende Fehlermeldung:exit „status 1
    AVRPort23.h: No such file or Directory“
    Ne Idee, woran das liegen kann?

    Ich danke euch,

    Joe

    • 21:02, 12. Mai 2020Hummtaro  / Antworten

      Das kann wohl einzig und allein daran liegen, dass die Datei ‚AVRPort23.h‘ nicht da ist wo sie hingehört. Was auch immer du getan hast wird wohl falsch gewesen sein..

Schreibe einen Kommentar

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pingbacks (0)

› No pingbacks yet.