Domanda:
Invio di segnali alla porta USB utilizzando C
user5369
2011-08-15 18:42:14 UTC
view on stackexchange narkive permalink

Voglio inviare un semplice segnale a 5V alla porta USB. L'isolamento del cavo USB verrà rimosso e collegato a un relè collegato a un sistema di porte elettriche. Penso che dovrei scrivere questo codice in C. Qualcuno può darmi un suggerimento?

Segnale 5v alla porta usb? Non sono sicuro di aver capito cosa vuoi.
ok, l'elettronica non è la mia specialità. Devo inviare un segnale dalla porta USB al cavo USB. Questo è tutto, non importa quello che ho detto prima sui 5V :)
Che ne dici di un dispositivo da USB a seriale e controllare solo uno dei segnali come Pronto per l'invio o simili?
Cinque risposte:
Majenko
2011-08-15 19:23:46 UTC
view on stackexchange narkive permalink

Non puoi fare quello che vuoi semplicemente collegando un relè alla porta USB.

L'USB è un bus, con un protocollo seriale in esecuzione su di esso. È necessario che tu ti interfaccia con quel bus usando i protocolli appropriati.

Avrai bisogno di un "dispositivo" che sia in grado di essere programmato per rispondere a uno stimolo basato sul computer e attivare un segnale esterno .

Ci sono molti modi per ottenere questo risultato, dai prodotti già pronti, ai kit fai-da-te e fino a circuiti integrati discreti che puoi utilizzare per costruire il tuo sistema.

Personalmente consiglierei uno dei tanti kit fai-da-te disponibili, come la Velleman K8055 USB Experiment Interface Board. Ce ne sono molti altri come questo.

Se vuoi entrare nel nocciolo duro, allora devi guardare cose come i microcontrollori (su cui si basa Velleman), che possono essere programmati per fare molte cose diverse. Alcuni di questi hanno il supporto USB integrato, ma è necessaria una conoscenza approfondita del protocollo USB per farvi i conti. La maggior parte delle persone utilizza un chip "FTDI" per convertire prima l'USB in RS-232.

Se si desidera un prodotto pronto all'uso, allora si potrebbe voler esaminare la possibilità di una stampante parallela USB Prodotto port, a cui puoi programmare e accedere come se fosse una porta parallela (Centronics) direttamente collegata al tuo computer. Questo ti darebbe 8 uscite che puoi attivare e disattivare.

Un'altra cosa a cui prestare attenzione però: la maggior parte delle uscite del computer / microcontrollore non sarà abbastanza potente da pilotare direttamente un relè. Sarà necessario alimentare il segnale attraverso un circuito "driver" per ottenere una potenza sufficiente. Questo può essere semplice come un singolo transistor, o potresti guardare qualcosa di più complesso come un MOSFET, ecc. Oh, e fai attenzione al "Back EMF": un relè è un "carico induttivo".

È possibile utilizzare RJ45 solo per inviare un segnale? o devo usare un microcontrollore?
L'RJ45 è una porta Ethernet, che ha anche protocolli e segnali di cui preoccuparsi. Altrettanto complesso come (se non di più) USB.
@user5369 - La porta Ethernet, come la porta USB, non è un sistema di segnalazione single-ended. I segnali vengono inviati lungo la linea utilizzando correnti differenziali, non rendendo la linea alta o bassa. Le porte parallele della stampante e le porte seriali RS232 sono circa gli unici connettori che probabilmente troverai sul tuo PC che utilizzano segnali single-ended che puoi impostare "alto" o "basso" come desideri.
Kellenjb
2011-08-15 19:21:38 UTC
view on stackexchange narkive permalink

L'USB non è così semplice come sembra. L'USB ha un protocollo di comunicazione che non ti consente di generare semplicemente un output alto o basso.

