Può linterfaccia Arduino con dispositivi USB senza lo scudo host USB?

Sto cercando di collegare vari dispositivi USB a un Arduino Uno (in particolare, un gamepad e una webcam, ma mi interessa il caso generale ). È possibile senza utilizzare lo scudo host USB, poiché Uno ha una porta USB e un convertitore da USB a seriale? Potrei usare lo scudo, ma sono curioso di sapere se / perché è necessario.

Il sito web di Sparkfun afferma che:

SparkFun USB Host Shield contiene tutta la logica digitale e i circuiti analogici necessari per implementare una periferica / host controller USB a piena velocità con il tuo Arduino.

Arduino non lo contiene già, basta solo il software appropriato (anche se ovviamente è più facile usare la libreria già scritta per Host Shield). O ci sono limitazioni hardware?

Secondo Può un dongle USB Ethernet essere invece dello scudo ethernet per arduino? (risposta di Majenko), in teoria può essere fatto con il Due, ma non con lo Uno . In tal caso, è perché Uno usa lATmega16U2 invece dellFTDI FT232RL per la comunicazione USB?

Commenti

  • I don ' Non credo che sia impossibile, lUSB è una sorta di bus seriale con protocolli specifici, ad es. dispositivo che tagga i dispositivi per intervalli di tempo specifici (alcuni protocolli simili come un filo). Penso che lunica limitazione sia la velocità, quindi la sincronizzazione di tutti i comandi e i dati specifici USB è la cosa che causa problemi,
  • @GeneralChaos You ' hai ragione, ' non è " impossble ", ma è estremamente poco pratico. Esiste unimplementazione software di un dispositivo USB (VUSB) che ' non richiede alcun hardware speciale. ' è incerto nella migliore delle ipotesi e funziona a malapena nel migliore dei casi. Non cè motivo per cui non sia possibile ' scrivere un host equivalente, tuttavia, non potrebbe mai funzionare a qualcosa di più di 1,5 MHz di USB 1.0 " Bassa velocità ", quindi non potrebbe mai parlare con qualcosa di diverso da una semplice tastiera o mouse. Cose come Ethernet o webcam sono completamente impossibili senza hardware Host o OTG, che Due ha integrato nel chip principale.

Risposta

Per prima cosa devi imparare le basi di come funziona USB.

In USB ci sono due” cose “principali: host e dispositivi.

un host (di solito il tuo computer) e molti dispositivi (come Arduino, stampanti, scanner, webcam, dongle WiFi, ecc.).

Essere un host implica sapere quali dispositivi ti saranno collegati e come comunicare con loro. Essere un dispositivo significa semplicemente comunicare con lhost a modo tuo.

Come puoi vedere, essere un host è un lavoro molto più complesso che essere un dispositivo.

Gli Arduino sono dispositivi . I piccoli chip di interfaccia USB che utilizzano sono a bassissima potenza e possono essere solo un dispositivo, mai un host.

Se vuoi collegare un dispositivo a qualcosa, deve essere un host (nota: lo sono di proposito ignorando gli hub qui).

Arduino Due utilizza un chip molto più potente e che è in grado di essere un host (utilizzando la cosiddetta modalità On-The-Go).

Per farlo con qualcosa di meno potente di un Due è necessario hardware aggiuntivo progettato specificamente per essere un host USB – ed è qui che entra in gioco lo scudo host USB. Ha un chip progettato appositamente per essere un host USB in modo da poter collegare un dispositivo in esso.

Nessuno dei chip di Uno è progettato per essere un host. Semplicemente non hanno il potere.

Risposta

No. LUSB distingue rigorosamente tra i ruoli dellhost e del dispositivo. Alcuni chip hanno blocchi funzionali in grado di svolgere entrambi i ruoli, ma gli 8u2 / 16u2 non ne sono un esempio.

I tipici convertitori seriali USB come FT232, CP210x, CH340, PL2303, ecc. sono anche strettamente dispositivi e incapaci di essere host

Ci sono MCU compatibili con host economici come Kinetis KL25Z, ma per usarli nella loro forma più economica sarebbe necessario un approccio software diverso (ad esempio mbed piuttosto che Arduino) e molto più impegno personale. Teensy-LC è correlato, ma paghi di più per lhelper di caricamento del codice Arduino su di esso che per lMCU che esegue il tuo programma stesso.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *