전기전자2011.07.26 00:24
아두이노와 전자회로를 배울때 가장 먼저 해보는것이 LED ON/OFF 제어인데요, LED 대신 IRED(적외선 LED)를 장착하고  마치 모르스 부호같이 규칙에 맞쳐 ON/OFF를 해주면 복잡한 데이타도 송수신이 가능합니다.  여러분이 매일 사용하고 계신 TV같은 가전기기가 바로 이렇게 눈에 보이지 않는 빛을 통해 제어되고 있습니다.  이 기술을 잘 활용하면 여러분의 아두이노로 리모콘을 대체하거나 반대로 리모콘 명령에 따라 동작하는 아두이노 기기의 제작이 가능합니다.

본 글을 통해 아래의 적외선 송수신 기본회로를 소개해 드리고 실제로 리모콘으로 조정되는 로봇을 아두이노로 제어하는 방법도 안내해 드리겠습니다

1. 초간단 적외선 송신 회로
2. 고출력 적외선 송신 회로 ( 5미터 이상의 장거리? 전송가능)
3. 리모컨 신호 수신 회로





1. 초간단 적외선 송신 회로

그림1.의 회로를 보시면 바로 아시겠죠?  네,  일반적인 LED를 켤때 사용하는 회로와 동일하게 연결하면 됩니다.  차이점이라면 보통 IRED는 대부분의 LED보다 좀더 저 전압에서 구동된다는 점입니다.  따라서 일반 LED보다는 조금더 큰 저항을 사용하면 됩니다.  저항값이 작으면 좀더 IRED를 밝게 켤 수 있지만 대신 IRED와 아두이노에 무리가 갈 수 있으므로 적당한 저항값을 선정해주시면 됩니다. 하지만 정답은 없습니다.   예제에서는 560옴 저항을 사용하였습니다. 

예제에 사용된 IRED 규격:   정격 1.36V ,  최대 1.7V,  피크주파수 940nm, 화각+-20도

5V 전압을 가할 경우,  I= V/R 공식을 참고하시면  약, 9mA 전류가 흐를 수 있음을 계산으로 예상할 수 있습니다.
아두이노의 경우 핀 한개에서 출력할 수 있는 전류허용량은 20mA에 불과합니다.  초간단 회로로 광신호 도달 거리가 짧을 경우 그림2. 와 같은 고출력 전송회로를 사용하면 됩니다.  위 예제에선 아두이노 디지탈3번 핀을 통해 ON/OFF 제어를 하게됩니다. 참고로, 디지탈 3번핀은 PWM 출력을 지원해주는 핀중 하나입니다.



2. 고출력 적외선 송신 회로

본 회로는 보통의 가전기기 제어용 리모콘에서 사용되는 회로입니다. 수십에서 수백 mA의 고출력 송신이 가능하므로 비교적 원거리(5미터 이상)로 광신호를 전송할 수 있습니다. 이를 위해 트랜지스터를 사용하는데요 아두이노에서 저 전류 제어로 ON/OFF를 제어하고 실제로 IRED에 전류공급은 트랜지스터가 담당하여 비교적 큰 전류를 사용할 수 있게 됩니다.
그림2.를 참고하여 회로를 구성하시면 됩니다.  여기서 R1은 330옴  R2는 1옴을 사용하였습니다.  실제로 테스트 해본 결과 방이나 거실 전역에서 방향에 상관없이 신호전달이 되는것을 확인했습니다. 기본 제공되는 리모콘보다 더 고출력인것 같네요;; 
(사실 본 회로에 5V는 조금 과할 수 있습니다.  아두이노와 함께 사용하실 경우 5V 대신 3.3V 전압을 사용하면 좋습니다.)

예제 회로의 경우 일시적으로 매우 큰 전류가 흐르게되지만 매우 짧은 시간동안만 구동되므로 전체적인 전류소모율은 적은 편입니다.  참고로, 상용 리모콘의 경우 미작동중엔 sleep모드로 대기하다가 버튼이 눌리는 순간 깨어나서 IR송신 후 다시 잠에 들게 되므로 건전지 2개로 수개월씩 작동이 가능합니다.  회로도로 잘 이해가 가지 않으신 분들은 아래의 실제 연결된 사진을 참고하시기 바랍니다.


