카테고리 없음

아두이노 적외선 리모컨 시리얼 통신으로 데이터 확인

abc0123 2017. 12. 1. 23:25
반응형

 

아두이노를 갖고 놀면서 이미 핸드폰과 블루투스로 연결해서 RC카를 제어하는 과정까지 모두 정리를 해봤지만 오늘은 그동안 건전지가 없어서 사용하지 못하고 있던 적외선 리모컨을 활용해볼 생각이다. 적외선 리모컨이란 쉽게 생각해서 우리가 매일 손에 쥐고 살고 있는 TV 리모컨을 생각하면 되는데...

 

RC카

 

아래 사진과 같은 리모컨과 수신부가 있으면 리모컨에서 보낸 값을 아두이노에서 받아서 제어를 할 수가 있다. 그리고 이 값들을 통해서 위 글에서 만들어 본 RC카도 제어할 수 있을 것 같다.

 

 

1. 적외선 리모컨과 수신부

 

리모컨과 수신장치

 

▲ 오른쪽에 다리 세 개 있는 작은 녀석이 리모컨의 값을 받는 역할을 하는데 우리가 매일 보는 TV에도 이게 붙어 있어서 리모컨의 신호를 받아서 채널을 돌리고 음량을 조절하고 하는 것이다. 나도 앞으로 이 녀석을 활용해서 다양한 제어를 해볼 계획인데 일단 어떤 번호에서 어떤 값이 들어오는지 알아야 그 값들을 활용해서 각종 액추에이터를 제어할 수 있기 때문에 오늘은 아두이노 시리얼 모니터를 통해서 그 값들을 알아보는 시간을 가져볼까 한다.

 

우선 회로부터 만들어볼 텐데 송신부의 핀 세 개 중에서 오른쪽부터 순서대로 VCC, GND, DATA를 전송하는 녀석인데 나는 디지털 신호를 아두이노의 D11에서 받도록 할 것이며 다음과 같이 회로를 만들었다.

 

회로도

 

▲ 각각의 핀에 VCC, GND를 연결할 후 나머지 하나(빨간색)은 D11로 연결을 했다.

 

D11번핀

 

▲ 이제 아두이노에 프로그램을 업로드해서 리모컨에서 보내는 값을 받아서 시리얼 모니터에 출력해볼 텐데 그 예제는 이미 만들어져 있기 때문에 IRremote 라이브러리를 추가한 후 IDE에서 불러와서 사용하기만 하면 된다. 혹시 이 글을 보는 분들 중에 라이브러리 구하러 가기 귀찮은 분들은 아래 파일 받아서 사용하면 된다.

 

Arduino-IRremote.zip

 

이 파일을 받아서 압축을 푼 다음 아두이노 라이브러리에 추가한다.

 

 

2. 적외선 리모컨 라이브러리 추가와 예제

 

라이브러리

 

▲ 사진처럼 윈도우 탐색기의 라이브러리 문서 안에 Arduino 폴더가 있을 것이고 그 안에 libraries가 있는데 거기에 압축을 푼 Arduino-IRremote를 그대로 넣으면 된다. 다음으로 아두이노 스케치 프로그램에서 적외선 리모컨 예제를 하나 불러오는 과정을 살펴본다.

 

예제 불러오기

 

▲ 스케치 프로그램에서 [파일 > 예제]를 순서대로 선택하면 오른쪽으로 많은 목록들이 보이는데 아래쪽으로 쭉 내려보면....

 

Demo

 

▲ 사진처럼 IRremote 안에 IRrecvDemo 파일이 보일 것이다. 이걸 불러와서 아두이노에 업로드 한 후 테스트를 해볼 텐데 한 가지만 주의하자.

 

 

핀 번호 확인

 

▲ 앞에서도 잠깐 언급했지만 나는 리모컨에서 보낸 값을 디지털 핀 11번에 연결을 했는데 이 예제를 수정하지 않고 그대로 사용하기 위해서였다. 혹시 다른 디지털 핀으로 연결을 할 때는 이 숫자를 봐꿔 줘야 할 것이다. 이제 이 소스 코드를 아두이노에 올린 후 테스트를 해보자.

 

 

▲ 이처럼 리모컨을 누를 때마다 그 버튼에 해당하는 값을 읽어오는 걸 알 수 있다. 참고로 중간에 FFFFFFFF가 뜨는 건 버튼이 연속으로 눌렸을 때 출력되는 값인데 이 부분은 영상에서도 확인할 수 있을 것이다. 그리고 이 리모컨이 저렴한 거라서 그런지 버튼이 잘 안눌러질 때도 있고 길게 눌러져서 뜻하지 않게 FFFFFFFF가 출력되는 경우가 종종 발생하긴 하는데 정확하게 한 번만 누른다고 생각하고 누르면 원하는 값을 전달할 수 있다.

 

그리고 한 가지 주의할 점이 있는데 이 적외선 리모컨과 수신부의 거리가 너무 가까우면 뜻하지 않게 이상한 값들을 전송하게 되더라. 버튼을 누르지 않아도 두 녀석들 간에 통신이 이루어져서 적당한 거리(약 15cm 이상)에서 테스트를 해보니 제대로 버튼을 눌렀을 때만 정확한 값이 전달된다. 이 부분도 혹시 이 글을 보는 분들 중 나 같은 초보님들은 '왜 이러지?'라는 의구심을 가질 수 있을 거 같아서 참고하시라고 언급해봤다.

 

이렇게 해서 아두이노 적외선 리모컨에서 보내는 값을 시리얼 모니터를 통해서 확인하는 과정을 알아봤는데 이제 버튼별로 어떤 값이 전달되는지 정리한 후에 그 값들을 이용해서 모터 등 다양한 액추에이터들을 제어해봐야겠다.

반응형