Haluan liittää useita USB-laitteita Arduino Unoon (erityisesti peliohjaimeen ja verkkokameraan, mutta minua kiinnostaa yleinen tapaus ). Onko tämä mahdollista ilman USB-isäntäsuojaa, koska Unolla on USB-portti ja USB-sarjamuunnin? Voisin käyttää kilpiä, mutta olen utelias, jos / miksi se on välttämätöntä.
Sparkfun-verkkosivustolla sanotaan:
SparkFun USB Host Shield sisältää kaikki digitaaliset logiikat ja analogiset piirit, jotka ovat tarpeen täydellisen USB-oheislaitteen / isäntäohjaimen toteuttamiseksi Arduinossa.
Eikö Arduino sisällä jo tätä, tarvitsee vain oikea ohjelmisto (vaikkakin jo kirjoitetun kirjaston käyttö on helppoa Host Shieldille). Vai onko laitteistossa rajoituksia?
Voiko Ethernet-USB-dongle olla ethernet-suojan sijaan arduinolle? (Majenkon vastaus), se voidaan teoriassa tehdä erääntyneellä, mutta ei Unon kanssa . Tällöin johtuuko tämä siitä, että Uno käyttää ATmega16U2: ta FTDI FT232RL: n sijaan USB-viestintään?
Kommentit
- En ' ei usko sen olevan mahdotonta, USB on jonkinlainen sarjaväylä, jolla on erityiset protokollat, eli laite merkitsee jakolaitteita tietyille aikaväleille (jotkut vastaavat protokollat, kuten yksi johto). Mielestäni ainoa rajoitus on nopeus, joten kaikkien USB-spesifisten komentojen ja tietojen synkronointi aiheuttaa ongelmia.
- @GeneralChaos Sinä ' olet oikeassa, se on oikein ' ei ole " impossble " – mutta se on erittäin epäkäytännöllistä. USB-laite (VUSB) on ohjelmistototeutettu, joka ' ei tarvitse erityistä laitteistoa. Se on ' parhaimmillaan pörröinen ja tuskin toimii parhaimmillaan. Ei ole mitään syytä, miksi et voisi ' kirjoittaa isäntävastaavaa – se ei kuitenkaan voi koskaan toimia millään muulla kuin 1,5 MHz: n USB-liitännällä 1.0 " Pieni nopeus ", joten hän ei koskaan voinut puhua millään muulla kuin yksinkertaisella näppäimistöllä tai hiirellä. Ethernet- tai verkkokameran kaltaiset asiat ovat täysin mahdotonta ilman isäntä- tai OTG-laitteistoa, jonka Due on rakentanut pääpiiriin.
Vastaa
Ensinnäkin sinun on opittava USB: n toiminnan perusteet.
USB: ssä on kaksi pääasiaa: isännät ja laitteet.
Sinulla on yksi isäntä (yleensä tietokoneesi) ja monet laitteet (kuten Arduinos, tulostimet, skannerit, verkkokamerat, WiFi-dongelit jne.).
Isäntänä oleminen tarkoittaa, että tiedät, mitä laitteita aiot liittää itseesi. ja kuinka kommunikoida heidän kanssaan. Laitteena oleminen tarkoittaa vain kommunikointia isännän kanssa omalla tavallasi.
Kuten näette, isäntänä oleminen on paljon monimutkaisempi tehtävä kuin laitteen oleminen.
Arduinos ovat laitteita . Pienet USB-liitäntäpiirit, joita he käyttävät, ovat hyvin vähän virtaa kuluttavia ja voivat olla vain laite, ei koskaan isäntä.
Jos haluat liittää laitteen johonkin, sen on oltava isäntä (huomautus: Olen tarkoituksella huomioimatta tässä olevat keskittimet).
Arduino Due käyttää paljon tehokkaampaa sirua, joka pystyy olemaan isäntä (käyttämällä ns. On-The-Go-tilaa).
Tehdä se mikä tahansa vähemmän tehokas kuin Due, tarvitset lisälaitteiston, joka on erityisesti suunniteltu USB-isäntäksi – ja siinä tulee USB-isännän suoja. Siinä on siru, joka on suunniteltu erityisesti USB-isäntäksi, jotta voit kytkeä laitteen sisään.
Mikään Unon siru ei ole suunniteltu isännäksi. Heillä ei vain ole voimaa.
Vastaa
Ei. USB erottaa tiukasti isäntä- ja laiteroolit. Muutama siru niillä on toiminnalliset lohkot, jotka kykenevät suorittamaan kumpaakin roolia, mutta 8u2 / 16u2 eivät ole esimerkkejä tästä.
Tyypilliset USB-sarjamuuntimet, kuten FT232, CP210x, CH340, PL2303 jne., ovat myös ehdottomasti laitteita eivätkä kykene olemaan hosts
On olemassa halpoja isäntäkelpoisia MCU: ita, kuten Kinetis KL25Z, mutta niiden käyttämiseksi halvimmassa muodossaan tarvitset toisenlaisen ohjelmistomenetelmän (esimerkiksi mbed kuin Arduino) ja paljon enemmän henkilökohtaista työtä. Teensy-LC on yhteydessä toisiinsa, mutta maksat enemmän Arduino-koodin latausavustajasta kuin MCU: sta, joka suorittaa ohjelman itse.