사진1. 고출력 IR 송신회로 실제 구성예

3. 적외선 수신 회로

적외선 송신측 IRED의 피크 주파수와 일치하는 파장의 포토트랜지스터나 포토다이오드를 이용하여 수신부 구현이 가능합니다. 하지만 우리주변엔 다양한 파장의 빛들이 가득차 있으므로 노이즈에 해당하는 빛신호를 차단하고 원하는 광신호만 추출해주는 필터회로가 있어야 실용이 가능해 집니다.  리모콘 수광 모듈은 이를 위한 소자와 필터회로가 일체화된 제품으로 매우 손쉽게 특정 파장 및 주파수의 빛 신호에 반응하는 수신기로 활용할 수 있습니다.

예제에 사용된 적외선 수광모듈 사양:   감응되는 빛의 파장: 940nm ,  빛 신호의 주파수: 38KHz

참고로, 적외선 송신시 사용된 IRED가  850nm 파장의 빛을 출력한다면,   수광모듈도 850nm 용으로 맞쳐줘야 수신률이 높아집니다.  마찬가지로 빛 신호의 캐리어 주파수(가령 38KHz)도 송/수신 모듈이 일치되어야 합니다.
예제에선  940nm 피크 파장의 IRED와  940nm형 수광모듈을 사용하였으며,  캐리어 주파수는 38KHz로 맞췄습니다.


IR 수광 모듈의 연결법도 매우 간단하며 (그림3을 참고) 전원만 공급해주고 VOUT단자로 출력되는 신호를 참고하기만 하면 됩니다. 다만,   전원 입력부에 노이즈가 있어 문제가 되는경우라면 전원 입력부에 저항과 콘덴서를 이용하여 노이즈를 감쇄시켜줘야 합니다.  (보통은 생략이 가능합니다. 필요한 경우 관련자료에서 IR수광모듈 데이타 시트를 참고하시기 바랍니다.)
위 회로에서는 VOUT 출력을 아두이노 디지탈11번 핀에 연결하여 신호를 감지하는 경우를 가정하였습니다.


아두이노로 적외선 신호 송신 및 수신하기 - 프로그래밍 편

위에서 소개해드린 방법으로 하드웨어 준비는 간단히 끝났습니다.
이제는 아두이노로 리모콘 제어 신호를 발신하기 위해선 전송규약에 맞쳐 ON/OFF제어가 필요한데 많은 분들에게 쉽지 않은 과제입니다. 따라서 전용 라이브러리를 활용하시면 좋은데요  공개된 아두이노 라이브러리들을 둘러보시고 적절한것을 선택하시면됩니다. 본 글에선 IR Remote 라는 라이브러리를 참고로 하였습니다. 
IR Remote 라이브러리의 경우  IR 송신을 위해서 D3핀을,  수신을 위해서 D11핀을 기본으로 사용하고 있습니다.


IR Remote 라이브러리로 적외선 리모콘 신호 발신하여 로봇 원격 제어하기

이제는 실제로 리모콘으로 제어되는 로봇을 아두이노로 제어해 보도록 하겠습니다.

제어대상: 원격제어 6족보행 로봇
전송프로토콜: 유사 NEC 코드
전송부 회로:  그림1. 또는 그림2 의 회로 모두 사용 가능

사전준비:
 .IR리모콘으로 조정되는 로봇 준비: 관련글 링크관련제품 링크
 .IR Remote 라이브러리 설치:  라이브러리 제작자 홈페이지 링크,   라이브러리 다운로드 링크


소스코드 예제:

#include <IRremote.h>

IRsend irsend;

int incomingByte = 0;

void setup()
{
  Serial.begin(9600);
}

