[Arduino] 14. 적외선 통신
in Arduino
IR 통신
먼저 적외선 통신에 대해 이해하기 전에 IR(Infrared)를 이해해보겠습니다.
적외선이라고 부르며 우리가 눈으로 볼 수 있는 가시광선보다 파장이 길고, 햇빛이나 백열된 물체로부터 방출되는 빛을 스펙트럼으로 분산시키면 적색 스펙트럼보다 더 바깥쪽에 있기 때문에 적외선이라고 부릅니다.
IR통신은 이런 적외선을 이용한 통신 방법으로 TV나 에어컨 등에서 사용되는 리모컨이 IR통신 방식을 사용합니다.
적외선 통신은 송신부와 수신부 2가지로 나눠지고 송신부에서 적외선을 발산하면 수신부에서 포토다이오드를 통해 적외선을 수신합니다.
IR 통신 방법
송신부에는 적외선 발광 다이오드가 있으며 일반 LED와는 달리 우리 눈에 보이지 않는 적외선을 발산합니다. 적외선 통신에서 송신부는 보내는 신호를 변조하여 전송하는데 변조란 파장의 진폭을 변화시켜 일종의 신호를 만드는 행위입니다.
HIGH 와 LOW로 이루어진 Message Signal을 보내면 변조과정을 거쳐 Modulated 신호로 바뀝니다.
Message Signal이 HIGH 일 때 변조를 통해 신호를 생성하는데 적외선 통신은 보통 37 ~ 42KHz로 변조과정을 거치며, 보통 리모컨에서는 38KHz로 변조됩니다.
일단 리모컨으로 적외선 수신기에 신호를 보내보겠습니다!
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN); //적외선 초기화
decode_results results; //수신 데이터
void setup(){
irrecv.enableIRIn(); //적외선 수신 시작
Serial.begin(115200);
}
void loop() {
if(irrecv.decode(&results)){
Serial.print("Received data :0x");
Serial.println(results.value, HEX);
irrecv.resume();
}
delay(200);
}
이번엔 버튼을 이용해서 LED 적외선 송신기로 신호를 쏴서 다른 아두이노로 신호를 받아보겠습니다.
//송신기
#include <IRremote.h>
IRsend irsend;
int button_pin = 2;
void setup(){
Serial.begin(115200);
pinMode(button_pin, INPUT_PULLUP); //내부 풀업저항을 사용한 버튼 연결, 눌렀을 때 0
}
void loop() {
if(!digitalRead(button_pin)){ //버튼이 눌러진 경우
Serial.println("Data Sending");
irsend.sendNEC(0xFF18E7, 32);
delay(200);
}
}