So erstellen Sie einen USB-Controller mit Reglern, Schiebereglern und Schaltern

34

Wie erstellt man eine Schnittstelle für ein USB-Gerät, über die Potis, lineare / logarithmische Verjüngungen und Moment- / Kippschalter an einen Computer angeschlossen werden können?

Wenn mir jemand eine Beschreibung auf hoher Ebene geben könnte, würde ich es begrüßen. Ich kann Datenblätter lesen, daher ist das Verstehen von Details kein Problem, solange ich weiß, wo ich die Blätter finde.

Robert Harvey
quelle

Antworten:

29

Ich würde eines der Teensy- Boards verwenden. Dies sind Arduino-ähnliche Mikrocontroller-Boards mit USB-Unterstützung. Im Gegensatz zum Arduino können sie auf einem PC als jede Art von USB-Gerät angezeigt werden. Dies bedeutet, dass Sie Ihr eigenes benutzerdefiniertes USB-Keyboard, Ihren eigenen Joystick, Ihr eigenes MIDI-Gerät usw. erstellen und vom PC Standardtreiber verwenden lassen können.

Der Teensy unterstützt die Arduino IDE , oder Sie können in C programmieren und LUFA (für USB-Unterstützung) direkt verwenden.

Hier sind einige Projektlinks, die helfen sollen.

Toby Jaffey
quelle
10
Für diese Art von Anwendung würde ich vorschlagen, sich als HID auszugeben. Treiber bereits geschrieben, Sie emulieren nur eine Maus oder ein ähnliches Gerät.
Kortuk
1
+1 für joystick, du musst nicht mal ein mcu board bauen, das board, das von einem borken joystick mit analogen achsen geborgen wurde, funktioniert genauso gut ...
peufeu
6

Ich würde ein Mikrocontroller-Board wie ein Arduino verwenden. Sie lesen den ADC und die digitale E / A und senden ASCII-Zeichen über die UART-> USB-Verbindung an den PC.

Wie viel externe Hardware Sie benötigen, hängt von der Genauigkeit ab, die Sie benötigen. Ich würde denken, dass für die meisten Anwendungen die interne Hardware des Mikrocontrollers ausreichen würde. Ich würde die Schalter in Hardware entprellen.

Schreiben Sie für die USB-Schnittstelle einfach einen einfachen Parser, damit Sie die Messwerte abfragen können. Zum Beispiel, wenn der PC den String "A00?" der uC könnte den Messwert auf Analogkanal 0 zurücksenden. "D00?" uC könnte den Status von Digitaleingang 0 zurücksenden. Um einen Digitalausgang zu ändern, könnte dies beispielsweise "D00 = 1" oder "D00 = 0" sein. Dies sind kurze Saiten mit fester Länge. Sollte sehr einfach zu analysieren sein.

jluciani
quelle
4

Ich mag es, Arduinos zu benutzen, sie sind einfach zu programmieren und Sie können einfach Daten von den verschiedenen Eingängen über die integrierte USB-Verbindung an Ihren Computer senden. Die Daten können an die Arduino-Programmierumgebung Serial Monitor gesendet werden - was für das Debuggen hilfreich ist.

Ich benutze dann ein Programm wie Pure Data (PD) oder Max MSP, um die seriellen Daten zu empfangen. Daten können von diesen Programmen in allen möglichen nützlichen Formaten gesendet werden. Weil es einfach genug ist, in der Software jede Art von Protokollkurven oder Skalierung durchzuführen - Sie müssen sich keine Sorgen machen, teure Protokolltöpfe zu kaufen oder schwer zu findende Werte zu verwenden -, kaufen Sie einfach ein Job-Los mit dem gleichen Wert und sorgen Sie sich um die Besonderheiten später (1K oder 10K sind normalerweise leicht zu bekommen).

Dies ist kostenlos: http://puredata.info/

Dies ist die kostenpflichtige Version, aber es gibt eine gute Demo: http://cycling74.com/downloads/

Jim
quelle
4

Holen Sie sich ein Arduino

Holen Sie sich ein DangerShield .

Schreiben Sie einen Code, um DangerShield-Sensordaten über eine USB-Verbindung über RS-232 an den PC zu senden.

Schreiben Sie eine benutzerdefinierte App wie VB.NET oder etwas, um Daten in nützliche PC-Inhalte wie Win32-Fenstermeldungen oder ähnliches zu übersetzen.

J. Polfer
quelle
3

Ich würde vorschlagen, PoKeys zu verwenden . Sehr einfaches Hinzufügen von 55 digitalen E / A, 7 analogen Eingängen (12 Bit), PWM-Ausgängen und mehr. Es kann sogar mit so etwas wie kombiniert wird dies .

avra
quelle
2

Ich würde mit einem Arduino oder einem Sanguino gehen, wie die meisten Leute vorgeschlagen haben. Google einfach nach ihnen. Sie sind äußerst benutzerfreundlich und in wenigen Stunden einsatzbereit, sobald Sie über alle erforderlichen Komponenten verfügen.

Sushrut J Mair
quelle
2
"Nur für sie googeln" wird hier nicht als Antwort akzeptiert. Geben Sie hier Details an.
stevenvh
1

Eine Alternative, die geeignet sein kann oder auch nicht, besteht darin, im Handel erhältliche analoge Joysticks / Joypads (von $ fckall bei ebay china oder im Games Store) zu kaufen und deren analoge Eingangskomponenten durch Ihre eigenen zu ersetzen oder einfach die Hauptplatine herauszureißen und zu transplantieren in deine Hardware.

Sie müssen einige der elektrischen Eigenschaften abgleichen, aber die harte Arbeit beim Codieren von / USB-Kommunikationen usw. ist für Sie erledigt, und in der Regel sind die Kommunikationsprotokolle / Eingangszuordnungen bekannt.

Chinesische Nachahmungen von PlayStation-artigen USB-Controllern usw. sind für ein paar Dollar zu haben, was weit unter dem Preis von Hobby * duino IO-Boards usw. liegt und billig genug ist, um beim Aufblasen der ersten oder zweiten verfügbar zu sein.

John U.
quelle
0

Der GamepadBlock verwendet einen ATmega32U2 zusammen mit LUFA , um ein USB-HID-Gerät mit voller Geschwindigkeit für die Abfrage mehrerer originaler Gamecontroller zu implementieren. Der ATmega verfügt über eine Hardware-USB-Schnittstelle und der Einstieg war einfach, da LUFA mehrere Demo-Projekte anbietet.

user165785
quelle