1. IR(적외선) 송/수신 센서를 이용한 IR신호 송/수신
우선 흔히 가정내에 있는 리모콘들의 적외선 신호 값을 해킹할 필요가 있었습니다.
(※ 기존 리모콘들로 TV, 에어컨과 같은 가전기기를 제어하는데 이를 자동으로 컨트롤하기 위해서)
-
void IR_remote()
-
{
-
new_time = micros(); // 현재시간 저장
-
time=new_time - old_time; // 엣지 사이의 시간 계산
-
old_time=new_time; // 이전시간을 현재시간으로 갱신
-
-
if(time > 13000 && time <14000) IR_start=1; // lead code 13.5ms의 리드코드를 확인
-
else if(time > 9000 && time <12000) { // repeat code 일때는 무시, 입력은 1번만
-
Serial.println("R"); // repeat code 가 들어오면 'R' 을 출력
-
IR_start=0; // 변수 초기화
-
mask=0x00000001;
-
IR_rx_data=0x00000000;
-
} else if(IR_start==1) { // lead code
-
if(time > 1025 && time < 1225) { // 1.125ms = 0
-
IR_rx_data &= ~mask;
-
mask=mask<<1; // mask를 1비트씩 Shift
-
}else if(time > 2125 && time < 2325) { // 2.25ms = 1
-
IR_rx_data |= mask;
-
mask=mask<<1; // mask를 1비트씩 Shift
-
}
-
-
if(mask==0){ // mask가 모두 시프트되어 0이되면(32bit)
-
IR_code=IR_rx_data;
-
Serial.print(IR_code, HEX); // IR code 값 시리얼로 전송
-
Serial.print(" : ");
-
Serial.print(IR_code, BIN);
-
Serial.println(" ");
-
-
// 변수 초기화
-
IR_start=0;
-
mask=0x00000001;
-
IR_rx_data=0x00000000;
-
-
ir_check=0;
-
}
-
}
위의 소스는 Arduino UNO에 IR 수신 센서를 연결하고,
리모콘의 버튼을 눌러 IR 수신 센서에 IR 신호를 전달하면,
신호 포맷에 따라 신호의 값을 해킹하여 시리얼 통신으로 PC 모니터에 값을 출력해주는 프로그램의 일부분입니다.
해당 프로그램을 실행하면 아래와 같이 IR 신호의 Hex값과 Binary값을 얻을 수 있습니다.
저는 NEC 포맷의 리모콘을 사용하였습니다.
NEC 포맷은 위의 그림처럼 falling edge 사이의 시간 간격으로 코드 값을 구할 수 있습니다.
lead code : 13.5ms / repeat code : 11.25ms / 1 : 2.25ms / 0 : 1.125ms
위의 소스 코드에서도 조건문을 통해 시간 간격(오차 범위 포함)으로 신호의 코드 값을 얻었습니다.
IR 신호의 코드 값을 얻은 후 Arduino UNO에 IR(적외선) 송신부를 연결하여,
해당 코드 값을 IR 송신부를 이용해 가전기기에 전송하였습니다.
NEC 포맷의 IR 신호를 송신하기 위해 오픈소스를 이용하였습니다.
-
#include <IRremote.h>
-
-
// ... 생략 ...
-
-
IRsend irsend;
-
-
// ... 생략 ...
-
-
irsend.sendNEC(0x20DF10EF, 34); // input the hex code
-
-
// ... 생략 ...
IRremote library를 추가한 후, 정의되어 있는 sendNEC 함수를 이용하여 IR 송신부에 코드 값을 전달하면
기존 리모콘이 없이도 가전기기를 자동으로 제어 가능하게 됩니다.
http://mjspring03.blog.me/40204282060
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | IR 리모콘 코드 따기 [1] | 묵묵이 | 2017.02.10 | 15 |
공지 | rc 카 작업용 [1] | 묵묵이 | 2017.02.07 | 14 |
공지 | [sketch_mydust] 미세멘지 측정기 작업 용 [2] | 묵묵이 | 2017.02.07 | 36 |
23 | sprintf2 사용법 | 묵묵이 | 2017.02.07 | 5 |
22 |
디지털 온 습도계 사용 DHT22
[2] ![]() | 묵묵이 | 2017.02.06 | 5 |
21 | 미세먼지 측정기 참조 [3] | 묵묵이 | 2017.02.06 | 5 |
» | test ir 리모컨 테스트 [1] | 묵묵이 | 2017.01.23 | 5 |
19 | ir 리모컨 값 기록 | 묵묵이 | 2017.01.18 | 2 |
18 | 아두이노 IR 리모컨 R 신호 반복문제 test | 묵묵이 | 2017.01.18 | 6 |
17 | 아두이노 톤함수를 사용하지 않고 부저 소리내기 | 묵묵이 | 2017.01.17 | 1 |
16 | 키보드로 멜로디 연주하기 | 묵묵이 | 2017.01.17 | 4 |
15 | 아두이노에 작은별 멜로디 스케치 | 묵묵이 | 2017.01.17 | 4 |
14 |
아두이노 미세먼지 측정기 .. 만들기
![]() | 묵묵이 | 2017.01.17 | 2 |
13 | 서버모터 테스트 소스 | 묵묵이 | 2017.01.16 | 7 |
12 | 서보모터 제어하기 | 묵묵이 | 2017.01.16 | 1 |
11 | 아두이노 프로 미니 보드와 USB TO TTL 모듈을 이용한 프로그램 업로드 | 묵묵이 | 2017.01.13 | 1 |
10 |
ir 리모컨 수신 test ( 현제 작업중 소스)
[1] ![]() | 묵묵이 | 2017.01.12 | 4 |
9 | ir 적외선 센서를 이용한 거리 측청 - test 잘됨 | 묵묵이 | 2017.01.12 | 2 |
8 | 초음파 센서 참고 소스 [1] | 묵묵이 | 2017.01.12 | 4 |
7 | 아두이노 기초강좌 - IR 센서 [1] | 묵묵이 | 2017.01.11 | 7 |
6 | Arduino 아두이노 - relay module control 릴레이 모듈 제어 [1] | 묵묵이 | 2017.01.10 | 19 |
5 | 아두이노 나노 알아보기 | 묵묵이 | 2017.01.10 | 2 |
관련 자료 ...
http://bbangpan.tistory.com/8
http://tuwlab.com/ece/27125