이제는 XVIDS 또는 x264를 볼뿐만 아니라 MP3를 듣고 컴퓨터가 많은 주택의 적어도 하나의 공간의 즐거움 센터입니다. 특별 HTPC가없는 한, 키보드를 사용하여 볼륨을 일시 중지하고 수정하고, Brotersome Mythbusters Recons를 통해 빨리 앞으로 나아갈 가능성이 큽니다. PC 원격 제어 수신기는 고대 직렬 포트 디자인 (누가 하나가 있는가?)으로 인해 유명한 소프트웨어가 지원하지 않는 USB 장치로 다양합니다. 이 방법은 Windows, Linux, Mac 용 소프트웨어가 지원하는 일반적인 프로토콜을 모방하는 USB 적외선 수신기를 스타일링합니다. 우리는 프로토콜 플러스 회로도와 부품 목록에 대한 전체 가이드가 있습니다.
디자인 개요
원격 제어는 변조 된 적외선 빔에서 데이터를 전송합니다. 적외선 수신기 IC는 변조 된 빔을 1S뿐만 아니라 0의 깨끗한 스트림으로 분리합니다. 데이터 스트림은 마이크로 컨트롤러에 의해 디코딩되고 USB 연결을 통해 컴퓨터로 전송됩니다. 소프트웨어는 컴퓨터의 동작을 트리거뿐만 아니라 코드를 처리합니다.
배경
컴퓨터 적외선 수신기
가장 오래된 PC 적외선 수신기 스타일은 수신기 IC를 사용하여 직렬 포트 핀, 일반적으로 DCD를 전환합니다. 이 스타일은 UseNet에서 유창 할 가능성이 큽니다뿐만 아니라 웹에서 가장 눈에 띄는 것입니다 : Engadget, Serstinsables 등. 이는 PC에 데이터를 보내지 않기 때문에 진정한 직렬 장치가 아닙니다. 대신 컴퓨터 프로그램 시간이 직렬 포트에 펄스뿐만 아니라 신호를 복조합니다. 이것은 매우 쉬운 디자인이지만 더 이상 Windows에서 제공되지 않는 타이밍 정밀도뿐만 아니라 직접적인 인터럽트 이득 액세스에 따라 다릅니다. Linux 또는 Mac 사용자는 직렬 포트가있는 경우이 수신기를 시도 할 수 있습니다. 우리는이 유형의 수신자가 현대적인 Windows XP PC에서 직렬 포트와 함께 작동 할 수는 없으며 USB-> 직렬 변환기를 통해 정확한 타이밍을 전송할 것으로 예상하지 않습니다.
일부 훨씬 더 많은 고급 적외선 수신기는 데이터를 컴퓨터로 보내기 전에 적외선 신호를 결정하거나 디코딩하는 실제 직렬 포트 장치입니다. UIR / IRMAN뿐만 아니라 UIR2는 전통적인 그림 16F84를 통합하지만 펌웨어 및 / 또는 소스 코드를 제공하지 않습니다. 이러한 장치는 필요한 경우 USB-> 직렬 변환기를 통해 현대적인 컴퓨터에서 작업해야합니다. Usbirboy뿐만 아니라 Usbirboy는 기본 지원이 없지만 넓은 지원이 부족합니다.
수신기 소프트웨어
수신기 유형에 관계없이 컴퓨터에는 들어오는 원격 명령을 수신 대기 할 수있을뿐만 아니라 컴퓨터의 작업으로 변환 할 프로그램이 필요합니다. Linux뿐만 아니라 Mac 사용자는 많은 다른 수신기 유형을 지원하는 LIRC가 있습니다. Windows 사용자는 약간의 운이 좋습니다. WinLirc는 쉬운 인터럽트 기반 직렬 포트 수신기를 위해 버려진 Windows 포트입니다. Winlirc은 2003 년에 마지막으로 개발되었습니다. 대들보는 원래 프리웨어 PC 자동화 유틸리티 였지만 30 일 재판을 통해 비용이 많이 드는 Bloatware가 끝났습니다. 다행히도, 거더의 마지막 프리웨어 버전 (3.2.9b)은 여전히 다운로드를 위해 제공됩니다.
IR 원격 프로토콜로 작업합니다
디코딩 IR 신호
원격 제어는 38KHz 제공자 펄스의 간격 또는 타이밍에서 명령을 encode, [San Bergmans]는 관련된 주체에 대한 설명을 가지고 있습니다. 적외선 수신기 IC는 데이터 스트림을 캐리어로부터 분리합니다. 우리의 작업은 마이크로 컨트롤러로 데이터 스트림을 디코딩하는 것입니다. 수십 개의 원격 제어 프로토콜이 있지만 Phillips의 RC5는 호프리스트에서 일반적으로 사용되는 널리 사용됩니다.
RC5는 비트 시간당 1.778ms의 14 개의 동일한 길이 비트의 스트림입니다. 비트 시간의 첫 번째 절반 동안 펄스는 0을 나타내고, 후반의 펄스는 1을 나타냅니다.이 계획을 맨체스터 코딩이라고합니다.
우리는 논리 분석기를 사용하여 알려진 RC5 원격 인 Happauge Wintv Remote Control의 출력을 살펴 봅니다. 다이어그램은 2 버튼의 두 개의 프레스뿐만 아니라 2 개의 프레스 두 개의 프레스를 보여줍니다. 출력은 맨체스터 코딩뿐만 아니라 위의 설명에서 거꾸로됩니다.
처음 두 번 비트 시간은 시작 비트가 뒤 따른 다음 토글 비트입니다. 수신기가 홀드뿐만 아니라 반복 프레스의 차이를 알려주도록 버튼을 누르면 토글 비트 인버스가 반복됩니다. 다음 5 비트는 어드레스 (0b11110 = 0x1e)이고, 명령 (0b000001 = 0x01, 0b000010 = 0x02) 이옵니다. RC5에 대한 역호 호환 확장은 제 2 시작 비트를 명령 비트 (7)로 사용한다.
컴퓨터에 원격 코드를 나타냅니다
이전 디자인을 보면서 원격 명령을 컴퓨터에 전달하는 세 가지 일반적인 방법을 보았습니다.
프로토콜 특정 수신기는 하나의 프로토콜을 디코딩하고 실제 디코딩 된 명령을 PC에 보내기
훨씬 더 많은 일반적인 유형의 수신기가 각 펄스의 간격뿐만 아니라 분석을 위해 PC 로의 전체 파형을 전송합니다.
일부 수신기는 신호에 대해 별개의 해시를 생성하지만, 충분한 데이터가 포함되어 있지만 파형을 완전히 다시 만드는 데 충분한 데이터가 포함되어 있지 않습니다.
우리의 선호도가 일반적인 해시 방법을 향한 것이지만, 우리의 유일한 원격은 RC5를RC5 특정 디코더를 개발하기 위해 훨씬 더 매력적이었습니다. 우리는 펌웨어 섹션에서 훨씬 더 많은 일반적인 버전을위한 수정 사항을 설명합니다.
컴퓨터 인터페이스 프로토콜
우리는 자체 수신자 소프트웨어 또는 드라이버를 쓰고 싶지 않았으므로 우리는 기존의 잘 알려진 통신 프로토콜을 찾아 냈습니다. UIR / iRMAN / IRA / CTINFRA / 할리우드 + 타입 수신기는 거더뿐만 아니라 LIRC뿐만 아니라 핸드 셰이크가있는 쉬운 직렬 프로토콜을 사용합니다.
가젯은 직렬 포트의 DTR 핀뿐만 아니라 DTR에 의해 초기화됩니다. 우리는 이들을 가지고 있지 않고 상관하지 않습니다.
컴퓨터는 선택적 지연으로 “IR”을 보냅니다. 가젯은 “OK”를 답합니다. 우리는 모든 “r”에서 “확인”을 보내 드리겠습니다.
원격 제어 코드는 별개의 6 바이트 해시로 전송됩니다. 실제 값을 보낼뿐만 아니라 RC5 신호를 디코딩 할 것입니다. 그러나 일반 해시가 대신 사용할 수 있습니다.
이 프로토콜은 직렬 포트 장치 용이지만 USB 수신기는 가상 직렬 포트로 나타날뿐만 아니라 프로그램이 차이를 이해하지 못할 것입니다.
하드웨어
전체 크기의 회로도 (PNG)를 보려면 여기를 클릭하십시오. 당사의 수신기는 USB 가능 사진 18F2455 마이크로 컨트롤러 인 18F2550의 작고 저렴한 버전을 기반으로합니다. 18F 가정은 다이오드가 VPP를 위험없는 수준으로 감소시키는 데 사용되는 경우 애호가 선호하는 JDM 스타일 프로그래머와 함께 프로그래밍 할 수 있습니다. 그림은 ICSP 프로그래밍 헤더의 저항기 (R1)뿐만 아니라 다이오드 (D1)뿐만 아니라 다이오드 (D1) 하나의 디커플링 커패시터 (C1)를 가져옵니다. 우리는 Max RS232 트랜시버 IC를 사용하여 디버깅 또는 혼합 USB / 직렬 포트 버전을 위해 핀 헤더에 직렬 포트를 노출했습니다.
USB 주변 장치는 20MHz 외부 클럭 (Q1, C5,6)뿐만 아니라 .220UF 커패시터가 필요합니다. 우리는 2 x .1uf 디커플링 커패시터 (C2, 3)를 사용하여 커패시터를 위조했습니다. 300mm LED (LED1)뿐만 아니라 3300HM 현재 제한 저항 (R2)은 USB 연결 상태를 보여줍니다.
우리는 4.7UF 디커플링 커패시터 (C4)를 요구하는 TSOP-1738 적외선 수신기 IC를 사용했습니다. 이 특정 IC를 발견 할 수없는 경우 여기에 언급 된 모든 수신자가 여기서 일해야합니다. TSOP-1738 출력은 수신 된 신호의 역으로, 펄스가 검출되면 펄스가 검출되면 접지로 인출되므로 풀업 저항 (R3)은 신호가 없을 때 핀을 높게 유지할 수 있습니다. 다른 수신자를 사용하는지 확인하십시오. 풀다운 저항을 사용하고 맨체스터 디코딩 루틴을 펌웨어의 맨체스터 디코딩 루틴을 역전시킬 필요가있을 수 있습니다.
회로는 USB 버스에서 전원을 끌어 올리므로 추가 전원 공급 장치를 요구하지 않습니다.
부품 목록
전체 크기 배치 다이어그램 (PNG)을 보려면 여기를 클릭하십시오. PCB 스타일은 단면뿐만 아니라 100 % 관통 구멍입니다. 도식뿐만 아니라 PCB는 CADSoft 독수리로 만들어졌으며 프리웨어 버전이 많은 플랫폼을 위해 제공됩니다. 모든 파일은 Job Archive (Zip)에 포함되어 있습니다.
부분
설명
IC1.
그림 18F2455.
–
28 핀 .300 소켓
C1,2,3.
0.1UF 커패시터
C4.
4.7UF 커패시터
C5,6.
27PF 커패시터 (15pf는 더 좋을 수 있음)
D1.
1N4181 다이오드
Q1.
20MHz 크리스탈
R1,3.
10k 옴 저항
r2.
330 옴 저항
졸업하다
TSOP1738 (폐기물, TSOP1138 시도)
USB
USB ‘B’플러그, 여성
사무소
.1 “PIN 헤더
icsp.
.1 “PIN 헤더
펌웨어
펌웨어는 Microchip의 무료 프리젠 테이션 C18 컴파일러를 사용하여 C로 작성되었습니다. 펌웨어뿐만 아니라 소스가 작업 아카이브 (ZIP)에 포함되어 있습니다.
우리는 Microchip의 USB 스택 버전 2.3을 사용하여 이미 많은 시스템에서 제공되는 기본 차우 사파를 사용하여 USB 직렬 포트를 생성했습니다. USB 스택은 USB 가젯을 열거 할뿐만 아니라 가젯 간 데이터를 전송할 수있는 기능을 갖추고 있습니다. CDC 프리젠 테이션을 사용자 정의 하드웨어에서 작동시키기 위해 몇 가지 핀 변경 사항이있었습니다.
Uir / Irman / IRA / CTINFRA / Hollywood + Protocol의 우리의 구현은 ‘r’이라는 편지의 ‘r’에 반응합니다. 이것은이 프로토콜의 모든 유형의 구현의 핸드 셰이크 요구 사항을 충족해야합니다.
우리는 널리 사용되는 프로토콜뿐만 아니라 우리가 일해야만하는 유일한 원격 유형뿐만 아니라 널리 사용되는 프로토콜이기 때문에 RC5 (및 RC5X)를 특별히 디코딩하기로 선택했습니다. 중대한 디코딩은 인터럽트 핸들러에서 수행됩니다.
첫 번째 신호 수정은 889U (1/2 비트 기간) 타이머를 시작하는 인터럽트를 트리거합니다.
각 타이머 인터럽트에서 맨체스터 코딩 된 비트의 절반이 샘플링됩니다.
다른 모든 인터럽트 측정 값은 물론 비트 값이 0, 1 또는 오류로 계산됩니다. 오류는 디코딩 라우팅을 재설정합니다.
각 전송의 끝에있는 명령 바이트뿐만 아니라 명령 바이트가 디코딩되고 4 개의 버퍼 바이트 (0)가있는 호스트로 전송됩니다. PC 소프트웨어를 혼란스럽게하는 이래로 Toggle 비트를 버립니다. 다른 모든 언론은 별개의 코드였습니다. RC5X 컴플라이언스를위한 명령 비트에 두 번째 시작 비트를 추가합니다. 이로 인해 0x40이 아닌 RC5X 원격 코드에 추가됩니다.
맨체스터 코딩 단계 (3)를 제거하고 컴퓨터에 48 개의 샘플 비트 (모두 6 바이트)를 전송하여 훨씬 더 일반적인 버전을 만들 수 있습니다.
USB 적외선 수신기 설치
대부분의 운영 체제는 이미 A를 지원하는 차우 추수가 있습니다수신기와 같은 가상 직렬 포트 가젯. Windows XP에는 필수 드라이버가 있지만 .inf 데이터에서 우리 장치와 적절하게 연결할 수 있습니다.
Windows에서는 새로운 하드웨어 대화 상자가 처음 수신기를 연결하는 데 처음으로 표시됩니다. 작업 아카이브 (ZIP)에 포함 된 .inf 데이터에 포함 된 .inf 데이터로 가리킬뿐만 아니라 사용자 정의 된 자동차 운전자를 사용하도록 선택하십시오. 이렇게하면 가젯이 이미 Windows에 포함 된 운전자에게 링크뿐만 아니라 COM 포트로 수신자를 추가합니다. 제어판에서 COM 포트 번호를 확인할 수 있습니다.
Mac 및 Linux 사용자는 수신기를 LIRC로 사용할 수 있지만 Windows 사용자는 이전, 프리웨어 거더 또는 새로운 30 일 평가판 셰어웨어 버전의 옵션에 직면하게됩니다. 우리는 프리웨어 버전의 대들보 버전을 사용했지만, 당신이 남자들이 우리가 간과하는 훌륭한 오픈 소스를 대체 할 수 있기를 바랍니다.
사용하는 컴퓨터 측 제어 소프트웨어에 관계없이 UIR / IRMAN / IRA / CTINFRA / 할리우드 + 스타일 수신기를 위해 구성하고 COM 포트 또는 직렬 주소가 지정된 COM 포트로 구성됩니다. 당사의 수신기는 ‘빠른 UIR init’과 같은 모든 유형의 프로토콜 옵션과 호환되며 “IR”-> “OK”핸드 셰이크를 단축하거나 제거하는 ‘UIR init 확인’을 없애는 것과 같은 프로토콜 옵션과 호환됩니다. 이제 수신기를 테스트하고 소프트웨어 설명서에 따라 원격을 추가하십시오.
수동 터미널 인터페이스 및 디버깅
수신자에게 문제가 있거나 궁금 해드리면 직렬 터미널에서 인터페이스하십시오. 우리는 진정으로 직렬 터미널을 좋아합니다. 오른쪽 COM 포트를 설정했지만 구성 설정은 usb 직렬 포트 드라이버에서 구성 설정을 무시합니다.
자금 조달 ‘r’은 적시에 수신자가 ‘OK’를 회신 할 수 있습니다. RC5 코드는 원시 바이트로 반환되므로 터미널을 ASCII 텍스트로 변환하는 대신 HEX 값을 표시하도록 설정하십시오. 매우 첫 번째 바이트는 RC5 주소 바이트 (0x1e)이고 명령 바이트 (0x41)와 UIR / Irman 프로토콜을 준수하는 4 개의 버퍼 0이옵니다. 그림은 핸드 셰이크뿐만 아니라 1,2의 짧은 언론의 출력과 3 개의 버튼을 보여줍니다.
검토를 위해 Portmon Logs COM 포트 활동이라는 무료 유틸리티. 이는 기존 수신자 프로토콜을 밝히는 데 유용 할뿐만 아니라 사용자 정의 하드웨어의 상호 작용 및 폐쇄 / 독점 소프트웨어의 상호 작용을 디버깅하는 데 유용합니다. 그림은 초기화 문자열 ‘IR'(0x49,0x52)뿐만 아니라 수신자 응답 ‘OK'(0x4F, 0x4B)을 보냅니다.
그것을 더 많이 가져 가라
우리의 RC5X 준수 수신기는 널리 사용되는 인터페이스 프로토콜을 따릅니다. 오픈 소스 적외선 수신기의 추가 기능을위한 톤의 가능성이 있습니다.
원래 UIR / Irman 하드웨어와 같은 일반 해시 생성기를 통해 모든 원격을 지원합니다.
RC6과 같은 추가 원격 프로토콜 디코더를 추가하십시오.
다중 구성된 인터페이스 프로토콜을 지원합니다.
직렬 포트 I / O를 구현하십시오.
프로토콜, 인터페이스 모드, 타이밍 옵션, 직렬 포트 등 EEPROM의 구성 옵션을 저장하십시오.