void loop() {
 
    if (Serial.available() > 0) {
        // read the incoming byte:
        incomingByte = Serial.read();
        // say what you got:
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
        Serial.flush();
    }
        switch( incomingByte){
         case 56: //forward
           irsend.sendNEC( 0xc5000000, 8); //전진
           break;
         case 50: //backward
            irsend.sendNEC( 0x45000000, 8); //후진
            break;
         case 52: // turn reft
            irsend.sendNEC( 0x25000000, 8); //좌회전
            break;
         case 54: // turn right
            irsend.sendNEC( 0x85000000, 8); //우회전
            break;
         case 53: //stop 정지 , 아무신호도 안 보내면 정지합니다.
          break;
        }
      delay(500);    // 0.5초를 주기로 반복
}

아두이노에 위 소스를 프로그래밍 하신 뒤 시리얼 모니터 창을 여시고,  send 입력란에 아래의 해당 숫자키를 입력한 뒤 엔터를 입력하여 전송해줍니다.

 전진 8
후진
2
 좌회전 4
 우회전 6
 정지 5 or 기타키 or 그냥 엔터

가령, 전진을 하려면 숫자 8을 누르고 엔터를 쳐주면됩니다. 중지하려면 5번을 누르고 엔터를 치면됩니다.

소스 해석:
시리얼 포트를 통해 값이 전송되면 첫번째 바이트 값을 읽고 이값에 따라 방향제어 변수값을 수정합니다. 또한 이값은 별도의 입력이 없는경우 그대로 유지되므로 매번 순환루프 마다 보관해둔 방향제어 변수값에 따라 리모콘 신호를 발신하게 됩니다.

방향 제어 명령을 유선 시리얼 통신으로 받는 대신, 무선으로 전송 하거나 조이스틱이나 버튼 또는 센서를 이용하여 변화시켜주면 전파를 이용한 로봇제어나 자율이동형 로봇의 제작도 가능합니다.



동영상1. 실행 예제 보기

키보드 숫자를 입력후 엔터를 치면 시리얼통신으로 아두이노에 전송되고 이 값에 따라 적절한 리모콘 신호를 보내어 로봇을 제어하게됩니다.  본래 적외선은 사람 눈으로는 보이지 않지만 대부분의 카메라로는 볼 수 있습니다. 동영상 후반부를 보시면 광신호가 약 0.5초에 한번씩 송출될때 로봇이 움직이고, 신호가 없으면 로봇이 멈추는것을 확인하 실 수 있습니다.

끝으로,
 온갖 가전기기들이 리모콘으로 제어되고 있습니다.  이는 아두이노로 제어할 수 있는 기기들이 많다는 뜻이기도 한데요 여러분은 어떤 기기를 제어해 보시겠습니까?  가령 저렴하게 구입이 가능한 리모컨 제어되는 MP3플레이어로 말하는 로봇 만들기도 가능합니다.  아래의 관련글에서 좀더 세부적인 리모콘 프로토콜 정보도 참고하시기 바랍니다.

즐거운 DIY 생활 보내시길!!


관련 제품 링크

 .무선제어 6족보행 로봇

 .아두이노 UNO

 .적외선 무선통신킷




기타정보 링크
 .아두이노로 무선제어 6족보행 로봇 제어하기
 .말하는 로봇 만들기( 적외선 리모콘 프로토콜 )
 .IR수광모듈 데이타시트(첨부파일 참조)



