Forum: Mikrocontroller und Digitale Elektronik USB-Interface selber hertsellen


von Tobias S. (mistertobz)


Lesenswert?

Hallo.
Ich würde gerne für den Microsoft Flight Simulator ein USB-Interface 
herstellen, an das ich dann z.B. Schalter oder Knöpfe anschließen kann. 
Ich habe schon viele Beiträge gelesen, aber ich bin noch aus keinem 
wirklich schlau geworden. Das Material, was ich dazu brauchen würde, wie 
Schalter, Knöpfe, Header, Kabel, Widerstände, Copper-Clads, Salzsäure 
und Wasserstoffperoxid zum Ätzen habe ich (voreilig wie ich bin :D ) 
alles schon gekauft. Am einfachsten wäre es ja, wenn ich irgendwoher die 
Eagle-Dateien für zum Beispiel das Arcaze-USB-Interface oder vom Leo 
Bodnar BU0836x-Interface bekommen würde und das Programm, was auf dem 
Mikrocontroller ist. Ich habe aber leider noch nichts gefunden. Schwerer 
noch ist es aber für mich zu verstehen, welches Programm ich dann auf 
den Mikrocontroller schreiben müsste.

Ich hoffe, dass ich nicht zu viel verlange und ihr mir helfen könnt :D

Danke im voraus

Tobias

von Christian R. (supachris)


Lesenswert?

Nimm einen JoyWarrior und gut ist. Da musste nix selber programmieren.

von Tobias S. (mistertobz)


Lesenswert?

Danke für die Antwort.
Ich wollte die Sachen selber machen, um so wenig Geld wie möglich 
auszugeben, da es seeehr viele Schalter gibt, aber auch, um ein bisschen 
zu lernen. Gibt es nicht vielleicht auch schon fertige Programme, die 
man auf den Mikrocontroller schreiben kann?

von Cyblord -. (cyblord)


Lesenswert?

Tobias S. schrieb:
> Ich wollte die Sachen selber machen,

> Gibt es nicht vielleicht auch schon fertige Programme, die
> man auf den Mikrocontroller schreiben kann?

Was jetzt? Selber machen oder fertige Programme nutzen?

Was kannst du denn bereits in dem Bereich? So von Null auf Hundert wird 
das schwer.

von Stephan B. (matrixstorm)


Angehängte Dateien:

Lesenswert?

Hi Tobias.

Z.B.:

http://matrixstorm.com/avr/tinyusbboard/
und
http://www.obdev.at/products/vusb/prjhid.html

