Forum: Projekte & Code R/C-Fernsteuerung -> USB Konverter in C (V-USB, HID-Joystick, PPM-Dekoder)


von Thomas P. (Firma: www.thomaspfeifer.net) (thopf) Flattr this


Lesenswert?

Hallo,

ich möchte meinen PPM nach USB-Konverter vorstellen. Damit kann man eine
handelsübliche Modellbau-Fernsteuerung mit dem PC verbinden.
USB-seitig verhält sich die Schaltung wie ein USB-Joystick.
Der PPM-Dekoder ist sicherlich auch für andere Projekte nützlich.

USB-Teil:
* Software-USB-Stack basierend auf V-USB
* Emulation eines USB-Joysticks mit 8 Achsen
* Übertragung nur bei Änderung (geringe CPU-Last auf dem Host-PC)
* HID-kompatibel - keine Treiber für Windows und Linux erforderlich

PPM-Dekoder:
* Vollständig Interrupt-basiert
* Jitterfrei, auf 1 Clk genau (auch bei anderen Interrupts)
* Automatische Anpassung an 1-8 Kanäle
* NewData-Flag, wenn neue Daten vorliegen
* Automatische Anpassung an Taktrate

Projektseite: http://thomaspfeifer.net/ppm2usb_adapter.htm
Download/Git-Repo: http://github.com/thomaspfeifer/PPM2USB

Gruß
Thomas

von Karl (Gast)


Lesenswert?

Besten Dank, funktioniert gut!

von Lowtzow .. (lowtzow)


Lesenswert?

hmm, schaut sehr interessant aus!
muss ich auch mal testen!

von Müsli (Gast)


Lesenswert?

Hallo

Funktioniert bei mir mit Dx6i - beide Knüppel und Gear-Schalter also 5 
Kanäle..
Allerdings mit mx24s bekomme ich weder mit ppm10, ppm18 noch ppm24 eine 
Anzeige irgendeines Ausschlages oder einer Reaktion. Obwohl Flaps 
natürlich schon noch schön wären.... :)

Vieleicht steig ich ja noch mal durch die Materie der Eigenartigen Worte 
und der Magie des schwarzen Rauches der wenn er erst einmal aus einem 
Chip entschwindet jedwede Funktion desselbigen auf alle Zeit erlöschen 
läßt.

Danke dennoch vielmals. Deine Schaltung ersetzt bei mir einen china 
Dongle der nach einiger Zeit einfach nicht mehr funktioniert hat und der 
nur 4 Kanäle hatte.

grüße
Thomas

von Müsli (Gast)


Lesenswert?

ps:
Getestet auf:
Vista mit Aerofly Professional deluxe
Win7 mit FMS

von Bastler (Gast)


Lesenswert?

Habe das Teil auch mit voller begeisterung nachgebaut.
Es meldet sich schön Brav in Windows als Gamecontroller an.
Jedoch funktioniert das Teil nicht mit der Graupner mx-12.

Was mir auch noch aufgefallen ist Andere die solch ein gerät gebaut 
Haben haben noch einen Transistor am Eingang. Ich schätze das dass 
Signal der mx-Serie zu Schwach ist und erst auf TTL-Pegel gebracht 
werden muss.

Werde mal einen nicht-inventierenden Versterker vorschalten.

von eman (Gast)


Lesenswert?


von Bastler (Gast)


Lesenswert?

Das Interface läuft jetzt auch mit der MX-12 von Graupner. Man muss 
dafür einen pullup (Ich habe 12kzu 5V) am DSC Ausgang der Funke hängen 
und dahinter einen Transitor(2N2222 mit 3,3k am Kolektor zu 5V) zur 
inventiereung des Signals.

Mich würde noch interessieren ob man in den Code Taster integrieren 
kann, Cool währe wenn mann das mit DIP-Schalter jeden Kanal einzeln 
umstellen könnte ob Analog oder Taster.

von Bastler der 7. (Gast)


Lesenswert?

Bastler schrieb:
> Mich würde noch interessieren ob man in den Code Taster integrieren
> kann, Cool währe wenn mann das mit DIP-Schalter jeden Kanal einzeln
> umstellen könnte ob Analog oder Taster.

Ich habe das Teil auch vor einiger zeit mal aufgebaut. Das was bastler 
geschrieben hatt würde mich auch interessieren da man die Funke dann 
auch für Computerspiele benutzen könnte. Ich kenne mich leider in dem 
Gebiet USB und C nicht so gut aus. Kann vieleicht Jemand von euch das 
bitte probiern zu ändern?

