아두이노 – 외부 디바이스 연결 방법

  • Serial (USB to UART, FTDI) Host – USB Host shield, Android ADK
  • Serial Client – USB OTG cable
  • Ethernet
  • IR transeiver
  • RF transeiver
  • Bluetooth (1:1)
  • Zigbee (1:N)
  • WiFi (1:N)
  • WiFi direct (1:N)

Serial (USB to UART, FTDI) Host – USB Host shield, Android ADK

  • 아두이노가 USB Host 가 되어서 통신함.
  • USB Host 기능을 해주는 USB Host shield를 사용하거나 안드로이드 ADK 용 shield 사용
  • Shield 가 고가이며 부피가 큼.
  • 안드로이드 ADK 의 경우 망함. 현재는 거의 사용되지 않는 죽은 코드

Serial Client – USB OTG cable

  • PC에 아두이노를 붙여서 사용하듯이 안드로이드 폰이 USB Host 역할을 함
  • Android 3.o HC 이상부터 지원하도록 되어 있지만 제조사 별로 기능 지원에 차이가 있음
  • 대부분 Android 4.0 이상의 최신 폰에서는 지원
  • 안드로이드 – OTG 케이블 – USB 케이블 – 아두이노 순서로 연결됨.
  • 아두이노에서 별다른 연결 설정이 필요 없으며 Hardware serial 통신을 사용하면 되므로 간단함
  • Serial.xxx() 함수를 사용하면 됨 (Serial.begin(9600), Serial.print(), Serial.available(), Serial.read(), Serial.write()…)
  • OTG 케이블이 연결되면 연결된 장치의 Vendor-ID에 따라 원하는 앱이 실행되도록 설정할 수 있음.
  • App에서 usb-serial 라이브러리를 사용해서 Serial 통신 코딩가능.

Ethernet

  •  ENC28J60 모듈과 이더넷 쉴드를 주로 사용

IRED

RF transeiver

  • 다양한 주파수를 통한 라디오 통신
  • 1:N 통신이 가능. 여러대의 아두이노를 저렴하게 무선 연결 가능
  • 주파수 및 거리, 장애물에 따라 데이터 신뢰성이 좌우됨
  • 2.4MHz – nRF24L01 칩 : Mirf 라이브러리 사용가능
  • 315MHz : VirtualWire 라이브러리 사용 가능
  • https://www.hardcopyworld.com/?p=284
  • https://www.hardcopyworld.com/?p=281

Bluetooth

  • 안드로이드 및 iPhone 과의 연결은 BT 가 대세
  • HC-05, 06, 07 시리즈의 비교적 저렴한 모듈과 BLE 모듈을 사용가능
  • Bluetooth 모듈과 아두이노는 2-Line 을 이용한 SoftwareSerial을 사용
  • BT 모듈의 경우 UNO 기준 2, 3번 핀과 연결해야만 동작하는듯 (내부적으로 인터럽트를 사용한다고 함)
  • 안드로이드의 경우 BT 연결을 위한 API가 프레임웍에서 제공되며
  • 이를 잘 구조화 한 예제 코드가 있어 구현이 쉬움.
  • https://www.hardcopyworld.com/?p=188

Zigbee

  • 1:N 연결을 지원하는 신뢰성 있는 통신을 지원
  • 근데 비싸서 외면 당함

WiFi (Serial 지원 모듈)

  • 1:N 연결, 고속 통신에 적합
  • 안드로이드 앱 입장에서 프로그래밍 난이도는 조금 더 높음

WiFi direct ()

  • 주로 Phone to Phone 연결에 사용
  • 아두이노가 다른 Small PC (라즈베리 파이, 비글보드…) 혹은 폰에 연결되어서 동작할 때 구성할 수 있는 옵션 정도
  • 아두이노에서 직접 WiFi 쉴드를 쓸 수도 있겠지만 초고가라 효용성이 의심스러움