Question:
Envoi de signaux au port USB en utilisant C
user5369
2011-08-15 18:42:14 UTC
view on stackexchange narkive permalink

Je souhaite envoyer un simple signal 5V au port USB. L'isolation du câble USB sera retirée et connectée à un relais qui est connecté à un système de porte électrique. Je pense que je devrais écrire ce code en C. Quelqu'un peut-il me donner un indice?

Signal 5v sur le port USB? Je ne sais pas ce que tu veux.
d'accord, l'électronique n'est pas ma spécialité. J'ai besoin d'envoyer un signal du port USB au câble USB. C'est tout, peu importe ce que j'ai dit à propos de 5V plus tôt :)
Que diriez-vous d'un périphérique USB vers série et de contrôler simplement l'un des signaux tels que Prêt à envoyer ou similaire?
Cinq réponses:
Majenko
2011-08-15 19:23:46 UTC
view on stackexchange narkive permalink

Vous ne pouvez pas faire ce que vous voulez en connectant simplement un relais au port USB.

L'USB est un bus, avec un protocole série en cours d'exécution. Il est nécessaire que vous vous connectiez avec ce bus en utilisant les protocoles appropriés.

Vous aurez besoin d'un "appareil" d'utilisation qui est capable d'être programmé pour répondre à un stimulus informatique et activer un signal externe .

Il existe de nombreuses façons d'y parvenir, des produits prêts à l'emploi aux kits de bricolage, en passant par les circuits intégrés discrets que vous pouvez utiliser pour créer votre propre système.

Personnellement, je recommanderais l'un des nombreux kits de bricolage disponibles, comme la carte d'interface d'expérimentation USB Velleman K8055. Il y en a beaucoup d'autres comme ça.

Si vous voulez entrer dans le vif du sujet, alors vous devez regarder des choses telles que les microcontrôleurs (sur lesquels le Velleman est basé), qui peuvent être programmés pour faire beaucoup de choses différentes. Certains d'entre eux ont un support USB intégré, mais il faut une connaissance approfondie du protocole USB pour les maîtriser. La plupart des gens utilisent d'abord une puce «FTDI» pour convertir l'USB en RS-232.

Si vous recherchez un produit standard, vous pouvez envisager la possibilité d'une imprimante parallèle USB Produit de port, auquel vous pouvez programmer et accéder comme s'il s'agissait d'un port parallèle (Centronics) directement connecté à votre ordinateur. Cela vous donnerait 8 sorties que vous pouvez activer et désactiver.

Encore une chose à surveiller - la plupart des sorties d'ordinateur / microcontrôleur ne seront pas assez puissantes pour piloter directement un relais. Vous devrez faire passer le signal à travers un circuit «pilote» pour obtenir une puissance suffisante. Cela peut être aussi simple qu'un seul transistor, ou vous pouvez regarder quelque chose de plus complexe comme un MOSFET, etc. Oh, et méfiez-vous de "Back EMF" - un relais est une "charge inductive".

Est-il possible d'utiliser le RJ45 uniquement pour envoyer un signal? ou dois-je utiliser un microcontrôleur?
Le RJ45 est un port Ethernet - qui a également des protocoles et des signaux à craindre. Tout aussi complexe que (sinon plus que) USB.
@user5369 - Le port Ethernet, comme le port USB, n'est pas un système de signalisation asymétrique. Les signaux sont envoyés le long de la ligne en utilisant des courants différentiels, et non en rendant la ligne haute ou basse. Les ports d'imprimante parallèles et les ports série RS232 sont à peu près les seuls connecteurs que vous êtes susceptible de trouver sur votre PC qui utilisent une signalisation asymétrique que vous pouvez régler sur "haut" ou "bas" selon vos désirs.
Kellenjb
2011-08-15 19:21:38 UTC
view on stackexchange narkive permalink

L'USB n'est pas aussi simple que vous semblez le penser. L'USB a un protocole de communication qui ne vous permet pas simplement de sortir haut ou bas.

