본문 바로가기

아두이노/아두이노 기초

아두이노 시리얼 통신 - 문자 송수신

아두이노 시리얼 통신 개요


이번 장에서는 PC와 아두이노를 USB를 연결하여 시리얼 통신을 통해 문자를 송수신하는 방법과 소스코드를 설명하겠습니다.


사전 준비물


아두이노 UNO x 1





시리얼 통신에서 이용하는 함수


Serial.read()와 Serial.write()을 이용하여 Arduino-PC간에 문자를 송수신합니다. 이번에는 USB케이블을 사용하여 시리얼통신을 진행하겠습니다.


- Serial.begin(9600) : 9600 이 의미하는 것은 통신 속도입니다. Baud rate (보레이트, bit per second 단위) 라고 합니다. 

주의할 점은 여기서 지정한 통신 속도와 Serial 통신으로 연결되는 상대방이 지정하는 통신 속도가 일치해야 한다는 점입니다. 여기서는 USB 를 통해 PC와 연결되므로 아두이노 IDE – Serial Monitor 에 설정된 통신 속도가 일치해야 합니다. Serial Monitor 를 실행해보면 하단부에 통신 속도를 선택할 수 있는 옵션이 있습니다. Serial.begin() 으로 통신이 준비되면 아래 함수들을 이용해서 데이터를 전송할 수 있습니다.


- Serial.read() : 이 함수가 바로 수신한 데이터를 1byte 씩 읽어오는 함수입니다. read() 를 실행하면 1byte char 를 리턴합니다.


- Serial.write() : 이 함수는 1 byte, 1개의 문자, 문자열, 배열을 출력할 때 사용합니다. 보통 문자열 외에 저장해 둔 데이터 값을 순차적으로 보낼 때 사용합니다.


시리얼 통신 처리 순서


코딩 프로그램의 처리 순서는 아래와 같습니다.

  1. 시리얼포트의 보레이트를 9600bps[bit/sec]로 초기화한다.
  2. PC에서 전송한 1개의 문자를 시리얼통신으로 수신한다.
  3. 수신한 문자와 개행코드를 시리얼통신으로 송신한다.
  4. 위 처리를 2~3회 반복한다.




시리얼 통신 소스코드


샘플 프로그램의 소스코드입니다.

아두이노 IDE에 복사나 타이핑한 다음 실행해주세요.

void setup(){
  //시리얼 포트의 보레이트를 9600 bps[bit/sec]로 초기화한다
  Serial.begin(9600);
}
 
void loop(){
   
  int input;
  // 시리얼 포트로 부터 1개의 문자를 수신한다.
  input = Serial.read();
  
  if(input != -1 ){
    Serial.write(input);  // 수신한 문자를 송신한다.
    Serial.write("\n");  // 개행코드를 송신한다.
  }
}



시리얼 통신 실행 결과