Hledám připojení různých zařízení USB k Arduino Uno (konkrétně gamepad a webová kamera, ale zajímá mě obecný případ ). Je to možné bez použití hostitelského štítu USB, protože Uno má USB port a USB na sériový převodník? Mohl bych použít štít, ale jsem zvědavý, zda / proč je to nutné.
Web Sparkfun uvádí, že:
SparkFun USB Host Shield obsahuje všechny digitální logické a analogové obvody potřebné k implementaci vysokorychlostního USB periferního / hostitelského řadiče s vaším Arduino.
Neobsahuje to Arduino, potřebuje pouze vhodný software (i když je zjevně snazší použít již napsanou knihovnu pro hostitelský štít). Nebo existují hardwarová omezení?
Podle Může být ethernetový USB Dongle místo ethernetového štítu pro arduino? (Majenkova odpověď), lze to teoreticky udělat s Due, ale ne s Uno . V takovém případě je to proto, že Uno používá pro komunikaci USB místo FTDI FT232RL ATmega16U2?
Komentáře
- Nemám ' si nemyslím, že je to nemožné, USB je nějaká sériová sběrnice se specifickými protokoly, tj. zařízení označující rozdělující zařízení do konkrétních časových rozsahů (některé podobné protokoly jako jeden vodič). Myslím, že jediným omezením je rychlost, proto synchronizace všech příkazů a dat specifických pro USB je věc, která způsobuje potíže,
- @GeneralChaos You ' máte pravdu, je to ' není " nemožný " – ale je to velmi nepraktické. K dispozici je softwarová implementace zařízení USB (VUSB), která ' nepotřebuje žádný speciální hardware. ' je to v nejlepším případě pohodlné a v nejlepších dobách sotva funguje. Neexistuje žádný důvod, proč byste nemohli ' t napsat ekvivalent hostitele – nikdy by to ale nemohlo fungovat na více než 1,5MHz USB 1.0 " Nízká rychlost ", takže nikdy nemohl mluvit s ničím jiným než s jednoduchou klávesnicí nebo myší. Věci jako ethernet nebo webové kamery jsou zcela nemožné bez hardwaru Host nebo OTG, který Due zabudoval do hlavního čipu.
Odpovědět
Nejdříve se musíte naučit základy fungování USB.
V USB existují dvě hlavní„ věci “: Hostitelé a zařízení.
Máte jeden hostitel (obvykle váš počítač) a mnoho zařízení (například Arduinos, tiskárny, skenery, webové kamery, WiFi klíče atd.).
Být hostitelem zahrnuje vědět o tom, jaké zařízení k sobě budete mít připojené a jak s nimi komunikovat. Být zařízením znamená jen komunikovat s hostitelem vlastním způsobem.
Jak vidíte, je mnohem složitější být hostitelem než být zařízením.
Arduina jsou zařízení . Malé čipy rozhraní USB, které používají, mají velmi nízkou spotřebu a mohou být pouze zařízením, nikdy hostitelem.
Pokud chcete zařízení připojit k něčemu, musí to být hostitel (poznámka: Jsem záměrně zde ignorujeme rozbočovače).
Arduino Due používá mnohem výkonnější čip, který může být hostitelem (pomocí takzvaného režimu On-The-Go).
Dělat to pomocí něco méně výkonného než a Vy potřebujete další hardware, který je speciálně navržen tak, aby byl hostitelem USB – a to je místo, kde přichází hostitelský štít USB. Má čip, který je navržen speciálně jako hostitel USB, takže můžete připojit zařízení do toho.
Žádný z čipů na Uno není navržen jako hostitel. Prostě nemají sílu.
Odpověď
Ne. USB striktně rozlišuje mezi rolemi hostitele a zařízení. Několik čipů mají funkční bloky schopné vykonávat jakoukoli roli, ale 8u2 / 16u2 nejsou toho příkladem.
Typické USB sériové převaděče jako FT232, CP210x, CH340, PL2303 atd. jsou také přísně zařízení a nemohou být hostitelé
Existují levné MCU podporující hostitele, jako je Kinetis KL25Z, ale pro jejich použití v jejich nejlevnější podobě byste potřebovali jiný softwarový přístup (například mbed než Arduino) a mnohem více osobního úsilí. Teensy-LC je příbuzný, ale za pomocníka pro načítání kódu Arduino na něm zaplatíte více než za MCU, který sám spouští váš program.