저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. psjoon

    위 코드를 스케치에 입력하고 컴파일 하면 IRsend가 없다고 에러메시지가 뜸니다.
    왜 그렇가요
    라이브러리는 카피에서 붙여났습니다.

    2012.01.24 17:44 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 라이브러리에 문제가 없다면, 최신 아두이노 개발환경을 사용하시는지요? 그 경우 코드 호환성 문제로 일부 소스를 수정해야 정상작동되게 됩니다.

      적절히 수정을 해주시거나, (구버전)Arduino Sketch 0022 등의 버전에서 시도해보시기 바랍니다.

      2012.01.26 21:48 신고 [ ADDR : EDIT/ DEL ]
  2. sss

    고출력 수신부에 대해 궁금한 것이 있습니다.
    로보밥님께서는 npn 트랜지스터를 사용하셨는대... 아두이노는 핀 하나당 20ma를 출력하는게 한계아닌가요?
    5v핀을 사용하더라도 결국 아두이노의 승압 회로에 의해 승압된 전류를 사용하는 것 같은대... 아두이노의 승압 회로는 최대 ma의 전류를 출력할 수 있나요?

    2012.03.14 16:11 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 그림2. 고출력 발신 회로 말씀이신거죠? 해당 회로를 이용하시면 D3핀에서 출력되는 전류는 TR을 On/Off하는 역활만하므로 전류가 별로 소모되지 않습니다. (수 mA나 그 이하에 불가)
      IRED구동에 소비되는 고출력 전류는 디지탈핀이 아닌 5V전원핀에서 바로 나오므로 100mA 이상을 출력해도 됩니다.
      즉, MCU의 제어용 저전류로 고전류 부하를 제어하는 거죠!

      2012.03.15 20:58 신고 [ ADDR : EDIT/ DEL ]
  3. Black

    학교 과제를 할려고 하는데 맨위에 분 처럼 IRsend가 없다는 대서 막혔습니다..
    위에 답변에 보면 일부 소스를 수정해야 된다고 말씀하셨는데
    한참을 찾아 보았지만 이제 초보 수준의 c언어 실력으로는 찾아내기가 쉽지가 않습니다..
    말씀하시는 소스 부분이 아두이노의 해더 파일이지
    라이브러리의 해더 파일중에 수정해야 되는건지 잘 모르겠습니다.
    이 글을 보신다면 좀 도와주시길 부탁드립니다 ㅠ

    2012.05.31 18:55 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • c언어 초보수준으로 해결가능하십니다.
      IRSend가 없다는건 해당라이브러리가 정상설치안되서일겁니다. 아두이노설치 폴더에있는 libraries폴더에 위에링크안내드린 라이브러리를 다운로드받아 복사하신후 아두이노 리로딩하시면됩니다. 아두이노 라이브러리 설치하는법을 잘 모르실 경우 네이버 아두이노 스토리카페나 인터넷 자료를 참고하시기 바랍니다. 다른 오류가 뜬다면 아두이노 스케치를 0022버전으로 사용하시면됩니다.

      2012.06.01 18:45 신고 [ ADDR : EDIT/ DEL ]
    • Black

      친절하신 설명 감사 드립니다^^ 설명을 듣고 라이브러리에 설치하고 실행 켜서 컴파일이 드디어 정상 작동 하고 있습니다 ㅎ 다시한번 정말 감사드립니다 ㅎ

      2012.06.02 09:00 신고 [ ADDR : EDIT/ DEL ]
  4. 로보밥 짱조아

    안녕하세요 IR LED랑 수신부이용해서 근접센서 만들려고하는데
    수신부가 IR LED에서 나오는 적외선을 받으면 '1'이고
    안받으면 '0'이 되는건가요?!?!?

    2012.10.31 19:21 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. kang

    이거 아두이노 버전 신버전쓰는데 뭘바꿔야 할지 모르겠습니다...좀 알려주세요ㅠㅠ

    2013.05.23 23:17 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. novice

    안녕하세요? 송신회로에 궁금한 점이 있습니다. 소프트웨어만 하는 사람이다 보니 하드웨어 관련지식이 그다지 없습니다. ㅠ 써 놓으신대로 3.3v에 연결했고 저항은 그대로 썼습니다. 그런데 sendRaw로 3번 반복되는 형태의 긴신호를 보내면 아두이노가 다운됩니다. 다운되는 현상을 몰라서 정말 한참헤맸습니다. 짧은 신호 (32비트이내로) 한번 보낼때는 정상 작동합니다. 우여곡절끝에 R1에 저항을 직렬로 더 연결했더니 죽는 현상은 해결됐습니다. R1,R2를 어찌 계산하는지 출력 전류는 어찌 계산하는지 설명 좀 부탁드릴 수 있을까요?

    2013.07.18 10:19 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 트랜지스터 연계 저항 계산은 쉽지 않습니다.
      공부를 원하시면 대학 교재용 전자회로(트랜지스터 앰프 관련부분) 서적을 보시면 됩니다. 위 저항치는 제가 정확히 계산한건 아니고 리모콘 송수신회로도를 참고하여 근사치로 설정한것입니다. 최적의 값은 사용 전원등을 고려해서 직접 계산해주셔야하겠네요 ^^.

      2013.09.04 13:47 신고 [ ADDR : EDIT/ DEL ]
  7. ninano

    수광모듈에 전류제한 저항없이 바로 전원에 연결하면 오래 사용 못하겠네요. 가능하면 Vout 단자에 풀다운 저항과 노이즈제거용으로 100pF 정도 달아주시면 좋겠네요.

    2013.07.21 12:25 신고 [ ADDR : EDIT/ DEL : REPLY ]
  8. oprix

    글을 보고 많은 도움 받다가 참고하시라고 적어봅니다.

    라이브러리 설치는 IRemote.zip 압축을 풀어 libraries 폴더에 넣어주면 되고
    컴파일시 에러는 WProgram.h 라고 적힌 부분을 Arduino.h 로 변환해주면 되네요.

    2013.09.15 16:40 신고 [ ADDR : EDIT/ DEL : REPLY ]
  9. lee

    좋은 자료 감사합니다 ㅎㅎ
    저는 pic로 만들려고 하는데...
    작자님이 쓰신 리모컨 소스를 그대로 사용해도 무방할까요??

    2014.03.02 17:31 신고 [ ADDR : EDIT/ DEL : REPLY ]
  10. 비밀댓글입니다

    2015.01.18 08:51 [ ADDR : EDIT/ DEL : REPLY ]

