리모컨의 프토토콜에 질문있습니다.

안녕하세요.
키보드 관련 질문이 아니라 좀 죄송합니다만
인터넷에서 검색하다 찾지 못해서 이곳이라면
하드웨어에 해박한 지식이 있는 분들이 많을 것 같아
질문합니다.

제가 일반 리모컨의 키값을 입력받아 간단한 제어를 하는
프로그램을 하려고 하는데 리모컨의 키가 눌렸을때 어떤 키가
눌렸는지 어떻게 알 수 있을까요?
적외선 센서를 AT89C52의 INT0에 연결해 놨는데 리모컨의 키가
눌렸을때 포트의 ON/OFF 횟수를 카운트해서는 정확히 알수 없을것 같은데요.
리모컨은 삼성 리모컨이고 리모컨의 프로토콜이 있을 것 같은데
관련 자료를 찾지 못하겠습니다.
알고 계신 분들께 부탁드립니다. 가르쳐주세요.
이전 댓글 6
마실 2006-04-24 21:19
안타깝네요!! 제가 전에 자료를 가지고 있었는데 지금은 소실 된 것 같습니다. 참으로 안타깝습니다. 저도 님처럼 일반적인 리모콘으로 8051등의 마이크로 프포세서를 이용하여 특정 장치들을 제어 할려고 했었습니다. 그래서 공부를 조금 했었죠. 일단 도움이 되실진 모르겠지만 제가 얻었던 지식을 잠시 풀어쓰겠습니다. 일단은 적외선에서 나오는 신호는 시작 신호, 데이터 신호, 종료신호(용어가 정확한지 모르겠습니다. 의미상으로 받아들이시기 바랍니다.)등으로 나누어 집니다. 시작 신호는 신호를 받기위해서 준비하라 라고 알려 주는 것이고 종료 신호는 신호가 종료되었으니 일을 처리하라 라고 알려주는 신호 입니다. 그리니 모든 버튼이 동일한 시작 신호와 종료 신호를 발생한다고 보시면 됩니다. 허니 중요한 것은 데이터 신호겠죠. 이 데이터 신호를 통해서 어떤 버튼이 눌러졌는지 알게 되는 것 입니다. 님도 제어를 하고자 하여 대충 자료를 조사 하신것 같은데요. 님의 의문을 가지시는 그 문제 카운트해서 어떻게 정확히 알아내느냐 인데요. 사실 카운트 해서 정확히 그것을 알아 냅니다. 이 과정이 매우 짧은 시간에 이루어 지므로 시간상 정밀하게 프로그램밍 하는 것이 중요 합니다. 먼저 정확하게 리모컨의 스팩을 찾으셔야 할 겁니다. 왠만한 스팩은 인터넷에 다 돌아 다니는 것으로 알고 있습니다. 그걸 참조 하시면 될듯 하구요.. 그리고 가장 중요한 작업은 타임을 프로그램밍 할때 리모콘트롤어 에서 발생하는 신호와 정확하게 주기를 같이 하여 카운트를 해야 한다는 것이 상다히 중요 합니다. (오실로스코프 같은 장비를 이용해 보시는것도 좋으리라 생각 됩니다. 아무래도 눈이 보는 것이 믿음이 가니 말입니다.) 저는 무식하게 어셈블리어로 짰었는데요. 어셈의 경우는 한 문구( ex: mov a,#255 의 경우는 얼마 정도 시간이 소요)를 처리하는데 그 시간을 알 수 있어 이를 편하게 사용 하였습니다. 그러니 일단 프로그램의 뻐대는 이렇게 되겠군요. 먼저 님이 인터럽트를 사용 하였으니 그 쪽으로 시작신호를 비교 하여 맞는 경우 데이터를 받아들여 저장합니다.(종료신호가 확인될때까지) 그리고 종료 신호가 확인되면 그 다음 부터는 데이터 신호를 비교하여 작업을 수행 하는 것이죠. 그 신호에 따라서 말입니다. 참 그리고 가장 중요한 양쪽의 신호르 동기화 하는 것은 마이크로 프로세서의 시리얼 포트 통신을 참조하여 하시면 될 듯 합니다. 어짜피 리모컨컨트롤러와 마이크로 프로세서의 데이터 통신이니 말입니다. 그러니 baud rate를 잘 참조하여 동기화 시켜 주어야 할 것입니다. baud rate는 이터넷을 참조 하시면 쉽게 그 설명을 얻으실수 있으리라 생각 됩니다. 대충 저의 짧은 지식으로 전체적인 소견만 말씀드렸습니다. 좋은 참조 되시길 바랍니다.
마실 2006-04-24 21:22
참 자료가 없다고 하셨죠. 정 자료를 구하시기 힘드시다면... 좀 무식하지만 오실로스코프를 이용하는 방법이 있습니다.
아이노드 2006-04-24 23:24
일반 PC에 연결하는 IRDA어댑터가 있습니다. 이를 이용하여, 원하는 시그널을 얻는게 가능하지만, PC용 어댑터의 경우 이상하게 신호가 잘 안잡힙니다. PDA에 있는 IRDA 모듈이 훌씬 좋은 성능을 냈던 걸로 기억합니다. 이를 위한 코드는 인터넷에서 구하셔도 되고, 직접 작성하시는 것도 크게 어렵지 않습니다. 윈도우를 기반으로 했을 경우 일반 파일 입출력 인터페이스를 사용하는 것과 소켓인터페이스 기반으로 프로그래밍 하는 것이 가능합니다. 리모콘 신호에 대해 한가지 더 말씀드리자면, 크게 삼성과 NEC(불확실합니다)방식의 두가지가 많이 쓰이는 걸로 알고 있으며, 스펙은 윗분이 적어주신대로 구하기 어렵지 않을 걸로 알고 있습니다. 제가 시그널을 얻을때는 PC용 어댑터를 수신부로 놓고, 거기에 오실로 스코프를 꽂아서(애플리케이션 상에서 얻는 신호가 아닙니다) 비교적 정확한 시그널을 얻었었습니다.
이상학 2006-04-25 10:33
마실님,아이노드님 답변 감사드립니다. 찾아보니 인터넷에 좋은 자료들이 많이 있었네요...야후보다는 구글에...^^ 그래서 어제 밤 해결했습니다. 외부인터럽트와 타이머 인터럽트를 써서 리모콘의 키값을 읽어서 시리얼로 PC로 전송하는 프로그램을 완성했죠. IR 모듈의 데이터시트에는 수신각이 120도정도였는데 실제로 해보니 어느 방향에서도 수신이 되었습니다. 이걸 활용할 곳이 많을것 같네요.
마실 2006-04-26 00:19
해결하셨다니 다행이네요 ^^ 님이 말씀 하신 것 처럼 다양하게 사용 하실수 있을 것입니다. ㅋㅋㅋ^^ 저도 조만간 하나 사서 뭔가 하나 만들어 봐야 겠네요 ㅋㅋㅋ^^
곤조 2006-04-26 21:57
우와~ 댓글이 이렇게 길게도 달아지는군요^^
← 질문답변 목록으로