UART는 직렬통신 방법을 말하며 아두이노에서 아두이노와 컴퓨터 또는 다른 디바이스와 통신을 하여 데이터를 주고받는 것을 의미한다. 아두이노는 한 개 이상의 시리얼 포트를 설정하여 통신할 수 있다.
아두이노의 RX는 Receive, 즉 수신용 핀이고 TX는 Transmit, 즉 송신용 핀이다. 그러므로 아두이노의 RX핀인 '0'번은 다른 디바이스의 TX에 연결되고 아두이노의 TX핀인 '1'번은 다른 디바이스의 'RX'에 연결해야 한다. 서로 핀이 바뀌면 데이터 송수신이 안되므로 반드시 번호를 확인한다.
이 핀에 통신이 연결되어 있을 때 보드 업로드 오류가 날 수 있다. 아두이노에서 시리얼 통신을 시작할 때는 Serial.begin()함수를 사용하여 속도를 선택한 후 사용한다.
시리얼 통신을 사용할 때는 보드레이트(Baud rate)를 설정한다. 보드레이트는 시리얼 통신의 속도이다. 통신을 주고받을 때 기기들 간의 통신속도가 같아야 한다. 아두이노에서는 일반적으로 9600bps를 많이 사용하지만 다른 속도를 사용할 때도 있다.
시리얼 통신은 1대 1 통신을 사용하기 때문에 통신 포트를 확장하기 위해 소프트웨어 시리얼을 사용한다. 시리얼 통신 핀으로 '0'과 '1'을 사용할 때는 라이브러리를 따로 불러올 필요가 없다. 그러나 다른 핀 번호를 이용하여 소프트웨어 통신을 하려면 SoftwareSerial.h 라이브러리를 불러와야 한다.

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