로보틱스2010.12.10 15:42
목표
저렴한 비용으로 로봇이 말하고 노래하게 만들기위한 방법 소개

방법 소개
이미 MP3Play 보드나 칩이 시장에 많이 나와있습니다...  다만, 값이 비싸다는 문제가 있습니다. 직접 제작하거나 제작KIT를 사용하면 비용이 5~10만원이 넘어갑니다.  때문에 시중에 판매되고 있는 MP3Player의 개조하여 사용하는것을 고려해봤지만, 막상 개조하려해도 쉽지가 않습니다.

그러던 중 리모컨으로 제어되는 제품을 리모컨 신호를 송출하는 깔끔한 방법으로 제어한다는 아이디어가 떠올랐는데요,  이방법은 MP3Player 뿐만이 아니라, TV,에어콘 등등의 가전기기도 덤으로 제어하여 이용할 수 있는 가능성이 있으므로 여러모로 활용성이 좋은 아이디어인것 같아 소개드립니다.

여러분이 이미 로봇 제어기(MCU)를 갖고 계시다면, 필요한건 IRED 1개와 TR 1개, 저항 1~2개 뿐이고,  디지탈 출력핀 1개와 약간의 프로그램이 추가되면 됩니다.  여기선 이와 관련된 기본 이론 소개와 관련 자료를 첨부하도록 하겠습니다.



사진. MP3Player+Speaker 기기 분해 사진

스피커와 배터리까지 포함되어 있는데 가격은 배송비 포함하여 2만원이 안됩니다.

여기선 말하는 로봇 대신 음악재생을 제어하는 동영상을 보여드리겠습니다.



동영상. 제어신호 송출로 재생/중지 제어 하는 예


리모컨 프로토콜

기계들이 의사소통을 하기위한 약속된 규칙을 프로토콜이라고 하는데요, 리모컨(리모트컨트롤러)과 수신기는 서로 동일한 프로토콜을 사용하여야 합니다. 하지만 각 제조사 및 기기별로 다양한 프로토콜을 사용하므로 호환성에 문제가 많은게 현실입니다. 하지만, 최근에 사용되는 많은 전자기기들이 NEC 코드를 사용하는 것으로 알고 있습니다. 때문에 일단 NEC코드를 기준으로 소개시켜 드리겠습니다.


NEC 코드 전송 규약

아래의 자료는 실제 리모컨에 사용되고 있는 IR신호 송출칩 DataSheet에 기록된 다이어그램입니다.  (첨부파일 참조)


