10-1 UART 통신이란?

공부하는 학생 A·2024년 2월 19일
0

아두이노 

목록 보기
50/74

UART 통신

UART는 직렬통신 방법을 말하며 아두이노에서 아두이노와 컴퓨터 또는 다른 디바이스와 통신을 하여 데이터를 주고받는 것을 의미한다. 아두이노는 한 개 이상의 시리얼 포트를 설정하여 통신할 수 있다.

시리얼 핀 연결 방식

아두이노의 RX는 Receive, 즉 수신용 핀이고 TX는 Transmit, 즉 송신용 핀이다. 그러므로 아두이노의 RX핀인 '0'번은 다른 디바이스의 TX에 연결되고 아두이노의 TX핀인 '1'번은 다른 디바이스의 'RX'에 연결해야 한다. 서로 핀이 바뀌면 데이터 송수신이 안되므로 반드시 번호를 확인한다.

통신속도(보드레이트)

이 핀에 통신이 연결되어 있을 때 보드 업로드 오류가 날 수 있다. 아두이노에서 시리얼 통신을 시작할 때는 Serial.begin()함수를 사용하여 속도를 선택한 후 사용한다.

시리얼 통신을 사용할 때는 보드레이트(Baud rate)를 설정한다. 보드레이트는 시리얼 통신의 속도이다. 통신을 주고받을 때 기기들 간의 통신속도가 같아야 한다. 아두이노에서는 일반적으로 9600bps를 많이 사용하지만 다른 속도를 사용할 때도 있다.

소프트웨어 시리얼 통신

시리얼 통신은 1대 1 통신을 사용하기 때문에 통신 포트를 확장하기 위해 소프트웨어 시리얼을 사용한다. 시리얼 통신 핀으로 '0'과 '1'을 사용할 때는 라이브러리를 따로 불러올 필요가 없다. 그러나 다른 핀 번호를 이용하여 소프트웨어 통신을 하려면 SoftwareSerial.h 라이브러리를 불러와야 한다.

소프트웨어 시리얼 연결 회로

스케치 10-1 소프트웨어 시리얼 스케치

#include <SoftwareSerial.h> //라이브러리 가져오기

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  // 시리얼 시작 선언, 통신 속도 설정
  Serial.begin(9600);
  Serial.println("Hi, serial!");  //시리얼 모니터에 표시

  // 소트프웨어 시리얼 통신 속도
  mySerial.begin(9600);
  mySerial.println("Hello, world?");  //시리얼 모니터에 ‘Hello World' 표시
}

void loop() { //반복
  if (mySerial.available()) {  //mySerial 통신에 데이터가 있으면
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {    //Serial 통신에 데이터가 있으면
    mySerial.write(Serial.read());
  }
}

스케치 10-1 분석

#include <SoftwareSerial.h>
소프트 시리얼 통신을 위해 라이브러리를 불러온다.
SoftwareSerial mySerial(10,11);
소프트웨어 시리얼 통신의 포트 번호를 지정한다. 이 경우 10번이 RX이고 11번이 TX가 된다. 다른 기기와 연결할 때는 TX는 RX에 연결하고 RX는 TX에 연결한다.

10-1 실행결과

profile
Shine like a star, Just like a star

0개의 댓글