[IT]/[아두이노]

[피지컬 컴퓨팅] 아두이노 - 6. 시리얼(Serial) 통신이란?

@Ain 2024. 5. 15. 13:16
반응형

시리얼 통신은 영어로 Serial인데, 이 시리얼의 반의어는 parallel로 병렬입니다.

그러므로 시리얼 통신 = 직렬 통신.

서로 다른 컨트롤러를 직렬로 연결하여 통신하는 방법이라고 보면 됩니다.

 

 

아두이노의 가장 기본이 되는 통신이기도 하며 아두이노 스케치를 컴파일한 후 아두이노 보드에 업로드할 때에도 이 시리얼 통신을 사용하게 됩니다. 아두이노와 아두이노 간의 연결, 아두이노와 컴퓨터 간의 연결 모두에 시리얼 통신을 사용할 수 있습니다.

 

예를 들어 8비트 데이터를 전송한다고 할 때, 병렬 통신은 8개의 데이터 선을 사용하여 각각의 선에 한 비트씩 동시에 전송하는 방법입니다. 이에 반해 시리얼 통신은 하나의 데이터 선을 사용하여 한 비트씩 차례로 전송하는 방법 입니다.

 

전송 속도 면에서는 병렬 통신이 더 좋을 수 있으나 시리얼 통신은 더 멀리 보낼 수 있습니다. 그러므로 용도에 맞게 사용하게 됩니다.

 

아두이노와 컴퓨터 간의 데이터 전송은 UART 방식의 시리얼 통신을 사용하게 되는데 비동기식 통신 방식을 사용합니다. 동기식 시리얼 통신 방식인 I2C나 SPI 통신의 경우에는 데이터 수신 타이밍을 위해 Clock 라인을 사용하는 반면 비동기식인 UART 통신은 미리 약속된 통신 속도로 데이터를 전송해야 합니다.

 

 

  • 동기식 방식
    1. 데이터 신호화는 별도로 동기 신호(Clock 신호)를 함께 전송
    2. 한번에 여러 문자를 수용하는 데이터 블록 단위로 전송하는 방식
    3. 일반적으로 상당히 큰 데이터 블럭인 경우에는 동기식 전송방식이 더 좋은 성능을 가짐
    4. 정보통신에서 사용되는 대부분의 통신 프로토콜에서 이용
  • 비동기식 방식
    1. 데이터 신호만을 보내고 각각의 방식에 따라 데이터 비트를 찾아냄
    2. 보통 한 문자 단위와 같이 매우 작은 비트 블럭의 앞과 뒤에 Start 비트와 Stop 비트를 삽입하여 동기화하는 방식
    3. 일반적으로 비동기식 전송방식은 단순하고 저렴하나 각 문자당 Start 비트와 Stop 비트를 비롯해 2~3 비트의 오버헤드를 요구하므로 전송효울이 다소 떨어짐
    4. 보통 낮은 전송속도에서 이용

 

1. 통신 속도 설정하기
void begin(speed);
void begin(speed, config);
  • speed: 시리얼 통신 속도로 Baud Rate라고 하며 초당 전송되는 비트 수를 말합니다. 단위는 bsp(Bit Per Second)로 반드시 다음 값들 중 하나로 설정해야 합니다. 단, 보통 9600을 많이 사용합니다.
  • config: 시리얼 통신 환경(데이터 길이, 패리티 비트, 정지 비트)을 설정합니다. "SERIAL_" 뒤에 각각의 정보를 의미하는 문자를 붙입니다.

 

2. 데이터 출력하기

 

size_t Serial.print(data, format);

size_t Serial.println(data, format);

  • print() 함수: 시리얼 모니터로 데이터를 출력하는 함수
  • println() 함수: print() 함수와 동일하나 출력 이후 엔터키(\n)를 추가로 출력하는 함수
  • 매개변수

시리얼 모니터로 오류 발견하기 - 시리얼 통신을 위한 스케치 코드

 

반응형