그림. 전송규약 파형 안내도

캐리어 신호
 우선 리모컨 신호의 캐리어 주파수인 38KHz 주기의 방형파를 생성해야합니다. (위 그림 하단부 참조)  이는 타이머/카운터를 이용하여 만들 수 있습니다. Duty는 약 1/3정도를 권장하고 있습니다만, 손쉽게 하려면 50%로도 가능합니다.

캐리어 신호를 On Off한다.
위에서 만든 캐리어 주파수 파형을 약속된 시간만큼 On Off 하는것으로 리모컨 신호를 송출할 수 있습니다.
이 출력값은 그대로 출력비트에 연결된 IRED 구동회로에 전달되어 적외선의 On Off 상태로 전환되어 송출됩니다.

전송규약에 맞쳐 On Off
이제 약속된 파형을 송출합니다. 송출신호는 크게 3가지로 부분으로 나눌 수 있습니다.


1.시작코드
9ms의 High, 4.5ms의 Low 신호로 코드의 시작을 알립니다. 위 그림(1)부분 참조

2.데이타 코드열
시작신호 이후부터 bit data 1은 2.25ms 폭의 신호로  bit 0은 1.125ms 폭의 신호로 송출됩니다. 위 그림(2)부분 참조
보통 16 data bits를 순서대로 보낸 후, 비트 반전한 정보를 다시한번 송출하는 것으로 마무리됩니다.
비트 반전후 전송하는 과정에 의해 오차도 줄일수 있고, bit data의 1과 0의수와 관계없이 항상 동일한 폭이 됩니다.

3.반복코드
만약 숫자 3 버튼을 누른상태를 유지한다면 리모컨은 숫자 3에 해당하는 코드를 송출한 뒤 그 다음 부터는 "반복코드"를 송출하게됩니다. 이러한 방법을 사용하는것은 3을 1회 누른것과 2회 누른것을 구분하기 위함인듯 합니다.
반복코드는 위 그림(3) 부분같은 형태입니다. 

캐리어주파수(38KHz)를 사용하는 이유는 노이즈 제거를 위한것입니다.  IR수신회로에는 저주파 차단회로가 들어있어서 특정 주파수(가령 38KHz)이하의 성분을 제거해버립니다. 이로인해 형광등이나 기타 주변광에 의한 오차발생 소지를 줄일 수 있습니다.



IRED(적외선LED) 드라이브 회로

우선, IR수신회로에서 사용하는 수광소자의 주파수를 확인하여 송출용 IRED의 주파수를 결정합니다. 보통 8xx ~9xx nm 파장의 IRED가 사용됩니다. 제경우 940nm IRED(Wii전자펜제작용)와 940nm용 IR수신기가 있습니다.  수신기에서 사용하는 주파수를 잘 모르더라도 가까운 거리에서 사용할 경우 큰 문제가 되지 않으므로 주변에서 구할 수있는 IRED를 우선 사용해보시기 바랍니다.  또 하나 확인할 것은 구동 전압입니다. 일반 LED(2V)와 달리 IRED는 보통 1.4V 정도에서 작동합니다.
가장 단순한 구동법으로 디지탈 출력핀에 직결하는 방법도 있습니다만, 10미터 정도의 거리에서도 작동되는 고출력 리모컨을 원한다면 트랜지스터 한개로 구동하는것을 추천드립니다. 가령, 아래의 회로는 실제 리모컨에 사용되는 회로의 예입니다. (첨부문서참조) 짧은 순간에 고주파로 송신하게 되므로 실제의 정격전압보다는 다소 높은 전압을 사용할 수 있습니다.  아래의 경우는 건전지로 3V정도의 전압을 사용하는 경우입니다.



그림. 리모콘 송출용 IRED 구동회로 예



리모컨 기기 코드 분석하기

