본문으로 바로가기

 아두이노나 ESP8266/ESP32, STM32, nRF51 등 여러 개발보드를 사용하다 보면 USB 장치의 연결이 필요해질 때가 있습니다. 하지만 위에서 언급한 MPU를 포함한 상당수의 MPU들은 USB Host 기능을 지원하지 않습니다. 이럴때 사용해야 하는 것이 USB 호스트 쉴드(USB Host Sield)입니다. 만약 MPU가 SPI(Serial Peripheral Interface)를 지원한다면, USB 호스트 쉴드를 연결하여 USB 장치에서 데이터를 받아올 수 있게 됩니다.

 

미니 USB Host Sield 2.0 (Mini Usb Host Sield 2.0) 모듈

 해당 쉴드는 MAX3421E 칩셋을 사용하며, 3.3v로 동작합니다. 혹여나 5v를 인가하게 되면 고장나니 주의해야 합니다.

사용시 USB 암단자의 5핀중 5v 핀과 칩셋간의 회로를 끊어줘야 합니다.

크기는 아두이노 프로 미니와 동일하며, 실제로 핀 헤더도 동일한 곳에 위치하므로 USB 호스트 쉴드에 수컷 핀헤더를 납땜한 후, 그 위에 아두이노 프로 미니를 납땜하여 사용할 수도 있습니다. 이경우 공간이 매우 절약되는 이점이 있습니다.

 

 

지원 보드

  • 모든 공식적인 Arduino AVR 보드들 (Uno, Duemilanove, Mega, Mega 2560, Mega ADK, Leonardo 등)
  • Arduino Due, Intel Galileo, Intel Galileo 2, Intel Edison
  • Teensy (Teensy++ 1.0, Teensy 2.0, Teensy++ 2.0, Teensy 3.x, and Teensy LC)
  • Balanduino
  • Sanguino
  • Black Widdow
  • RedBearLab
  • nRF51822
  • Digilent chipKIT
  • STM32F4
  • ESP8266
  • ESP32

 이 라이브러리는 단순히 usb 장치뿐만이 아닌 블루투스 동글과 같은 usb 장치를 위한 라이브러리(BTD library, Bluetooth HID library), 콘솔 게임기를 위한 라이브러리, 미디 장비를 위한 라이브러리등 수많은 장치를 위한 라이브러리가 포함되어 있어 범용성이 매우 뛰어납니다.

 

 

5v 회로 단선

5v 케이블단선 (출처 ht-deko.com)

 위에서 언급한대로 MAX3421E 칩셋은 5v가 인가되면 절대로 안됩니다. 따라서 특정 부분의 회로를 끊어줘야 합니다.

단선시킬 때 위치를 잘 파악하여 끊어야 합니다. 위 사진에서 보이다싶이 USB 단자와 핀 헤더 구멍, 그리고 칩셋으로 가는 선(2.2k옴 저항이 붙은 곳) 이렇게 세 부분의 회로가 연결되어 있습니다. 이때 핀 헤더와 usb 단자간이 아닌 그 오른쪽 부분을 끊어야 합니다.

 5v는 아두이노나 기타 다른 전류 장치에서 별도로 공급을 해 주어야 합니다.

 

 해당 내용이 담긴 포스트(일본어)

 

ミニ USB ホストシールド(Mini USB Host Shield)

void setup() {   Serial.begin(115200);   while(!Serial);   Serial.print("SCK : "); Serial.println(SCK );   Serial.print("MISO: "); Serial.println(MISO);   Serial.print("MOSI: "); Serial.println(MOSI);                    

ht-deko.com

 

 

핀 연결

미니 USB 호스트 쉴드 2.0 핀 배열 (출처 www.hackster.io)

 보드에 핀들이 많지만 일반적으로 사용하는 핀은 8개정도입니다. 이중 SPI 통신을 위해 사용되는 선이 5개(SS, INT, SCK, MOSI, MISO), 전력 공급을 위해 사용되는 선이 3개(3.3v, 5v, GND)입니다. 여기서 MPU마다 연결하는 방법이 다르니 주의해야 합니다. 

 Reset(RST) 핀은 3.3v를 인가하면 되므로 3.3v 핀과 연결시키면 됩니다.

 아두이노 미니, 아두이노 프로 미니의 경우에는 그냥 그대로 핀을 연결하여 사용이 가능합니다.

쉴드 핀 아두이노 미니 아두이노 마이크로 ESP8266 ESP32
SS 10 10 GPIO0 (D3) GPIO5 (P5)
INT 9 9 연결안함 GPIO17 (P17)
SCK 13 15 GPIO14 (D5) GPIO18 (P18)
MISO 12 14 GPIO12 (D6) GPIO19 (P19)
MOSI 11 16 GPIO13 (D7) GPIO23 (P23)

※ 위 표는 보드마다 일부 달라질 수 있습니다. 본인이 사용하는 개발보드의 핀 맵을 보고 확인하시길 바랍니다.

 

주의

  • ESP8266의 경우 원래 CS핀인 GPIO15 (D8)에 연결되어아 하나 버그로 인하여 D3번 핀을 사용하라고 합니다. 또한 UsbCore.h 파일을 열어 코드를 일부 수정해야 합니다. (issues/457) (해당 링크 참조)
  • ESP32의 경우 SPI가 총 4개가 존재합니다. 그 중 SPI (SPI1), HSPI (SPI2), VSPI (SPI3) 이렇게 총 3개를 사용할 수 있으며 아마 어떤 SPI에 연결해도 무방할 것으로 보입니다. 위 표에서는 레퍼런스에 나온대로 VSPI (SPI3)에 연결하였고 정상 작동됨을 확인하였습니다.

 

 

결과물

미니 USB 호스트 쉴드 2.0 단선 및 납땜 후

 5v와 칩셋간의 회로를 단락시켰으며, Reset 핀과 3.3v 핀을 합선시켰습니다.

 

 

 

라이브러리

https://github.com/felis/USB_Host_Shield_2.0

 

felis/USB_Host_Shield_2.0

Revision 2.0 of USB Host Library for Arduino. Contribute to felis/USB_Host_Shield_2.0 development by creating an account on GitHub.

github.com

 

참조 링크

https://chome.nerpa.tech/usb-host-shield-hardware-manual/

 

USB Host Shield Hardware Manual « Circuits@Home

USB Host Shield Hardware Manual 1. Introduction USB Host Shield is an inexpensive ( $25 for the full-sized board and $20 for the Mini variant ) add-on board for Arduino development platform. The shield provides USB Host interface, allowing full and low-spe

chome.nerpa.tech

https://www.hackster.io/139994/plug-any-usb-device-on-an-esp8266-e0ca8a

 

Plug Any USB Device on an ESP8266

Did you know you could plug USB devices on an Arduino or ESP? Keyboard, mouse, game controller, Midi controller, you name it! By labsud and madnerd.

www.hackster.io