본문 바로가기
아두이노 관련/아두이노 기초

아두이노 기초 - 시리얼 통신 - 01. 시리얼 통신이란

by Bugwhale 2020. 1. 24.

1. 개요

이 글에서는 시리얼 통신이 무엇인지와 통신 방법 또 아두이노에서 개발환경에서 시리얼 통신을 쉽게 하기 위해 만들어진 Serial 클래스를 분석합니다.

시리얼 통신이 뭔지 모르더라도 아두이노를 사용해본 적이 있다면 한 번쯤은 사용해본 적이 있을 것입니다. 아래의 코드는 "Serial.begin, Serial.println" Serial 클래스 메서드를 사용해 A0 핀으로부터 센서 값을 읽어와 시리얼 통신을 통해 시리얼 모니터에 값을 출력해주는 코드입니다.

void setup() {
    Serial.begin(9600);
}

void loop() {
    Serial.println(analogRead(A0));
    delay(1000);
}

2. 시리얼 통신이란?

시리얼 통신의 시리얼(Serial)은 직렬이라는 의미를 지닙니다. 즉 한국말로 직렬 통신입니다. 물론 페러렐(Parallel), 병렬 통신도 존재합니다. 직렬, 병렬에 대한 이해는 중학교 과학 과정에서 저항의 직렬, 병렬 연결에 대해 떠올려보면 됩니다.

2.1 직렬 연결, 병렬 연결

과학을 좋아했던 사람이라면 당연히 알고, 싫어했었다면 그때 받은 스트레스로 인해 아래 사진을 보면 기억날 것이라고 생각합니다. 아래 사진이 저항의 직렬 연결과 병렬 연결을 나타낸 사진입니다.

저항의 직렬 연결
저항의 병렬 연결

직렬 연결이란 무언가가 하나의 열로 연결된 방식이고, 병렬 연결이란 여러 열로 연결된 방식입니다.

2.1 직렬 통신, 병렬 통신

아래 사진은 직렬 통신과 병렬 통신을 나타낸 사진입니다.

직렬 통신(시리얼 통신)
병렬 통신(페러렐 통ㅅ긴)

  • 직렬 통신은 한 개의 선으로 연결되어 데이터를 주고받는 통신 방식입니다.
  • 병렬 통신은 여러 개의 선으로 연결되어 데이터를 주고받는 통신 방식입니다.

병렬 통신은 보통 8 개의 선을 사용하는데 이유는 1 Byte(8 Bit)를 맞추기 위해서입니다. 사진에서 볼 수 있듯이 직렬이든 병렬 통신이든 주고받는 데이터는 0(Low)과 1(High)의 신호만을 사용할 수 있기 때문에 데이터는 2 진수 값으로 통신합니다.

2.3 직렬 통신의 종류

직렬 통신에서도 여러 가지의 종류가 있습니다. 우리가 사용하는 USB, 하드디스크의 S-ATA, 아두이노의 사용되는 UART 통신 등 이 있습니다. 위에서 언급하였듯이 아두이노는 UART라는 구조의 직렬 통신 방법을 사용하는데 아두이노 개발환경(IED)에서는 이 통신 방법으로 Serial 클래스에 구현되어 있습니다.

3. 아두이노 시리얼 통신 자문자답

Q : Serial이라는 클래스는 무슨 의미인가?
A : 이건 아두이노 보다는 C++ 언어의 클래스 개념을 알아야 한다.

Q : 시리얼 통신은 1개의 선을 사용한다고 했는데, 아두이노 우노 기준 사용하는 핀이 2개이다.
A : 아두이노에서 송신할 선(1번 핀, TXD)과, 다른 기기로부터 수신받을 선(0번 핀, RXD)으로 총 2개이다.

Q : 아두이노 송수신 선은 0, 1번 핀인데 어떻게 USB를 통해 아두이노 개발환경과 통신하는가?
A : 아래 사진을 보면 0, 1번 핀은 내부적으로 USB 커넥터와 연결되어 있다.

4. 참조

사진 참조 : 제타 위키
사진 참조 : 위키피디아

댓글