Arduino는 USB 호스트 쉴드없이 USB 장치와 인터페이스 할 수 있습니까?

다양한 USB 장치를 Arduino Uno (특히 게임 패드와 웹캠)에 연결하려고하지만 일반적인 경우에 관심이 있습니다. ). Uno에는 USB 포트와 USB- 직렬 변환기가 있기 때문에 USB 호스트 실드를 사용하지 않고도 가능합니까? 방패를 사용할 수는 있지만 이것이 필요한지 이유가 궁금합니다.

Sparkfun 웹 사이트에 다음과 같이 나와 있습니다.

SparkFun USB Host Shield에는 Arduino와 함께 전속 USB 주변기기 / 호스트 컨트롤러를 구현하는 데 필요한 모든 디지털 로직 및 아날로그 회로가 포함되어 있습니다.

아두 이노에 이미이 기능이 포함되어 있지 않고 적절한 소프트웨어 만 있으면됩니다 (이미 작성된 호스트 쉴드 용 라이브러리를 사용하는 것이 더 쉽습니다). 아니면 하드웨어 제한이 있습니까?

이더넷 USB 동글이 arduino 용 이더넷 실드 대신 사용할 수 있습니까? (Majenko의 답변) 이론적으로 Due로 수행 할 수 있지만 Uno로는 수행 할 수 없습니다. . 이 경우 Uno가 USB 통신에 FTDI FT232RL 대신 ATmega16U2를 사용하기 때문인가요?

댓글

  • 동의합니다. ' 불가능하다고 생각하지 않습니다. USB는 특정 프로토콜이있는 일종의 직렬 버스입니다. 즉, 장치를 특정 시간 범위로 분할하는 장치에 태그를 지정합니다 (1 선과 같은 유사한 프로토콜). 유일한 제한은 속도라고 생각합니다. 따라서 모든 USB 특정 명령과 데이터를 동기화하는 것이 문제를 일으키는 것입니다.
  • @GeneralChaos You ' 맞습니다. '는 " 불가능 "이 아니지만 매우 비현실적입니다. 특별한 하드웨어가 필요하지 않은 ' USB 장치 (VUSB)의 소프트웨어 구현이 있습니다. ' 기껏해야 불완전하고 최상의 시간대에 거의 작동하지 않습니다. 호스트에 상응하는 호스트를 작성할 수없는 ' 이유는 없습니다. 그러나 1.5MHz의 USB 1.0 이상에서는 작동하지 않습니다. " 저속 ". 간단한 키보드 나 마우스 외에는 어떤 것도 말할 수 없습니다. Due가 메인 칩에 내장 한 Host 또는 OTG 하드웨어 없이는 이더넷이나 웹캠 같은 것은 완전히 불가능합니다.

Answer

먼저 USB 작동 방식의 기본 사항을 배워야합니다.

USB에는 호스트와 장치라는 두 가지 주요”사물 “이 있습니다.

하나의 호스트 (일반적으로 컴퓨터)와 여러 장치 (예 : Arduinos, 프린터, 스캐너, 웹캠, WiFi 동글 등).

호스트가되는 것은 어떤 장치를 연결해야하는지 아는 것과 관련이 있습니다. 그리고 그들과 의사 소통하는 방법. 장치라는 것은 자신의 방식으로 호스트와 통신하는 것을 의미합니다.

보시다시피 장치가되는 것보다 호스트가되는 것이 훨씬 더 복잡한 작업입니다.

Arduino는 장치입니다. . 그들이 사용하는 소형 USB 인터페이스 칩은 전력이 매우 낮으며 호스트가 아닌 장치 일 수 있습니다.

장치를 어떤 장치에 연결하려면 호스트 여야합니다 (참고 : 저는 의도적으로 여기에서 허브 무시).

Arduino Due는 훨씬 더 강력한 칩을 사용하며 호스트가 될 수 있습니다 (On-The-Go 모드 사용).

Due보다 덜 강력한 것은 USB 호스트 용으로 특별히 설계된 추가 하드웨어가 필요합니다. 여기에 USB 호스트 쉴드가 들어 있습니다. USB 호스트 용으로 특별히 설계된 칩이있어 장치를 연결할 수 있습니다. 그것에.

Uno의 칩은 호스트로 설계되지 않았습니다. 그들은 단지 힘이 없습니다.

답변

아니요. USB는 호스트와 장치 역할을 엄격하게 구분합니다. 몇 가지 칩 두 가지 역할을 모두 수행 할 수있는 기능 블록이 있지만 8u2 / 16u2는 이에 대한 예가 아닙니다.

FT232, CP210x, CH340, PL2303 등과 같은 일반적인 USB 직렬 변환기도 엄격하게 장치이며 호스트

Kinetis KL25Z와 같은 저렴한 호스트 가능 MCU가 있지만 가장 저렴한 형태로 사용하려면 다른 소프트웨어 접근 방식 (예 : Arduino가 아닌 mbed)과 훨씬 더 많은 개인적인 노력이 필요합니다. Teensy-LC는 관련이 있지만 프로그램 자체를 실행하는 MCU보다 Arduino 코드 로딩 도우미에 더 많은 비용을 지불합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다