리모컨 신호의 코드를 분석해주는 전용 기기도 있지만, 오실로스코프를 이용하면 직접 코드 프로토콜의 종류와 코드값을 알아낼 수 있습니다.  제가 참고한 NEC코드의 경우 코드 송출시 2바이트의 정보가 송신됩니다.  1바이트는 장치번호이고 나머지 1바이트가 명령 코드입니다. 따라서 총 16비트입니다만 위에서 언급했듯이 반전비트를 전송하므로 총 32비트 정보가 송출되게 됩니다.  코드 분석을 위해선 IR신호 수신기가 필요한데요, 전용의 리모컨 IR수신 모듈이나 IR 포토트랜지스터가 있으면 됩니다.  IR수신 모듈 사용법은 첨부된 자료를 보시면 나옵니다.  전원 핀 2개에 5V, GND 입력을 하면 나머지 핀에서 아래 사진과 같은 신호가(전압변화) 출력됩니다.

리모컨 송신 신호 파형 실제 예

아래의 사진은 제가 갖고있는 리모컨들의 파형을 오실로스코프로 캡쳐한 것입니다. 왼편 두개는 좀 오래된 VTR과 CDP용 리모컨이고, 우측 두개는 비교적 최신의 전자제품용으로 LCD모니터 및 MP3Player용 리모컨입니다. 보시는 바와 같이 왼쪽과 오른쪽이 시작파형이 다릅니다. 오른쪽의 두 리모컨이 최근 많이 사용되고있는 NEC 코드 파형입니다. 전송규약을 잘 이해한 후엔 어떤 리모컨용 수신기도 만들수 있게됩니다. 반대로 어떤 리모컨수신 기기도 제어할 수 있게됩니다.  본 파형을 잘 보고 2바이트 값을 알아내야 합니다. 그중 1바이트는 항상 같을 겁니다. 즉, 기기번호입니다.  가령 제가 갖고 있는 MP3P의경우 0x02 의 기기번호를 갖고 있습니다. 그리고 나머지 한 바이트가 명령 코드입니다.  가령 Play/Pause버튼의 경우 0x06 입니다. 이 값을 잘 정리해둔 뒤 리모컨 송출 코드로 발송하면 기기는 명령을 받은대로 작동하게 됩니다.  전용 리모컨 대신 직접 만들어낸 송출 신호에 의해 기기가 작동하게되면,,, 기분, 좋습니다. ^^




오실로스코프


안타깝게도 여러분이 오실로스코프가 없다면, 리모컨 코드를 알아내기가 좀 어려울 겁니다. 하지만 불가능한건 아니고, 보유하고계신 MCU로 샘플링하여 계산해 낼 수 는 있습니다.  하지만 본격적인 전자회로 공부를 하시려한다면 오실로스코프 구입을강력 추천합니다. 저도 구입하고 싶다는 생각만 갖고 몇년을 보냈는데, 막상 구입하고나서 너무도 유용하게 사용하고 있습니다.  사양에 욕심을 내자니 가격이 너무 높고,  저렴한 중고를 사려해도  구형 허큘리스 모니터 같이 생긴 녀석에게 신뢰가 가질 않았습니다.  그래서 제가 선택한것이 USB형 오실로스코프입니다. 40MHz 급의 새제품을 20~40만원 선에 구할 수 있습니다.  참고하세요~   



끝으로
초보분들에겐 부족한 내용일듯합니다. 하지만 아이디어와 힌트를 드렸으니 조금만 자료조사하고 노력하시면 좋은 결과물을 얻으실 수 있을겁니다.  재밌는 로봇 많이 만드시고,,, 더불어 제게도 알려주시면 감사하겠습니다.


참고자료




내용추가
2011.July.26 
아래의 관련글 링크에 리모콘 신호 송수신 회로와  PC에서 키보드 입력으로 로봇을 제어하는 소스 예제를 포함한 글을 새로 등록하였습니다. 참고하세요


관련글 링크

 .IR무선 리모콘 송수신 회로로 로봇 제어하기

 .적외선 무선통신킷




저작자 표시 비영리 변경 금지
신고
Posted by 로보밥 로보밥

댓글을 달아 주세요

  1. MP3Player+Speaker 기기는 어디에서 구하셨는지요?
    링크 좀 알려 주십시오.

    2011.08.10 22:33 신고 [ ADDR : EDIT/ DEL : REPLY ]