Probabilmente il modo più semplice per farlo è usare un microcontrollore collegato tramite USB usando un metodo da seriale a USB. Puoi utilizzare un chip FTDI per farlo. Dopo il collegamento al chip FTDI, il computer installerà una porta seriale virtuale. È quindi possibile inviare dati a questa porta seriale e il microcontrollore li riceverà tramite UART. Il microcontrollore può quindi leggere i pacchetti che invii e puoi avere 1 pacchetto per "on" e un altro per "off". Il microcontrollore dovrebbe semplicemente accendere o abbassare un pin in base all'ultimo pacchetto ricevuto.

Un'altra opzione da considerare sarebbe quella di utilizzare direttamente la porta seriale. Molti computer ti danno il controllo sul clear per inviare pin di tipo. Se riesci a ottenere questa capacità, sarebbe solo una questione di avere un programma che ha attivato lo stato Clear per inviare.

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

USB è un sofisticato bus seriale che consente la comunicazione tra un host (il tuo PC) e fino a 127 dispositivi (tutti i tipi di prodotti ti connetti al tuo PC). Quindi sembra che tu non abbia accesso diretto all'autobus, comunque non puoi semplicemente accendere e spegnere le cose con esso. Ma c'è una serie di soluzioni a questo.

I PC sono dotati di un numero sempre minore di porte EIA232 (spesso denominate con il vecchio nome RS232), ma a volte ne hai bisogno. Alcune aziende specializzate in interfacce, i cosiddetti bridge , che convertono il bus USB in EIA232. FTDI è un noto produttore di questi bridge e in altre risposte è stato suggerito di utilizzare segnali di controllo EIA232 per controllare un relè. Potrebbe funzionare, ma in realtà è un uso improprio di EIA232.

Un prodotto meno noto di FTDI è il convertitore da USB a FIFO FT245R, che consente di controllare I / O generici tramite USB. Questo prodotto di DLP Design è un modulo pronto per l'uso basato su FT245R.

USB245 module

Usa uno degli I / O per commutare un relè tramite un transistor. (Gli I / O non possono fornire la corrente richiesta per pilotare direttamente il relè.)


Vedi anche questa risposta a una domanda correlata.

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

Come altri hanno sottolineato, USB è un bus, quindi è necessario utilizzare un dispositivo dall'altra parte per tradurre i comandi del bus in azioni fisiche. Il modo più semplice per farlo è utilizzare una serie di prodotti esistenti progettati per questo senza dover scrivere codice per l'estremità incorporata - ad esempio, Phidgets ha un'intera gamma di dispositivi - questo relè board è probabilmente quello che vuoi.

Se sei pronto per imparare un po 'di programmazione incorporata, un Arduino o un teenager fornire opzioni più convenienti e hackerabili.

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

Il passaggio diretto a 5v sarebbe possibile solo se si dispone di informazioni di programmazione di basso livello e diritti di accesso per USB PHY o chip hub, ovvero la possibilità di abilitare / disabilitare il 5v VBUS (e farlo specificamente per una particolare porta , se è necessario mantenere funzionanti altri dispositivi come una tastiera USB).

Ci sono sicuramente sistemi su cui ciò sarebbe possibile (l'unica porta USB di un tablet con cui stavo giocando di recente, per esempio), ma è un hack molto specifico per l'implementazione e non portatile.

La maggior parte delle volte, sono preferibili i suggerimenti che tutti gli altri ti danno di utilizzare un chip I / O USB come un microcontrollore FT245 o abilitato USB o anche una scheda relè USB pronta all'uso , poiché funzionano tramite driver che si basano sul protocollo USB standard e non dipendono da una conoscenza approfondita di particolari chip utilizzati per implementare l'interfaccia host o l'hub.

EDIT: sto cercando di ricordare, potrebbe in realtà sono comandi standard per abilitare / disabilitare VBUS di porte downstream specifiche su un hub, ma in pratica pochi hub hanno effettivamente il dispositivo di commutazione di potenza necessario per implementarlo. Trovarne uno che funzioni potrebbe non essere più facile / economico che acquistare la scheda relè USB.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...