본문 바로가기
Embedded System/Arduino

[Arduino] 시리얼 통신 (Serial communication)

by goatlab 2022. 3. 29.
728x90
반응형
SMALL

시리얼 통신 (Serial communication)

 

Serial은 직렬이라는 뜻으로 시리얼 통신은 직렬 통신을 말하며, 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 말한다.

 

https://www.vectornav.com/resources/inertial-navigation-primer/hardware/asynccomm

 

아두이노 우노의 경우 0번 핀 (RX)과 1번 핀 (TX)을 통해서 또는 USB연결을 통해서 시리얼 통신을 할 수 있다. 따라서 시리얼 통신을 사용하는 경우 0번과 1번 핀을 디지털 입출력으로 사용할 수 없다. 소스코드를 컴파일하고 USB를 통해 아두이노 보드로 업로드하는 과정 역시 시리얼 통신을 통해 이루어지며, 컴퓨터의 가상 시리얼 포트와 아두이노의 Serial을 통해 통신이 이루어진다.

 

시리얼 모니터 (Serial monitor)

 

 

아두이노와 컴퓨터간에 메세지를 주고받는 장치이다. 아두이노와 컴퓨터가 어떤 값을 주고 받는지 확인할 수 있는 가장 간단한 방법이다.

 

Baud Rate (통신 속도)

 

Baud rate는 직렬 전송의 변조 속도를 1초간에 전송되는 신호의 수로 나타낸 값을 말한다. 단위는 bps (bit per second)이다. Baud rate값은 여러가지 값으로 설정할 수 있지만 통신속도에 크게 영향을 받지 않는 경우 일반적으로 9600bps를 사용한다. Baud rate값이 높을수록 송수신 속도가 빠르지만 값이 너무 높거나 양쪽의 설정값이 다른 경우 데이터 수신에 문제가 발생한다. 아두이노에서는 300 ~ 250000bps까지 지원하지만, Serial 라이브러리에서는 115200bps까지 지원하므로 115200bps를 초과하지 않도록 주의해야 한다.

 

Serial.begin (통신속도)

 

시리얼 통신의 시작을 알린다. 매개변수는 시리얼 통신을 위한 전송속도를 몇 bps로 할 것인지 설정한다. (ex. Serial.begin(9600); 9600bps의 속도로 시리얼 통신을 시작한다.

 

Serial.print (출력값)

 

시리얼 통신의 데이터를 출력한다. 출력 값은 시리얼 모니터로 확인이 가능하다. (ex. Serial.print("hello "); Serial.print("world"); 출력 결과 : hello world)

 

Serial.println (출력값)

 

시리얼 통신의 데이터를 출력한다. print함수와 동일하며 출력 이후 개행 문자 (\n)를 추가로 출력한다. (ex. Serial.println("hello"); Serial.println("world"); 출력 결과 : hello)

 

Serial.available()

 

시리얼 포트에 수신되어 저장되어 있는 데이터의 바이트 수를 반환한다. 시리얼 포트로 수신된 데이터는 64바이트까지 버퍼에 저장된다. 시리얼 통신으로 데이터를 받았는지 확인할 때 많이 쓰이며, 데이터를 받았다면 데이터 갯수를 반환, 받지 않았다면 0을 반환해준다.

 

Serial.read()

 

시리얼 통신 수신 버퍼에서 첫번째 문자를 읽어 반환한다. 수신 버퍼가 비어 있으면 -1을 반환한다.

 

Serial.end()

 

시리얼 통신을 종료할 때 사용한다.

728x90
반응형
LIST