뉴티씨



  • HOME
  • 고객지원
  • 질문답변


 
적외선 리모콘 응용하기 질문입니다.
 글쓴이 : 조세희
작성일 : 05-11-09 14:19
조회 : 8,625  
AVR을 이용하여서 적외선 리모콘을 응용해볼려고 하는데요.

저는 현재 광센서를 이용하여 간단한 자동케튼을 제작중인 학생입니다.

  그런데 책이나 어느 자료를 찾아보아도 리모콘을 AVR128보드를 이용하여 하는것은 없더군요.

리모콘에는 커튼의 동작 , 펼쳐진 커튼을 걷어내는 동작 스위치 2개를 이용하여 만들어 보고 싶은데요..

 회로도나 조언 좀 부탁드립니다.


p.s : 리모콘 수신부는 IR_KSM603LM , 저항 100옴 , 캐패시터 16/100uF 이러케 있으면 수신부는 되는 건가요? 그리고 AVR핀설정은 어떻게 해주어야 하는 것입니까?
 트랜스퍼 부분에도 메로리(CPU)가 들어가는거 같은데. 트랜스퍼 부분의 회로도는 도저히 감이 잡히질 않네요.

글이 정리 가 안되게 질문을 하는데 답변 좀 부탁드립니다.

컴플라자… 05-11-09 16:04
 
  샘플전자의 홈페이지에 가셔서 적외선 리모컨 킷을 구입하세요.  송수신 모두 구입하시면, 송신 회로, 수신회로 모두 나와 있구요.  수신부의 경우에는 핀으로 출력이 되니까,
그 핀을 입력으로 잡으시면 아주 쉽게 개발이 가능하실 겁니다.

만약, 송신부까지 만드시려면, 여러가지 방법이 있지만,
PWM으로 38kHz를 만들어 내서 적외선 송신 센서로 리모컨
출력을 내보내도 되겠지만, 오실로 스코프 등을 사용해서 정확한 타이밍을 재야 하는 등, 번거로우실 겁니다.
그냥 리모컨 송신 전용 IC를 사용하시는 게 좋으니까, 샘플전자의 리모컨 송신부킷트에서  IC만 빼서 회로를 납땜해서 구성해 쓰시는 게 좋을 듯 싶습니다.
AVR128 보드를 이용하여 해보시려면, 뒤에 간단하게 예전에 구성하였던 소스 중에서 리모컨 쪽만 빼서 올려 드립니다.

링크는 <a href=http://www.sample.co.kr/se-irf/index.htm target=_blank>http://www.sample.co.kr/se-irf/index.htm</a> 입니다.
컴플라자… 05-11-09 16:05
 
  *----------------------------------------------------------*/
/* 타이머 인터럽트 0 : 리모컨 센서 신호 입력 받는 부분.
LG TV 리모컨 신호를 입력으로 받는다.
센서의 신호 입력이 완료 되면 ir_data_flag가 1로 셋퇴며
리모컨 신호 4Byte는 ir_code[0]-[3]에 저장이 된다.
ir_code[0] =  Custom code
ir_code[1] = /Custom code
ir_code[2] =  Data code
ir_code[3] = /Data code
LG TV 의 경우 Custom code 가 0x04 이다.
*/
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
unsigned char i;
TCNT0 = 0xE9; //reload counter value

    ir_sig = IR_INPUT;
   
    if(ir_sig_d1 != ir_sig){
    if(ir_done == 0){
        if(ir_sig_d1==1 && ir_sig_cnt>80 && ir_sig_cnt<100){
            ir_done = 1;
            }else{
            ir_done = 0;
            }
        }else if(ir_done == 1){
        if(ir_sig_d1==0 && ir_sig_cnt>30 && ir_sig_cnt<50){
            ir_done = 2;
ir_data_index=0;
for(i=0; i<4; i++){
ir_code[i] = 0;
}
            }else{
            ir_done = 0;
            }
        }else if(ir_done == 2){
        if(ir_sig_d1==1 && ir_sig_cnt>3 && ir_sig_cnt<8){
            ir_done = 3;
            }else{
            ir_done = 0;
            }
        }else if(ir_done == 3){
        if(ir_sig_d1==0 && ir_sig_cnt>3 && ir_sig_cnt<22){
if(ir_data_index < 8){
ir_code[0] |= (ir_sig_cnt > 10) << (ir_data_index);
}else if(ir_data_index < 16){
ir_code[1] |= (ir_sig_cnt > 10) << (ir_data_index-8);
}else if(ir_data_index < 24){
ir_code[2] |= (ir_sig_cnt > 10) << (ir_data_index-16);
}else if(ir_data_index < 32){
ir_code[3] |= (ir_sig_cnt > 10) << (ir_data_index-24);
}

if(ir_data_index < 32)
ir_data_index ++;
if(ir_data_index == 32)
ir_data_flag = 1;
            ir_done = 2;
            }else{
            ir_done = 0;
            }
        }

        ir_sig_cnt = 0;

       
    }
    if(ir_sig_cnt < 200)
    ir_sig_cnt++;

    if(ir_sig > 150){
      ir_done = 0;
    }

    ir_sig_d1 = ir_sig;
}
컴플라자… 05-11-09 16:05
 
  /* IR 리모컨 신호 입력 */
#define IR_INPUT ((PINF & 0x80) != 0x80)

/* IR 리모컨 Data code 표 */
#define UP 0x00
#define DOWN 0x01
#define RIGHT 0x02
#define LEFT 0x03
#define STOP 0x44
#define POWER 0x08

/* IR 리모컨 인터페이스 변수
센서의 신호 입력이 완료 되면 ir_data_flag가 1로 셋되며
리모컨 신호 4Byte는 ir_code[0]-[3]에 저장이 된다.
ir_code[0] = Custom code
ir_code[1] = /Custom code
ir_code[2] = Data code
ir_code[3] = /Data code
LG TV 의 경우 Custom code 가 0x04 이다. */
unsigned char ir_code[4], ir_data_flag=0;

/* IR 리모컨 을 위한 전역변수들 No touch!!! */
unsigned char ir_data_index, ir_sig=0, ir_sig_d1=0, ir_sig_cnt=0, ir_done=0;