USB-Interface selber hertsellen

OP #3883606
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
#3883644
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
Angehängte Dateien:
OP #3883648
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.
Gast #3883663
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.
Persönliche Seite #3883664
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
#3883677
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
OP #3883696
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?
#3883706
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
#3884206
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.
#3884275
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.
#3884283
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
Gast #3884523
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.
#3887578
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
#3887713
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.
#3888136
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren