HOW-TO: USB REMOTE control RECEIVER
now that we listen to MP3s, as well as view XVIDs or x264s, a computer is the enjoyment center in at least one space of many homes. Unless you have a special HTPC, though, you’re most likely stuck using the keyboard to pause, modification the volume, as well as fast-forward through bothersome Mythbusters recaps. PC remote control receivers variety from ancient serial port designs (who has one?) to USB devices not supported by prominent software. In this how-to we style a USB infrared receiver that imitates a typical protocol supported by software for Windows, Linux, as well as Mac. We’ve got a full guide to the protocol plus schematics as well as a parts list.
Design overview
Remote controls transmit data on an modulated infrared beam. An infrared receiver IC separates the modulated beam into a clean stream of 0s as well as 1s. The data stream is decoded by a microcontroller as well as sent to a computer over a USB connection. software processes the codes as well as triggers actions on the computer.
Pozadie
Computer infrared receivers
The oldest PC infrared receiver style uses a receiver IC to toggle a serial port pin, typically DCD. This style most likely originated on Usenet, as well as it’s still the most prominent on the web: Engadget, Instructables, etc. These aren’t true serial devices since they don’t send data to the PC. Instead, a computer program times pulses on the serial port as well as demodulates the signal. This is a very easy design, however it depends on direct interrupt gain access to as well as timing precision that’s no longer offered in Windows. Linux or Mac users can try this receiver, if you still have a serial port. We couldn’t get this type of receiver to work with the serial port on a contemporary Windows XP PC, as well as don’t expect the accurate timing to transfer through a USB->serial converter.
Some a lot more advanced infrared receivers are true serial port devices that determine or decoding infrared signals before sending data to the computer. The UIR/IRMan as well as UIR2 integrate a traditional picture 16F84, however don’t supply firmware and/or source code. These devices ought to work on a contemporary computer, through a USB->serial converter if necessary. The USBTINY as well as USBIRBOY are native USB devices, however lack broad support.
Receiver software
Regardless of receiver type, the computer needs a program to listen for incoming remote commands as well as convert them to actions on the computer. Linux as well as Mac users have LIRC, which supports a lot of different receiver types. Windows users are a bit less fortunate. WinLIRC is an abandoned Windows port of LIRC for easy interrupt-based serial port receivers; WinLIRC was last developed in 2003. Girder was originally a freeware PC automation utility, however has ended up being costly bloatware with a 30 day trial. Fortunately, the last freeware version of Girder (3.2.9b) is still offered for download.
Working with IR remote protocols
Decoding IR signals
Remote controls encode commands in the spacing or timing of a 38KHz provider pulse, [San Bergmans] has an explanation of the principals involved. An infrared receiver IC separates the data stream from the carrier. Our task is to decode the data stream with a microcontroller. There are dozens of remote control protocols, however Phillips’ RC5 is widespread as well as typically used by hobbyists.
RC5 is stream of 14 equal length bits of precisely 1.778ms per bit time. A pulse during the very first half of the bit time represents 0, a pulse in the second half represents 1. This plan is called Manchester coding.
We used a logic analyzer to take a look at the output of a Happauge WinTV remote control, a known RC5 remote. The diagram shows two presses of the 1 button, as well as two presses of the 2 button; note that the output is inversed as well as the Manchester coding is backwards from the above description.
The very first two bit times are start bits, followed by a toggle bit. The toggle bit inverses each time a button is pressed so the receiver can tell the difference between a hold as well as a repeated press. The next 5 bits are the address (0b11110=0x1E), followed by the command (0b000001=0x01, 0b000010=0x02). A backwards compatible extension to RC5 uses the second start bit as command bit 7.
Representing remote codes to the computer
Looking at previous designs, we saw three general methods of communicating remote commands to a computer:
Protocol particular receivers decode one protocol, as well as send actual decoded commands to the PC
A a lot more general type of receiver steps the timing as well as spacing of each pulse as well as sends the full waveform to the PC for analysis.
Some receivers produce a distinct hash for a signal, however don’t really include sufficient data to completely recreate the waveform.
While our preference is towards the general hash method, our only remote uses RC5 asAž to bolo oveľa viac fascinujúce vyvinúť konkrétny dekodér RC5. Vysvetlime úpravy pre oveľa viac všeobecnej verzie v sekcii firmvéru.
Protokol počítačového rozhrania
Nechceli sme písať náš vlastný prijímací softvér alebo vodič, takže sme hľadali existujúci, dobre uznávaný komunikačný protokol na napodobňovanie. Prijímač UIR / IRMAN / IRA / CTINFRA / HOLLYWOOD + je podporovaný nosníkom, ako aj LIRC, rovnako ako používa ľahký sériový protokol s handshake:
Gadget sa inicializuje DTS, ako aj DTR kolíkmi sériového portu. Nemáme tieto, ako aj jedno.
Počítač pošle “IR” s voliteľným oneskorením. Odpovede gadget “OK”. Budeme len poslať “ok” na každom “r”
Diaľkové ovládacie kódy sú odoslané ako odlišné šesť bajtov hash. Budeme dekódovať signál RC5, ako aj odošlite skutočné hodnoty, namiesto toho by sa mohol použiť generický hash.
Tento protokol je pre sériové prístavné zariadenie, avšak náš USB prijímač sa zobrazí ako virtuálny sériový port, ako aj program nerozumie rozdielu.
Hardvér
Kliknite sem pre schematické (PNG). Náš prijímač je založený na programe USB Povolený obrázok 18F2455 Microcontroller, menšia, menej nákladná verzia 18F2550. Domácnosť 18F je programovateľná s Hobbytikom preferovanými programátormi JDM štýlu, ak sa táto dióda používa na zníženie VPP na úroveň bez rizika. Obraz dostane jeden oddeľovací kondenzátor (C1), ako aj dióda (D1), ako aj odpor (R1) na programovacej hlavičke ICSP. Odhalili sme sériový port na hlavičke PIN na ladenie alebo zmiešanú verziu USB / sériového portu pomocou MAX RS232 Transceiver IC.
USB periférne zariadenie vyžaduje 20MHz mimo hodín (Q1, C5,6), ako aj .220uf kondenzátor. Kondenzátor sme falošili pomocou 2 x .1UF oddeľovacích kondenzátorov (C2,3). 3mm LED (LED1), ako aj 330OHM súčasný limitovací odpor (R2) zobraziť stav pripojenia USB.
Použili sme infračervený prijímač TSOP-1738 IC, ktorý si vyžaduje 47uf sektorový kondenzátor (C4). Ak nemôžete objaviť túto konkrétnu IC, akýkoľvek typ prijímača, ktorý si uvedomil práve tu, by mal pracovať. Výstup TSOP-1738 je inverzný z prijatého signálu, vytiahne sa na zem, keď sa deteguje pulz, takže pull-up rezistor (R3) drží pin vysoký, keď nie je prítomný žiadny signál. Skontrolujte, či použijete iný prijímač, môžete si vyžadovať, aby ste použili odvzdušňovací odpor, ako aj reverznú rutinu systému Manchester v firmvéri.
Okruh čerpá energiu z autobusu USB, takže nepotrebujeme dodatočné napájanie.
Zoznam položiek
Kliknite sem pre diagram umiestnenia plnej veľkosti (PNG). Štýl PCB je 100% priechodok, ako aj jednostranný. Schematické, rovnako ako PCB boli vyrobené s Eaglom CADSOFT, freeware verzie sú ponúkané pre mnohé platformy. Všetky súbory sú zahrnuté v archíve úloh (ZIP).
Časť
Popis
IC1
Pic 18F2455
–
28 PIN .300 Zásuvka
C1,2,3
0,1UF kondenzátor
C4
4.7UF kondenzátor
C5,6
27PF kondenzátor (15PF môže byť lepší)
D1
1N4181 dióda
Q1
20MHz Crystal
R1,3
10K OHM rezistor
R2
330 ohm rezistor
Tsopa
TSOP1738 (zastaraný, vyskúšajte TSOP1138)
Usb
USB ‘B’ zástrčka, žena
Servírovaný
.1 “hlavička pin
Icsp
.1 “hlavička pin
Firmvér
Firmvér je napísaný v C s použitím mikročipovej bezplatnej prezentácie C18 kompilátor. Firmware, ako aj zdroj sú zahrnuté v archíve práce (ZIP).
Použili sme verziu 2.3 mikročipu USB zásobníka na vytvorenie sériového portu USB pomocou predvolených Chauffeurs už ponúkaných na mnohých systémoch. USB zásobník má jednoduché funkcie na vymenovanie USB gadget, ako aj prenos údajov medzi gadgetom, ako aj hostiteľom. Trvalo len niekoľko zmien PIN, aby získal CDC prezentáciu pracujúcu na našom vlastnom hardvéri.
Naša implementácia UIR / IRMAN / IRA / CTINFRA / HOLLYWOOD + PROTOKOLY Jednoducho reaguje na písmeno “R ‘s’ OK ‘. To by malo spĺňať požiadavky na handshake akéhokoľvek typu vykonávania tohto protokolu.
Rozhodli sme sa konkrétne dekódovať RC5 (a RC5X), pretože je to široko používaný protokol, rovnako ako jediný typ diaľkového ovládania, s ktorým musíme pracovať. Mnohé z dekódovania sa vykonáva v ručníku prerušenia:
Veľmi prvá modifikácia signálu spúšťa prerušenie, ktoré začína 889US (jeden-pol bitový čas) časovač.
Na každom prerušení časovača sa odoberá jedna polovica kódovaného bodu manchestru.
Každé ďalšie prerušenie merania sa porovnávajú, ako aj bitová hodnota sa vypočíta na 0, 1 alebo chybu. Chyby Resetujte smerovanie dekódovania.
Na konci každého prenosu sa dekóduje adresa, ako aj príkazové bajty, ako aj odoslané do hostiteľa s 4 tlmivými bajtami (0). Zlikvidujeme prepínač, pretože by sa zmiadila počítačový softvér do premýšľania každého iného lisu bol odlišný kód. Pripojíme druhý štartový bit na príkazový bit pre dodržiavanie RC5X; To jednoducho pridáva 0x40 na diaľkové kódy non RC5X.
Veľa všeobecnejšej verzie je možné vykonať odstránením kroku kódovania Manchester (3), ako aj odoslanie 48 vzorových bitov (všetkých 6 bajtov) do počítača.
Inštalácia infračerveného prijímača USB
Väčšina operačných systémov už má Chauffeurs, ktorí podporujú aVirtuálny sériový prístav gadget ako prijímač. Windows XP má požadované ovládače, avšak potrebuje pomoc od údajov .inf, aby sa primerane spojili s naším zariadením.
Systém Windows zobrazí nový dialóg hardvéru, prvýkrát sa pripojíte prijímač. Vyberte, ak chcete použiť vlastný motorist, ako aj bod na .inf dáta zahrnuté v archíve úloh (ZIP). To odkazuje gadget na motorist, ktorý je už zahrnutý vo Windows, ako aj pridáva prijímač ako port COM. Číslo portu COM môžete skontrolovať na ovládacom paneli.
MAC, ako aj užívatelia Linuxu môžu používať prijímač s LIRC, avšak používatelia systému Windows budú čeliť možnosti starej, freeware GRIGHT alebo novej, 30-dňovej verzii Shareware Shareware. Použili sme freeware verziu nosníka, ale dúfam, že si muži môžu navrhnúť skvelý, open source alternate, ktorý sme prehliadli.
Bez ohľadu na počítačový riadiaci softvér, ktorý používate, nakonfigurujte ho pre prijímač UIR / IRAMMAN / IRA / CTINFRA / HOLLYWOOD + SYSTÉMUJÚCEHO SYSTÉMU, ako aj prejsť do portu COM alebo sériovej adresy. Náš prijímač je tiež kompatibilný s ľubovoľným typom možností protokolu, ako ‘RAST UIR INIT’, ako aj ‘Preskočiť uir init šek’, ktorý skráti alebo sa zbaví “IR” -> “OK” Handshake. Teraz otestujte prijímač, ako aj pridajte diaľkové ovládanie podľa dokumentácie pre váš softvér.
Ručné rozhranie terminálu, ako aj ladenie
Ak máte problém s prijímačom, alebo ste len zvedavý, skúste ho prepojiť zo sériového terminálu. Naozaj máme radi sériový terminál na Hercules. Nastavte správny COM port, avšak rýchlosť, rovnako ako konfiguračné nastavenia sú ignorované ovládačom USB sériového portu.
Financovanie “R ‘bude včas prijímač na odpoveď” OK “. RC5 kódy sa vracajú ako surové bajty, takže nastavíte svoj terminál, aby ste zobrazili HEX HODNOTY, AKO Preložiť ho ako text ASCII. Prvým Byte je RC5 Adresa Byte (0x1e), za ktorým nasleduje príkazový bajt (0x41), ako aj štyri pufer 0s na dodržiavanie protokolu UIR / IRMAN. Obrázok zobrazuje handshake, ako aj výstup krátkeho stlačenia na 1,2, ako aj 3 tlačidlá.
Bezplatný utility s názvom Porton zaznamenáva aktivitu COM PORT na preskúmanie. To je užitočné na špehovanie na existujúcich protokoloch prijímačov, ako aj ladenie interakcie nášho vlastného hardvéru, ako aj uzavretého / proprietárneho softvéru. Obrázok zobrazuje nosič odosielajúci inicializačný reťazec “IR” (0x49,0x52), ako aj odpoveď prijímača ‘OK’ (0x4F, 0x4B).
Brať ďalej
Náš prijímač kompatibilný s RC5X nasleduje široko používaný protokol rozhrania. Existuje tona možností extra funkcií v otvorenom zdroji infračerveného prijímača:
Podpora všetkých vzdialeností prostredníctvom generátora generátora hash, ako je pôvodný hardvér UIR / IRMAN.
Pridajte extra vzdialených dekodírov protokolu, ako RC6.
Podpora viacerých, konfigurovateľných protokolov rozhrania.
Implementovať sériový port I / O.
Možnosti konfigurácie ukladania v EEPROM, vrátane protokolu, režimu rozhrania, možností načasovania, sériového portu atď.