von Carsten L. (inoculator)


Lesenswert?

Hallo zusammen,

ich bin auch auf dieses Projekt gestoßen und möchte es gerne verwenden.
Mein Problem:
Ich kann ein wenig C und auch C++ und Assembler ist mir auch kein 
Fremdwort, aber mit den IDEs habe ich so meine Herausforderungen, da ich 
bis heute nicht einmal am PC mit dieser Entwicklung gearbeitet habe.

Die Grundfrage ist:
Wie bekomme ich aus dem GH Projekt eine mit Flip zu verarbeitende HEX 
Datei für einen AT90USB162 ?

Ich habe soweit alles am Start, daß ich den USB Stick in Flip sehen 
kann.
Mir fehlt der IDE Teil.
Ich arbeite bislang mit VSCode für andere Sprachen. Kann ich da den 
Compiler irgendwie einbinden? Oder muss ich auf das fette Packet von 
Microchip zurückgreifen?

Gruss
Carsten

von Εrnst B. (ernst)


Lesenswert?

Carsten L. schrieb:
> Wie bekomme ich aus dem GH Projekt eine mit Flip zu verarbeitende HEX
> Datei für einen AT90USB162 ?

Falscher µC. Das Projekt ist für Atmega8 (Ohne Hardware-USB, USB wird 
per Software emuliert).

Evtl. kriegt man das mit ein paar Anpassungen auf deinen AT90USB. Dessen 
USB-Hardware liegt dann ungenutzt brach.

Oder: Starte mit einem USB-Joystick-Beispielprojekt für deinen µC, und 
nimm dir nur den PPM-Decoder von Thomas dazu.

Carsten L. schrieb:
> Ich arbeite bislang mit VSCode für andere Sprachen. Kann ich da den
> Compiler irgendwie einbinden?

https://platformio.org/
(Plugin für vscode)
Dazu brauchst du noch eine 5-Zeilen-Config-Datei, die das Makefile aus 
dem Originalprojekt ersetzt.

von Carsten L. (inoculator)


Lesenswert?

Εrnst B. schrieb:
>
> Falscher µC. Das Projekt ist für Atmega8 (Ohne Hardware-USB, USB wird
> per Software emuliert).
>
Das ist mir klar. Ich muss den Code an den AT90 anpassen. Ich werde 
zunächst die Emulation behalten und wenn das läuft, kann ich anfangen 
mich in die AT90 USB Schnittstelle einzuarbeiten und mein eigenes Ding 
daraus machen.

Εrnst B. schrieb:
>
> https://platformio.org/
> (Plugin für vscode)
> Dazu brauchst du noch eine 5-Zeilen-Config-Datei, die das Makefile aus
> dem Originalprojekt ersetzt.

Danke.
Leider sind ausgerechnet die USB Versionen des AT90 nicht in der Board 
Liste.
Na toll... es kann ja auch nichts mal einfach so funktionieren.... ;-)

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Carsten L. schrieb:
> Das ist mir klar. Ich muss den Code an den AT90 anpassen

Btw: Du bist hier keineswegs auf einen AVR festgelegt. Wenn du sowieso 
auf einen Controller mit Hardware-USB portierst, kannst du auch einen 
moderneren Controller mit Hardware-USB nutzen. Auf modernen Controllern 
mit leistungsfähigen Timern ist das Dekodieren einer PPM ziemlich 
einfach. Fertige Libraries für USB gibt es da natürlich sowieso.

von Carsten L. (inoculator)


Lesenswert?

Niklas G. schrieb:
> Btw: Du bist hier keineswegs auf einen AVR festgelegt.

Ja, das ist mir klar. Ich hatte den AT90 nur als Stick in meiner 
Schublade liegen. Den hatte ich vor gefühlten 100 Jahren mal geschenkt 
bekommen. Und jetzt bietet es sich halt an, ihm einen Nutzen zu geben.

von Harald K. (kirnbichler)


Lesenswert?

Carsten L. schrieb:
> Und jetzt bietet es sich halt an, ihm einen Nutzen zu geben.

Warum? Der ist steinalt, bessere Chancen und bessere Unterstützung wirst 
Du mit einem ATmega32U4 haben. Der ist u.a. auf dem Ardino Micro drauf:

https://store.arduino.cc/en-de/products/arduino-micro

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.