Comment créer un contrôleur USB doté de boutons, de curseurs et de commutateurs

34

Comment peut-on créer une interface pour un périphérique USB permettant l’interfaçage de potentiomètres, de cônes linéaires / de journalisation et de commutateurs momentanés / à bascule avec un ordinateur?

Si quelqu'un pouvait me donner une description de haut niveau, je l'apprécierais. Je peux lire les fiches techniques. La compréhension des détails n’est donc pas un problème tant que je sais où les trouver.

Robert Harvey
la source

Réponses:

29

J'utiliserais l'un des conseils Teensy . Ce sont des cartes de microcontrôleur de type Arduino qui prennent en charge USB. Contrairement à l'Arduino, ils peuvent apparaître sur un PC comme n'importe quel type de périphérique USB. Cela signifie que vous pouvez créer votre propre clavier USB, manette de jeu, périphérique MIDI, etc., et demander au PC d'utiliser des pilotes standard.

Teensy supporte l’ IDE Arduino , ou vous pouvez programmer en C et utiliser LUFA (pour le support USB).

Voici quelques liens de projets pour vous aider.

Toby Jaffey
la source
10
Pour ce type d'application, je suggérerais de prétendre être un DHI. Les pilotes déjà écrits, vous émulez juste une souris ou un périphérique similaire.
Kortuk
1
+1 pour le joystick, vous n'avez même pas besoin de construire un tableau mcu, le tableau récupéré d'un joystick Borken avec des axes analogiques fonctionnera également ...
peufeu
6

Je voudrais utiliser une carte de microcontrôleur comme un Arduino. Vous lisez les CAN et les E / S numériques et envoyez des caractères ASCII au PC via la connexion UART-> USB.

La quantité de matériel externe dont vous avez besoin dépend de la précision dont vous avez besoin. Je pense que pour la plupart des applications, le matériel interne du microcontrôleur serait suffisant. Je rebounce les commutateurs dans le matériel.

Pour l'interface USB, écrivez simplement un analyseur afin de pouvoir interroger les lectures. Par exemple, si le PC a envoyé la chaîne "A00?" L'UC pourrait renvoyer la lecture sur le canal analogique 0. "D00?" L'uC peut renvoyer l'état de l'entrée numérique 0. Pour modifier une sortie numérique, par exemple, "D00 = 1" ou "D00 = 0". Ce sont des chaînes courtes dans une longueur fixe. Devrait être très facile à analyser.

jluciani
la source
4

J'aime utiliser Arduinos, leur programmation est simple et vous pouvez facilement envoyer des données à votre ordinateur à partir des différentes entrées via la connexion USB intégrée. Les données peuvent être envoyées aux environnements de programmation Arduino Serial Monitor - ce qui est utile pour le débogage.

J'utilise ensuite un programme tel que Pure Data (PD) ou Max MSP pour recevoir les données série. Les données peuvent être envoyées par ces programmes dans toutes sortes de formats utiles. Parce que c'est assez simple pour faire n'importe quel type de courbes de log ou de mise à l'échelle dans le logiciel - vous n'avez pas à vous soucier d'acheter des pots de journal coûteux ou d'utiliser des valeurs difficiles à trouver - achetez simplement un lot de travail de la même valeur et vous inquiétez pas du spécifiques plus tard (1K ou 10K est normalement facile à obtenir).

Celui-ci est gratuit: http://puredata.info/

Celui-ci est la version payante pour chicane, mais il a une bonne démo: http://cycling74.com/downloads/

Jim
la source
4

Obtenez un Arduino

Obtenez un DangerShield .

Écrivez un code pour envoyer les données du capteur DangerShield au PC via une connexion RS-232 via USB.

Ecrivez une application personnalisée comme VB.NET ou quelque chose pour traduire les données en quelque chose d'utile sur un PC, comme des messages Windows Win32 ou autre.

J. Polfer
la source
3

Je suggère d'utiliser des PoKeys . Très facile d'ajouter 55 entrées / sorties numériques, 7 entrées analogiques (12 bits), des sorties PWM et plus. Il peut même être combiné avec quelque chose comme ça .

avra
la source
2

Je voudrais aller avec un Arduino ou un Sanguino comme la plupart des gens l'ont suggéré. Il suffit de google pour eux. Ils sont extrêmement faciles à utiliser et vous pouvez être opérationnel en quelques heures une fois que vous avez tous les composants nécessaires.

Sushrut J Mair
la source
2
"Juste pour Google pour eux" n'est pas accepté comme une réponse ici. Donnez des détails ici.
Stévenvh
1

Une alternative qui peut ou non convenir consiste à acheter des manettes / joypads analogiques disponibles dans le commerce (auprès de dans votre matériel.

Vous aurez besoin de faire correspondre certaines des caractéristiques électriques, mais le dur travail de codage / communication USB, etc. est fait pour vous et, en général, le protocole de communication / le mappage d'entrée est bien connu.

Il est possible d'obtenir des imitations chinoises de contrôleurs USB de style PlayStation, etc., pour quelques dollars, ce qui est bien en dessous du prix des cartes IO, etc.

John U
la source
0

Le GamepadBlock utilise un ATmega32U2 avec LUFA pour implémenter un périphérique USB HID à pleine vitesse afin d’interroger plusieurs contrôleurs de jeu originaux. L'ATmega dispose d'une interface USB matérielle et la mise en route était facile, car LUFA propose plusieurs projets de démonstration.

utilisateur165785
la source