Le moyen le plus simple de le faire est probablement d'utiliser un microcontrôleur connecté via USB en utilisant une méthode série vers USB. Vous pouvez utiliser une puce FTDI pour ce faire. Une fois connecté à la puce FTDI, l'ordinateur installera un port série virtuel. Vous pouvez ensuite envoyer des données à ce port série et le microcontrôleur les recevra via UART. Le microcontrôleur peut alors lire les paquets que vous envoyez et vous pouvez avoir 1 paquet pour «on» et un autre pour «off». Le microcontrôleur ferait simplement tourner une broche haut ou bas en fonction du dernier paquet qu'il a reçu.

Une autre option à considérer serait d'utiliser directement le port série. De nombreux ordinateurs vous donnent le contrôle sur les broches de type claires. Si vous pouvez obtenir cette capacité, ce serait juste une question d'avoir un programme qui basculerait l'état clair pour envoyer.

stevenvh
2011-08-17 13:57:58 UTC
view on stackexchange narkive permalink

L'USB est un bus série sophistiqué qui permet la communication entre un hôte (votre PC) et jusqu'à 127 appareils (toutes sortes de produits vous vous connectez à votre PC). Il semble donc que vous n'avez pas d'accès direct au bus, de toute façon que vous ne pouvez pas simplement allumer et éteindre les choses avec. Mais il existe un certain nombre de solutions à cela.

Les PC sont livrés avec de moins en moins de ports EIA232 (souvent désignés par son ancien nom RS232), mais parfois vous en avez besoin. Quelques entreprises se sont spécialisées dans les interfaces, appelées ponts , qui convertissent le bus USB en EIA232. FTDI est un fabricant bien connu de ces ponts, et dans d’autres réponses, il a été suggéré d’utiliser des signaux de contrôle EIA232 pour contrôler un relais. Cela peut fonctionner, mais en fait, il s'agit d'une utilisation incorrecte de EIA232.

Un produit moins connu de FTDI est le convertisseur USB vers FIFO FT245R, qui vous permet de contrôler les E / S à usage général via USB. Ce produit de DLP Design est un module prêt à l'emploi basé sur le FT245R.

USB245 module

Utilisez l'une des E / S pour commuter un relais via un transistor. (Les E / S ne peuvent pas fournir le courant requis pour piloter directement le relais.)


Voir également cette réponse à une question connexe.

Nick Johnson
2011-08-16 05:10:31 UTC
view on stackexchange narkive permalink

Comme d'autres l'ont souligné, l'USB est un bus, vous devez donc utiliser un périphérique à l'autre extrémité pour traduire les commandes de bus en actions physiques. Le moyen le plus simple de le faire est d'utiliser un certain nombre de produits existants conçus pour cela sans avoir besoin d'écrire du code pour l'extrémité intégrée - par exemple, les Phidgets ont toute une gamme d'appareils - ce relais board est probablement ce que vous voulez.

Si vous êtes prêt à apprendre un peu de programmation intégrée, un Arduino ou un ado pourrait offrent des options plus abordables et plus piratables.

Chris Stratton
2011-08-17 10:28:07 UTC
view on stackexchange narkive permalink

La commutation directe de 5v ne serait possible que si vous disposiez d'informations de programmation de bas niveau et de droits d'accès pour l'USB PHY ou la puce du concentrateur, c'est-à-dire la possibilité d'activer / désactiver le VBUS 5v (et de le faire spécifiquement pour un port particulier , si vous devez garder d'autres appareils comme un clavier USB en état de marche).

Il y a certainement des systèmes sur lesquels cela serait possible (le seul port USB d'une tablette avec laquelle je jouais récemment, par exemple), mais c'est un hack très spécifique à l'implémentation et non portable.

La plupart du temps, les suggestions que tout le monde vous donne pour utiliser une puce USB-I / O telle qu'un micro-contrôleur FT245 ou USB ou même une carte de relais USB prête à l'emploi sont préférables , puisqu'ils fonctionnent via des pilotes qui reposent sur le protocole USB standard et ne dépendent pas de la connaissance intime des puces particulières utilisées pour implémenter l'interface hôte ou le hub.

EDIT: J'essaye de me rappeler, il peut en fait, être des commandes standard pour activer / désactiver le VBUS de ports en aval spécifiques sur un concentrateur, mais dans la pratique, peu de concentrateurs ont réellement le dispositif de commutation d'alimentation nécessaire pour l'implémenter. Trouver celui qui le fait n'est peut-être pas plus facile / moins cher que d'acheter la carte de relais USB.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...