Inhaltsverzeichnis:

R/C-zu-USB-Brücke - Gunook
R/C-zu-USB-Brücke - Gunook

Video: R/C-zu-USB-Brücke - Gunook

Video: R/C-zu-USB-Brücke - Gunook
Video: DroneMesh ALL-IN-ONE USB // How Play Wireless with Any RC Transmitter 2024, November
Anonim
R/C-zu-USB-Brücke
R/C-zu-USB-Brücke

Wandelt PPM-Signale von einem Funkempfänger in Joystick-Positionen um

Verwenden Sie es, um Ihre Lieblingsspiele und Flugsimulatoren mit Ihrem RC-Funksender zu spielen. Dieses Instructable verwendet ein Arduino von littleBits und einen DSMX-Empfänger sowie ein einfaches Code-Snippet, um diese Konvertierung durchzuführen.

Du wirst brauchen

  • Leistung
  • Arduino
  • USB-Kabel
  • Stiftleisten
  • Überbrückungskabel
  • ein Funkempfänger mit PPM-Ausgang.

Schritt 1: Lötstiftleisten an die zusätzlichen I/O-Anschlüsse des Arduino

Lötstiftleisten an die zusätzlichen I/O-Ports des Arduino
Lötstiftleisten an die zusätzlichen I/O-Ports des Arduino

Um den Empfänger (RX) mit Strom zu versorgen, müssen dem Arduino Stiftleisten hinzugefügt werden. Dadurch wird auch die Verkabelung zwischen dem Bit und dem RX viel einfacher. Weitere Informationen finden Sie unter

Schritt 2: Fügen Sie die Arduino Joystick-Bibliothek zu Ihrer IDE hinzu

Fügen Sie Ihrer IDE die Arduino Joystick-Bibliothek hinzu
Fügen Sie Ihrer IDE die Arduino Joystick-Bibliothek hinzu

Sie finden die Bibliothek auf GitHub, https://github.com/MHeironimus/ArduinoJoystickLib… Vielen Dank, Matthew Heironimus, für das Schreiben.

Nur bestimmte Arduinos können ein HID wie einen Joystick emulieren. Da der littleBits-Mikrocontroller im Herzen ein Arduino Leonardo ist, können Sie loslegen.

Schritt 3: Flashen Sie den Code auf den Arduino

#include #define inputPin 16#define Kanäle 4 #define lo 800 //An die Ausgabe von RX anpassen#define hi 1600 //Anpassen an die Ausgabe von RX#Define Filter 10int channel[channels]; int previousValue[Kanäle]; int counter = 0;Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_MULTI_AXIS, 0, 0, true, true, false, false, false, false, true, true, false, false, false);void setup(){ Joystick.setXAxisRange(lo, Hi); Joystick.setYAxisRange(lo, hallo); Joystick.setThrottleRange(lo, hallo); Joystick.setRudderRange (lo, hallo); Joystick.begin(); Serial.begin (9600); pinMode (inputPin, INPUT); }void loop () { if (pulseIn (inputPin, HIGH) > 3000) { for (int i = 0; i <= channel-1; i++) { channel = pulseIn (inputPin, HIGH); } for(int i = 0; i <=channels-1; i++) { if((channel > 2000) || (channel <500)) {channel = previousValue; aufrechtzuerhalten. Sonst {Kanal = (vorherigerWert+Kanal)/2; Zähler++; } } Joystick.setXAxis(channel[0]); Joystick.setYAxis (Kanal[1]); Joystick.setThrottle (Kanal [2]); Joystick.setRudder(Kanal[3]); aufrechtzuerhalten. Wenn (Zähler > Filter) { for (int i = 0; i <= Kanäle-1; i ++) { Serial.print ("Kanal"); Serial.print (i+1); Serial.print (: "); Serial.println (Kanal); vorherigerWert=Kanal; } Zähler=0; } }

Bitte beachten Sie, dass der Code, der zwischen dem R/C-Signal und dem emulierten USB-HID überbrückt, in seiner einfachsten Form vorliegt. Die hier verwendete Funktion – pulseIn – ist eine Sperrfunktion. Lesen Sie hier und hier, wie Sie einen nicht-blockierenden Ansatz mit Interrupts implementieren.

Schritt 4: Führen Sie die Verkabelung durch

Mach die Verkabelung
Mach die Verkabelung
Mach die Verkabelung
Mach die Verkabelung

Verbinden Sie das Überbrückungskabel / DuPont-Kabel zwischen dem Bit und dem RX. Die Stecker am Ende dieser Kabel müssen weiblich sein. Wir verbinden GND (blau), VCC (braun) und Signal (orange) vom PPM-Port des RX mit GND, VCC und d16 auf dem Arduino.

Schritt 5: Binden Sie den Empfänger

Trennen Sie den Arduino vom Strom. Stecken Sie den Bindungskabelbaum in die mit BIND gekennzeichnete Steckerposition am RX. Schalten Sie Ihren Funksender ein und schalten Sie ihn in den Bindemodus. Als nächstes legen Sie Strom an den Arduino an. Der Bindevorgang war erfolgreich, wenn die LED im Empfänger aufleuchtet.

Schritt 6: Passen Sie den Code an Ihre Umstände an

Die Konstanten hi und lo in der Arduino-Skizze müssen geändert werden, um die tatsächliche Ausgabe des von Ihnen verwendeten Empfängers widerzuspiegeln.

#define lo 800

#define hallo 1600

Die Signale innerhalb des PPM-Pulses reichen idealerweise von 1000μs bis 2000μs. Der in diesem Instructable verwendete RX gibt Werte ungefähr zwischen 800 und 1600 aus und ist auf jedem Kanal leicht unterschiedlich. Um herauszufinden, welche Reichweite Ihr Empfänger hat, öffnen Sie den Serial Monitor in der Arduino IDE, um die Ausgabe Ihres RX zu sehen. Es wird ähnlich aussehen:

Kanal 1: 728

Kanal 2: 729 Kanal 3: 703 Kanal 4: 726 Kanal 1: 1681 Kanal 2: 1639 Kanal 3: 1613 Kanal 4: 1676

Sobald Sie eine klarere Vorstellung von dem Bereich haben, den Ihr RX ausgibt, wählen Sie gute Näherungen für hi und lo und ändern Sie die Konstanten entsprechend. Laden Sie dann die Skizze erneut auf den Arduino hoch.

Schritt 7: Kalibrieren Sie den emulierten Joystick

Schließen Sie das Gerät an Ihren Computer an und verwenden Sie die Kalibrierungsfunktion Ihres Betriebssystems, um den emulierten Joystick zu kalibrieren. Ein gutes Werkzeug für Linux ist jstest-gtk.

Weitere Verbesserungen

  • Schreiben Sie nicht blockierenden Code (siehe Schritt 3)
  • Bereiche pro Kanal festlegen, nicht global (siehe Schritt 6)

Weiterlesen

  • Redcon CM703
  • PPM