본문 바로가기
개발

[Arduino] 시리얼 통신

by 마스터누누 2017. 4. 19.
728x90
반응형

시리얼 통신



시리얼 통신이란 통신의 방법으로 직렬 통신이라고도 부른다.

이유는 한개의 통신선을 따라 한 비트씩, 시간의 흐름에 따라서 전송되기 때문이다.







직렬통신은 속도가 느리지만 통신거리가 길다는 장점이있다

(병렬은 이와 반대)

시리얼 통신은 RX(수신), TX(송신) 핀이 필요한데, 아두이노 우노 기준으로

디지털 0번핀이 RX(수신), 디지털 1번핀이 TX(발신)이다.


오늘은 PC와 아두이노의 통신 예제를 다루어 볼 것이다. 

USB 커넥터에 RX/TX핀이 모두 연결되어있기 때문에 USB로 통신을 하면 된다.

별도의 회로 구성은 필요없다.

다만 다른 기기와 중복 통신이 발생할 수 있으므로 RX/TX핀의 사용을 자제하자.





소스코드(시리얼 에코)



먼저 시리얼 통신에 사용되는 주요 함수를 살펴보자


Serial.begin() : 보드와 디바이스와의 통신 주파수를 맞춰주는 작업이라고 생각하면 된다. 

보레이트는 기준 값들이 있으므로 마음대로 숫자를 넣으면 안된다.

Serial.available() : 버퍼를 읽어온다고 설명되어있으나 if문과 함께 사용되어 버퍼에 데이터가 있는지 확인하는 용도로 많이 사용된다.

Serial.read() : 버퍼 내부 데이터를 읽어온다.

Serial.write(var) : 디바이스로 데이터를 보낸다.





 

1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()){
    Serial.write(Serial.read());
    }
}
 
cs



다음은 시리얼 에코(Echo) 소스이다.

PC에서 보낸 데이터를 보드에서 그대로 반환하여 다시 PC로 전송한다.






이를 아두이노 IDE에 입력 후 보드에 업로드한다.

이후 오른쪽 상단의 돋보기 버튼을 누르면 통신창이 나온다.







통신창은 아래위로 나뉜다.

전송 버튼 옆쪽의 텍스트 창은 자신이 보드에 보낼 텍스트를 입력하고

아래쪽 큰 화면은 보드에서 보낸 메세지를 출력한다.

또한 오른쪽 하단에 보레이트를 설정할 수있다. 초기에 보레이트 설정 시, 이를 참고하면 된다.





예제 실행




전송창에 보낼 텍스트를 입력하고 전송버튼을 누른다.





보드로 전송되었다가 다시 PC로 출력되는 것을 확인할 수 있다.


시리얼 통신을 활용하여 가장 많이 사용하는 것은 바로 ADC,

바로 센서값이다.

센서값을 눈을 볼 수 없기 때문에 보드에서 센서값을 숫자로 바꾸어 PC로 출력하게 된다.

다음 예제는 ADC 컨버팅, 센서값에 출력에 대해 다루어 보겠다.

반응형

댓글