본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 IR 적외선 원격제어 키트를 사용해서 RGB LED 제어하기

by 오마이엔지니어 2017. 4. 8.
반응형

Arduino Uno 로 IR 적외선 원격제어 키트를 사용해서 3색 RGB LED를 제어해 보는 프로젝트 입니다

적외선 이란?
IR(Infrared)라고 부르며, 가시광선보다 파장이 길며, 햇빛이나 백열된 물체로 부터 방출되는 빛을 스펙트럼으로 분산시켜 보면 적색스펙트럼 보다 더 바깥쪽에 있으므로 적외선이라고 부릅니다



<적외선의 파장은 0.75um부터 1,000um사이에 위치합니다>

적외선 통신 (IR통신) 은 이런 적외선을 쏘아서 이를 통해 정보를 전달하는 통신 방식입니다
적외선 통신은 송신부와 수신부 2가지로 나눠지고 송신부에서 적외선을 발산하면 수신부에서 포토다이오드를 통해 적외선을 수신합니다
주로 TV나, 에어컨 등에서 사용되는 리모컨이 IR통신 방식을 사용합니다




적외선 통신 방법
적외선 통신에서 송신부는 정보를 전달할때 메시지 신호를 일정한 진폭의 반송파로 변조하여 전송합니다
변조를 하게 되면 효율적으로 정보를 전달할 수 있고 외부 빛이나 노이즈에 대한 영향을 덜 받게됩니다

아래 그림처럼 High과 Low으로 이루어진 하나의 펄스 Message Signal 을 변조해서 출력하면 Modulated Output 처럼 신호가 출력이 됩니다
변조과정은 Message Signal이 High 일때 변조할 주파수의 성분을 펄스형태로 최종 반송파 신호를 생성해서 출력하는것 입니다

적외선 통신은 37 ~ 42 kHz로 변조를 하며, 보통 리모컨에서는 38kHz로 변조를 합니다




수신부포토다이오드(Photodiode)로 송신부에서 전달된 적외선을 검출하는데, 포토다이오드는

빛에너지를 전기에너지로 바꾸어 전류를 흘러보내는 특성을 가지고 있습니다

보통 포토다이오드의 경우 검정색인데 검정색인 이유는 적외선만을 검출하기 위한 필터의 역할을 하기 때문입니다


위에서 송신부에서는 변조과정을 거친다고 했는데 수신부에서는 쌍을 이루는 송신부에서 보내는 적외선만을 검출해야 합니다
그렇기 때문에 별도의 필터를 통해 특정 주파수(38kHz) 의 적외선만 검출하게 되는데 아래 사진과 같은 IR Photodiode 을 사용합니다


최종적으로 적외선 통신을 구현을 한다면 아래와 같은 형태가 됩니다




사용된 부품
Arduino Uno R3 (Italy)
IR 적외선 원격제어 키트
RGB LED
미니 브래드보드
점퍼케이블
막대저항 220 Ohm - 3개

사용된 키트
Arduino Starter Kit (클릭)

구성 배선도


사용된 라이브러리

IRremote.zip


IRremote
라이브러리를 추가해 주어야 합니다

라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요

사용된 예제코드

example code.txt


주의사항
통신거리가 일정거리 이상 넘어가거나 방향이 맞지 않는경우 또는 리모컨과 수신기의 통신경로 사이에 장애물이
없도록 하고 테스트를 진행 하도록 합니다
장애물이 있을경우 전달되는 값이 변할수가 있습니다

프로젝트 동영상


동영상에서 확인할수 있듯이 리모컨 버튼을 누를때 마다 RGB LED의 색상이 변합니다
첨부된 예제 코드의
----------------------------------------------------------------------------------------------------------
const long r_less   = 16724175; // 1
const long r_more   = 16743045; // 3
const long g_less   = 16716015; // 4
const long g_more   = 16734885; // 6
const long b_less   = 16728765; // 7
const long b_more   = 16732845; // 9
const long randcol  = 16726215; //
const long onoff    = 16753245; //
const long blinkrgb = 16718055; //
----------------------------------------------------------------------------------------------------------
이 부분을 참조해서 누르면 되겠습니다 (리모컨 타입에 따라서 차이가 있을수 있습니다)


예제코드에 Serial.println( ir_signal ); 가 있으므로 시리얼 모니터로도 출력값을 확인해 볼 수 있습니다

example code.txt
0.0MB
IRremote.zip
0.03MB
반응형

댓글