Dieses WE werde ich die Eagle Files des neuen Boards online als 
OpenSource bei GitHub (https://github.com/tinyusbboard) stellen.

Auch habe ich bereits letztes WE eine library zur gleichzeitigen (und 
HID boot kompatiblen) Implementierung von Maus und Tastatur fertig 
gestellt.
Diese Lib wird es fuer C und als Port fuer Arduino geben - ich versuche 
diese ebenfalls dieses WE auf github zu laden.

MfG

von Tobias S. (mistertobz)


Lesenswert?

@cyblord
Hardwaremäßig bin ich eigentlich ganz fit, also das Erstellen der 
Platine würde ich hinbekommen. Das Problem ist, dass ich nicht so ganz 
verstehe, was genau ich wie programmieren müsste, damit der Computer den 
Mikrocontroller erkennt und die Schalter auch erkennt, um sie im 
Flugsimulator zu benutzen.

: Bearbeitet durch User
von Botuser (Gast)


Lesenswert?

Das wird wohl auf eine HID USB Tastatur ausgehen.
Deine Schalter entsprechen dann Tasten auf der Tastatur.

Ich habe noch alte Trusmaster Joysticks, die hatte man in den alten 
Tastaturanschlüssen zwischengeschliffen. Aus der Zeit vor USB.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tobias S. schrieb:
> Das Problem ist, dass ich nicht so ganz verstehe, was genau ich wie
> programmieren müsste, damit der Computer den Mikrocontroller erkennt und
> die Schalter auch erkennt, um sie im Flugsimulator zu benutzen.

Sieh Dir das v-usb-Projekt an:

http://www.obdev.at/products/vusb/index.html

Da gibt es diverse Beispiele, die sich mit HID beschäftigen. HID sind 
"Human Interface Devices", also Mäuse, Tastaturen und Joysticks.

Und genau das brauchst Du für Deinen Fluchstimulator, äh, Flugsimulator.

Beispiele:

http://www.obdev.at/products/vusb/hidkeys.html
http://www.fulhack.org/boxster/index.html
http://denki.world3.net/quicklaunch.html

von Tobias S. (mistertobz)


Lesenswert?

@Stephan
Das sieht ja echt gut aus. Wie viele Schalter könnte man da anschließen? 
Womit hast du die Software geschrieben? Und, könnte man das ganze auch 
eine Nummer größer machen? Also anstatt des ATMEGA8 zum Beispiel einen 
ATMEGA32 nehmen? Ist auf jeden Fall echt interessant, was du da gemacht 
hast :D

von Stephan B. (matrixstorm)


Lesenswert?

Tobias S. schrieb:
> Wie viele Schalter könnte man da anschließen?

Wenn man die LEDs weiterhin benutzt bleiben noch 13 GPIO komplett frei.
Sagen wir 12. Das kann man in 6 Zeilen und 6 Spalen teilen.
Damit koennte man nach 
http://extremeelectronics.co.in/avr-tutorials/4x3-matrix-keypad-interface-avr-tutorial/ 
36 Tasten realisieren.

Tobias S. schrieb:
> Womit hast du die Software geschrieben?

ASM und C. Arduino teilweise verfuegbar als "extern C"-wrapper der 
C-Bibliotheken.

Tobias S. schrieb:
> Und, könnte man das ganze auch
> eine Nummer größer machen? Also anstatt des ATMEGA8 zum Beispiel einen
> ATMEGA32 nehmen?

ATmega328p ohne Probleme unterstuetzt - siehe Webseite.

MfG

von Tobias S. (mistertobz)


Lesenswert?

@Rufus Τ. Firefly
Okay, das ist ja auch das, was Stephan benutzt. Danke für die Beispiele 
:D

von Tobias S. (mistertobz)


Lesenswert?

@Stephan B.
Sorry, ich bin gerade noch ein bisschen überfordert :D
Also: Wie genau mache ich das mit V-USB? Ich habe jetzt gerade V-USB 
runtergeladen. Muss ich jetzt etwas auf den ATMEGA schreiben? Oder ist 
V-USB ein eigenes Programm? Oder sind das alles eigene Programme, die 
ich auf den ATMEGA schreiben kann? Wenn ja, welches muss ich nehmen? Wie 
würde der PC das dann erkennen?

von Stephan B. (matrixstorm)


Lesenswert?

Tobias S. schrieb:
> Wie genau mache ich das mit V-USB?

V-USB ist eine Firmwarebibliothek welche dir die Programmierung des USB 
physical layer und bissel Basicprotokoll abnimmt.
Alles darueberhinaus musst du schon selber programmieren.
Alles in allen wird dich das stark ueberfordern - du musst ja 
schliesslich auch zusaetzlich bissel USB Interna kennen.

Es gibt fertige Beispiele welche HID darauf aufbauen.
Diese sind leider i.d.R extrem schludrig "zusammengekippt" und 
implementieren das USB nicht korrekt.
Mein Implementierung wird sich 99.9% an:

Device Class Definition for Human Interface Devices (HID)
Firmware Specification--6/27/01
Version 1.11
http://www.usb.org/developers/hidpage/HID1_11.pdf

halten.


Tobias S. schrieb:
> Muss ich jetzt etwas auf den ATMEGA schreiben?

Du solltest vorher bissel  AVRDUDE ueben.
Man programmiert und anschliessend kompiliert man seine Firmware.
Der fertige Bytecode wird in den Flashspeicher des AVR geschrieben.

Zumindest den "Compilieren" Punkt kannst du kurz auslassen und dich kurz 
auf lezteres konzentrieren:

http://vserver.matrixstorm.com:1114/bideavr/atmega8.html
(angepasste Web GUI von meinem AVR Stick Projekt)

MfG

: Bearbeitet durch User
von PPL-A Flieger (Gast)


Lesenswert?

Hier gibt es USB-Interfaces und Panel Zubehör für den MS Flight 
Simulator in grosser Auswahl und noch nicht mal so teuer:

http://www.desktopaviator.com/Products/Model_2230/index.htm

von UsbNum (Gast)


Lesenswert?


von Botuser (Gast)


Lesenswert?

Was man auch recht gut zum Basteln verwenden kann ist ein PC DASH.

http://de.wikipedia.org/wiki/PC_Dash

Da kann man auf die Tasten auch ganze Befehlsketten legen.

einfach die Folientasten durch eigene Taster aus dem "Cockpit" ersetzen.

von Stefan F. (Gast)


Lesenswert?

Der Joy Warrior kann 32 Tasten + 3 Achsen. Und der hat die Software 
schon fix und fertig.

von Christian R. (supachris)


Lesenswert?

Bei deinem Kenntnisstand solltest du echt einen fertig programmierten 
Controller nehmen. Für mehr Tasten dann halt den KeyWarrior.

von o_O (Gast)


Lesenswert?

Tobias S. schrieb im Titel des Beitrag #3883606:
>hertsellen

Du kannst ja nicht einmal den Titel richtig schreiben, was willst du 
dann mit nem USB-Interface?

von Tobias S. (mistertobz)


Lesenswert?

@o_O
Naja, das kann doch jedem mal passieren. Sind 2 vertauschte Buchstaben, 
was keinen Einfluss darauf hat, ob ich was bauen kann oder nicht :D

von Tobias S. (mistertobz)


Lesenswert?

@Christian R.
Ich wollte es ja lernen, irgendwann muss man ja mal anfangen :D

von Max H. (hartl192)


Lesenswert?

Von Microchip gibt es in der MLA [1] ein Beispielprogramm wie man einen 
HID Joystick bauen kann, Sprut [1] hat da auch was.

[1] http://www.microchip.com/pagehandler/en-us/devtools/mla/home.html
[2] http://www.sprut.de/electronic/pic/projekte/usbgame/usbgame.htm

von Peter X. (peter_x)


Lesenswert?

Tobias S. schrieb:
> Ich wollte es ja lernen, irgendwann muss man ja mal anfangen :D

Dann schau dir mal das an:
http://www.recursion.jp/avrcdc/cdc-io.html
Wenn du in Visual-Basic ein Terminal(COM-Port) erstellen und diesem 
Strings übergeben kannst, dann könntest du auch etliche LEDs via USB 
blinken lassen, wie hier kürzlich gefordert wurde.
Wie man allerdings Kommandos in die Kbd-Queue  einreiht, mußt du der 
Windows-API entnehmen.

von Stephan B. (matrixstorm)


Lesenswert?

Peter Xuang schrieb:
> Dann schau dir mal das an:
> http://www.recursion.jp/avrcdc/cdc-io.html

http://www.recursion.jp/avrcdc/index.html

"
[...]
The back door to the low-speed bulk transfer is gradually closing on the 
newer OS. After enjoying this USB technology, switch to the HID protocol 
or to MCU having on-chip USB controller.
"

von Joachim B. (jar)


Lesenswert?

und warum nicht eine 10€ USB Tastatur schlachten und mit Schalter 
verdrahten nach Wunsch?

sind doch nur Tastenmatrixen man braucht nur die Zeilen Spalten 
ausklingeln.

von Peter X. (peter_x)


Lesenswert?

Stephan B. schrieb:
> "
> [...]
> The back door to the low-speed bulk transfer is gradually closing on the
> newer OS. After enjoying this USB technology, switch to the HID protocol
> or to MCU having on-chip USB controller.
> "

Most posters do criticise comments, instead of giving new answers.
Brilliant members will advance solutions.

Dein Kommentar kritisiert, bringt aber keine neuen Lösungsansätze. Mir 
ist es egal. Ich kenne genug Labertaschen, die wissen, wie es nicht mehr 
geht. Eine andere Lösung können diese aber auch nicht bringen. Schwach.

von Stephan B. (matrixstorm)


Lesenswert?

This was a quote from their own webside, btw:
> switch to the HID protocol
> or to MCU having on-chip USB controller.

Loesungsansatz nicht genug?

Ggf. zur Entspannung der Lage: Ich arbeite an einer Arduino Lib auf 
Basis von V-USB die Zeichen per Interrupttransfer uebertraegt.
Der aufwaendigste Part dieses Vorhabens ist die Implementierung von 
Treibern fuer die gaengigen Betriebssysteme wie Linux und Windows.
Die CDC Klasse (und damit die Defaulttreiber) kann ja so bekanntermassen 
nicht verwendet werden.

Will da jemand ggf. sogar mitmachen?

MfG

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> und warum nicht eine 10€ USB Tastatur schlachten und mit
> Schalter verdrahten nach Wunsch?

Das habe ich mal versucht. Es scheiterte daran, dass der 
Tastaturcontroller nicht auf einer Platine montiert war, sondern auf 
einer Folie, die beim Löten weg schmilzt. Auslöten ging auch nicht, denn 
Chip und Folie waren eine feste Einheit, so wie man das auch von 
Taschenrechnern kennt.

von Tobias S. (mistertobz)


Lesenswert?

@Stephan B.
Echt genial, was du da gemacht hast :D
Ich hab im Moment leider nur Sachen, um die THT-Version davon 
zusammenzubauen. Gibts davon auch EAGLE-Dateien? Die der vierten Version 
kann man irgendwie auch nicht runterladen.

von Stephan B. (matrixstorm)


Lesenswert?

Tobias S. schrieb:
> @Stephan B.
> Echt genial, was du da gemacht hast :D
> Ich hab im Moment leider nur Sachen, um die THT-Version davon
> zusammenzubauen. Gibts davon auch EAGLE-Dateien? Die der vierten Version
> kann man irgendwie auch nicht runterladen.

Jo. Kommt in den naechsten Tagen - Sorry.

Hab im Schematic noch Schreibfehler (LED's --> LEDs) die ich noch 
wegmachen will.

Files kommen - versprochen.

MfG

von Helmut (Gast)


Lesenswert?


von Marcus W. (marcusaw)


Lesenswert?

Ich bin mal wieder der, der Jehova schreit:

Bei deinem Wissenstand wird das nix. Aber das macht auch nix. Wenn man 
keine Ahnung von Microcontrollern hat, aber Spaß am basteln und auch 
gerne programmieren lernen möchte, ist der Arduino das perfekte Board 
für den Einstieg. Der "Arduino Leonardo" bzw. der "Arduino Pro Micro" 
bieten fertige HID-Stacks um dem Computer ein beliebiges Eingabegerät 
vorzutäuschen.

Hier zum Beispiel ein einfaches Beispiel für einen Joystick-Controller:
http://www.imaginaryindustries.com/blog/?p=80

Da wird dann auch gleich noch erklärt, was man eigentlich tun muss.


So, und nun steinigt mich.

von Elektrotiger (Gast)


Lesenswert?

Ich stehe vor der selben Aufgabe.
Was würde denn gegen V-USB sprechen und für einen seperaten USB Chip 
mittels RXD und TDX?

von Marcus W. (marcusaw)


Lesenswert?

Das dein µC dann auch noch andere Dinge machen kann - zusätzlich zum USB

von Stephan B. (matrixstorm)


Angehängte Dateien:

Lesenswert?

Okay - auch weil ich Feedback braeuchte:

Anbei meine Arduino VUSB HID Library - noch buggy, nur Vorabversion, 
Interfaceset nicht stabil.

Im Gegensatz zu den existieren 
http://code.google.com/p/vusb-for-arduino/ Versionen enthaelt diese 
mehrere Verbesserungen/fixes.
U.a.:
       1) das USB-Layout ist nicht hardcoded Metaboard, sondern wird der 
Boardbeschreibung entnommen

       2) es werden 2 Interruptendpunkte fuer gleichzeitig Maus und 
Keyboard implementiert

       3) es wird das HID-Bootprotokoll implementiert - dieses 
funktioniert auch im BIOS und in Betriebssystemen mit leagacy USB.

       4) es gibt es primaer als C Bibliothek


Bitte achtet auf eine korrekte Arduino-Boardbeschreibung, welche auch 
die PINs fuer VUSB definiert (Default ist Metaboard).
Etwa wie: 
http://matrixstorm.com/avr/tinyusbboard/tinyusbboard_arduino.zip

In Windows scheint zumindest das erste Bsp. zu haengen - ich vermute das 
haengt mit der Senderatenbegrenzung die Windows vorgibt zusammen.

Die HIDKeyboardMouse Bibliothek ist eigentlich fuer AVR-C, es war aber 
hier wegen des Bedarfs der Arduino-Port geeigneter.

MfG und gute n8

-Stephan

von Guido Körber (Gast)


Lesenswert?

Wie so ein Cockpit realisiert werden kann findet man z.B. hier:
http://familienvater-cockpit.de/

Ohne Erfahrung mit der Programmierung von Microcontrollern wird der 
Komplettselbstbau eher wenig erfolgreich. Insbesondere wenn man einen 
waghalsigen Hack wie V-USB als Basis nimmt.

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.