2016년 9월 19일 월요일

ArdunityApp Stream Class

ArdunityApp은 Stream Class를 선택할 수 있는 옵션을 제공합니다.

아두니티에서 Sketch Option은 아두이노 스케치 생성 시 필요한 옵션을 의미합니다. 따라서, Sketch Option에 따라 생성될 아두이노 스케치는 변경되며 이것을 적용하기 위해서는 아두이노 보드에 변경된 아두이노 스케치를 업로드해야 합니다.

아두이노에서 Stream Class란 외부와 통신을 하기 위한 라이브러리를 의미합니다.
아두이노 Uno의 경우 기본적으로 PC와 통신할 수 있는 Serial Class가 있는데, 이것이 바로 Stream Class입니다.
아두이노 Serial Class를 이용한 PC와 통신 예제

아두이노 보드에는 UART(Universal Asynchronous Receiver/Transmitter)라 부르는 하드웨어가 내장되어 있습니다. UART는 흔히 시리얼 통신이라 부르는 통신 방식을 지원하는 하드웨어 장치로써 전송을 위한 TX 핀과 수신을 위한 RX 핀으로 연결됩니다.
UART 연결 시 두 장치는 꼬임(Twisted Pair) 연결을 해야 한다.

두 장치간 통신 시 신호 레벨(전압)을 맞추는 것은 매우 중요합니다. UART는 5V 혹은 3.3V로 신호 레벨을 맞춰야 하는데, PC의 USB를 UART로 변환하는 USB2Serial 부품이 아두이노에 연결되어 아두이노 보드가 UART로 PC와 USB로 통신할 수 있는 것입니다.
아두이노 보드에는 USB2Serial이 내장되어 있다.

어쨌든, 아두이노에서 UART를 이용해 통신을 하려면 Serial Class를 사용해야 합니다. 아두이노 Uno의 경우는 UART가 하나이지만, 아두이노 다른 종류 보드는 UART를 여러 개 가지고 있습니다.
  • 아두이노 Uno는 UART가 1개이다.
  • 아두이노 Leonardo는 UART가 2개이다.
  • 아두이노 Mega, Due는 UART가 4개이다.
이렇게 UART가 여러개인 경우 Serial Class는 Serial(혹은 Serial0), Serial1, Serial2, Serial3로 이름을 갖게 됩니다.
따라서, ArdunityApp에서 유니티와 통신할 UART를 선택할 수 있습니다.

UART를 사용하지 않고, 일반 Digital 핀으로 시리얼 통신을 할 수 있습니다.
시리얼 통신 규격에 맞춰 Digital 신호를 만들어 통신할 수 있다.

아두이노에서 이와 같은 방식을 Software Serial이라 부릅니다. 아두이노 Uno의 경우 UART가 1개이기 때문에 UART통신 부품을 연결해야 할 때, Software Serial을 이용해서 이를 대체할 수 있습니다.
대표적으로 HC-06과 같은 블루투스 SPP 통신 모듈의 경우 Software Serial을 이용해서 아두이노 보드와 연결해서 쓰고 있습니다.
HC-06을 UART에 연결해서 사용하는 경우

HC-06을 SoftwareSerial에 연결해서 사용하는 경우

SoftwareSerial을 사용하려면 TX와 RX역할을 할 핀을 지정해줘야 합니다.

SoftwareSerial을 사용하면 비용없이 UART를 추가할 수 있기때문에 편리합니다. 그러나, SoftwareSerial은 몇 가지 단점을 갖고 있기 때문에 사용에 주의해야 합니다.
  • SoftwareSerial은 여러 개를 연결해도 한번에 1개씩만 통신할 수 있다.
  • 통신 속도 9600bps 이상은 불안정하여 사용하기 어렵다.
  • SoftwareSerial은 Timer1을 사용하기에 Servo모터와 함께 사용할 수 없다.

AltSoftSerial은 SoftwareSerial의 단점을 보완한 매우 유용한 Stream Class입니다. ArdunityApp은 AltSoftSerial을 사용하여 통신하는 것을 지원합니다. 하지만, AltSoftSerial을 사용하려면 AltSoftSerial 라이브러리가 아두이노 IDE에 설치되어야 합니다.
AltSoftSerial 라이브러리를 설치하기 위해서는 아두이노 IDE의 라이브러리 관리 메뉴를 열어서 AltSoftSerial로 검색하면 쉽게 설치할 수 있습니다.

AltSoftSerial은 사용법이 SoftwareSerial과 비슷하지만, TX와 RX 핀이 고정되어 있습니다.
  • 아두이노 Uno, Due는 TX(9), RX(8) 핀을 사용합니다.
  • 아두이노 Leonardo, Yun은 TX(5), RX(13) 핀을 사용합니다.
  • 아두이노 Mega는 TX(46), RX(48) 핀을 사용합니다.
SoftwareSerial과 달리 TX와 RX 핀을 변경할 수 없기때문에 Sketch Option에 핀 설정 메뉴가 없습니다.

AltSoftSerial은 다음과 같은 특성이 있습니다.
  • TX, RX 핀이 고정되어있으므로 1개만 사용할 수 있다.
  • 고속 통신 속도(Baudrate)를 사용할 수 있다.
  • 일부 PWM 핀을 동시에 사용할 수 없다. (보드마다 다르므로 확인해야 함)

마지막으로 Bridge Class에 대해 설명하겠습니다.

아두이노 Yun 보드의 경우 WiFi 통신을 위해 AR9331 칩이 내장되어 있으며, 이 칩에는 OpenWrt라 부르는 리눅스 OS가 실행되고 있습니다.
아두이노 Yun 보드

즉, 아두이노 Yun 보드는 CPU가 2개가 있는 것이고 각각의 역할은 다음과 같습니다.
  • 아두이노 Uno와 같이 핀 제어 역할
  • WiFi를 검색하고 연결하는 역할
이 두 칩은 통신을 위해 UART로 연결되지 않았고, 고유의 프로토콜을 사용합니다. Bridge Class는 아두이노 Yun에서만 사용되는 Stream Class이며 아두이노 보드가 인터넷으로 통신할 수 있게 만들어줍니다.
ArdunityApp은 아두이노 Yun보드를 위한 Bridge Class를 지원하므로 인터넷을 통한 아두이노와 유니티 통신이 가능합니다.


댓글 없음:

댓글 쓰기