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.

Háttér

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 aswell as it was a lot more fascinating to develop an RC5 particular decoder. A firmware részben sokkal nagyobb általános verziót módosítunk.

Számítógépes interfész protokoll

Nem akartuk írni saját vevőszoftverünket vagy illesztőprogramot, ezért kerestünk egy meglévő, jól ismert kommunikációs protokollt az utánzáshoz. The UIR/IRMAN/IRA/CTInfra/Hollywood+ type receiver is supported by Girder as well as LIRC, as well as uses a easy serial protocol with handshake:

A modulot a DTS, valamint a soros port DTR csapjait inicializálja. Nincsenek ezek, és nem érdekelnek.

A számítógép “IR” -t küld, opcionális késleltetéssel. Az “OK” gadget válaszol. Minden “R” -nek küldünk “OK” -et

A távvezérlő kódok elkülönülnek, mint egy különálló hat byte hash. Meg kell dekódolni egy RC5 jelet, valamint elküldjük a tényleges értékeket, de helyett egy általános hash használható.

Ez a protokoll soros porteszközre vonatkozik, de USB-vevőnk virtuális soros portként jelenik meg, és a program nem fogja megérteni a különbséget.

Hardver

Kattintson ide a teljes méretű vázlatra (PNG). Our receiver is based on a USB enabled picture 18F2455 microcontroller, the smaller, less expensive version of the 18F2550. Az 18F háztartás programozható a Hobbyist előnyben részesített JDM-stílusú programozókkal, ha egy diódát a VPP kockázatmentes szintre csökkentésére használják. The picture gets one decoupling capacitor (C1), as well as a diode (D1) as well as resistor(R1) on the ICSP programming header. A seriális portot egy PIN-hez a hibakereséshez vagy egy kevert USB / soros port-verzióhoz tette ki a MAX RS232 adó-vevő IC használatával.

Az USB periféria 20MHz-t igényel (Q1, C5,6), valamint a .220uf kondenzátor. A kondenzátort 2 x .1UF szétválasztó kondenzátorral (C2,3) használjuk. A 3 mm-es LED (LED1), valamint a 330OHM jelenlegi korlátozó ellenállás (R2) az USB csatlakozási állapot megjelenítése.

We used a TSOP-1738 infrared receiver IC which calls for a 4.7uF decoupling capacitor (C4). Ha nem tudja felfedezni ezt a konkrét IC-t, akkor bármilyen típusú vevőnek itt kellett dolgozni. The TSOP-1738 output is the inverse of the received signal, it pulls to ground when a pulse is detected, so a pull-up resistor (R3) holds the pin high when no signal is present. Ellenőrizze, hogy egy másik vevőt használ, kérheti, hogy a firmware-ben rögzítse a kihúzható ellenállást, és fordítsa meg a manchester dekódolási rutint a firmware-ben.

The circuit draws power from the USB bus, so we don’t requirement an extra power supply.

Alkatrész lista

Kattintson ide a teljes méretű elhelyezési diagram (PNG) gombra. A PCB stílus 100% -os, valamint egyoldalú. The schematic as well as PCB were made with Cadsoft Eagle, freeware versions are offered for many platforms. Az összes fájl szerepel a Job Archive (ZIP).

Rész

Leírás

IC1

18f2455

28 tű .300 aljzat

C1,2,3

0.1UF kondenzátor

C4

4.7UF kondenzátor

C5,6

27PF kondenzátor (15pf jobb lehet)

D1

1n4181 dióda

Q1

20MHz kristály

R1,3

10k ohm ellenállás

R2

330 ohm ellenállás

Tsop

TSOP1738 (elavult, próbálja meg a tsop1138-at)

Usb

USB ‘B’ dugó, nő

Ser

.1 “PIN fejléc

Icsp

.1 “PIN fejléc

Firmware

A firmware a C18 fordító C18 fordítójával C használatával C A firmware, valamint a forrás szerepel a Job Archive (ZIP).

We used version 2.3 of Microchip’s USB stack to produce a USB serial port using the default chauffeurs already offered on many systems. The USB stack has easy functions to enumerate the USB gadget as well as transfer data between gadget as well as host. Csak néhány PIN-kódot vett igénybe, hogy megkapja a CDC prezentációt, amely a szokásos hardverünkön dolgozik.

Az UIR / IRMAN / IRA / CTINFRA / Hollywood + protokoll végrehajtása egyszerűen válaszol az “R” betűre az “OK” -vel. Ez meg kell felelnie a jelen Jegyzőkönyv bármely típusának kézbesítési követelményeinek.

We chose to specifically decode RC5 (and RC5x) since it’s a widely used protocol, as well as the only type of remote we have to work with. many of the decoding is done in the interrupt handler:

The very first signal modification triggers an interrupt that starts a 889us (one-half bit period) timer.

On each timer interrupt, one-half of a Manchester coded bit is sampled.

Every other interrupt the measurements are compared, as well as the bit value is calculated to be 0, 1, or an error. Errors reset the decoding routing.

At the end of each transmission the address as well as command bytes are decoded, as well as sent to the host with 4 buffer bytes(0). We discard the toggle bit since it would confuse the PC software into thinking every other press was a distinct code. We append the second start bit to the command bit for RC5x compliance; this just adds 0x40 to non RC5x remote codes.

A a lot more general version can be made by removing the Manchester coding step (3), as well as sending 48 sample bits (all 6 bytes) to the computer.

Installing the USB infrared receiver

Most operating systems already have chauffeurs that support aVirtuális soros port gadget, mint a vevő. A Windows XP rendelkezik a szükséges illesztőprogramokkal, de szükség van egy .inf adatokról, hogy megfelelően társítsa őket a készülékünkkel.

A Windows megmutatja az új hardver párbeszédablakot, amikor először csatlakozik a vevőkészülékhez. Válassza ki az egyedi gyártású autós használatához, és pontosan a Munkarchive (ZIP) tartalmazza. This links the gadget to a motorist already included in Windows, as well as adds the receiver as a COM port. Ellenőrizheti a COM port számát a kezelőpanelen.

A Mac, valamint a Linux felhasználók használhatják a vevőt LIRC-vel, azonban a Windows-felhasználók szembesülnek a régi, freeware gerenda, vagy az új, 30 napos próbaverzió-shareware verzió lehetőségével. A GIRDER Freeware verzióját használtuk, bár remélem, hogy az emberek nagyszerű, nyílt forráskódú alternatívát javasolhatunk, amelyet figyelmen kívül hagyunk.

Regardless of the computer-side control software you use, configure it for a UIR/IRMAN/IRA/CTInfra/Hollywood+ style receiver, as well as go into the COM port or serial address assigned to it. A vevőegységünk ugyancsak kompatibilis bármilyen olyan protokoll opcióval, mint a “Gyors Uir init”, valamint a “UNIR UIR init Check”, amely lerövidíti vagy megszabadul az “IR” -> OK “kézfogás. Most tesztelje a vevőt, és adjon hozzá egy távoli megjelenítést a szoftver dokumentációja szerint.

Kézi terminál interfész, valamint hibakeresés

Ha van egy probléma a vevőkészülékkel, vagy csak kíváncsi, próbálja meg illeszteni egy soros terminálból. Igazán szeretjük a hercules soros terminált. set the right COM port, however the speed as well as configuration settings are ignored by the USB serial port driver.

Az “R” finanszírozás időszerű a vevőnek, hogy válaszoljon az “OK” -ra. Az RC5 kódokat nyersbájtként adják vissza, ezért állítsa be a terminált, hogy megmutassa a hex értékeket, nem pedig az ASCII szövegként. The very first byte is the RC5 address byte (0x1E), followed by the command byte (0x41), as well as then four buffer 0s to adhere to the UIR/IRman protocol. A kép mutatja a kézfogást, valamint egy rövid sajtó kimenetét az 1,2, valamint a 3 gombon.

A Portmon Naplók COM PORT TEVÉKENYSÉGE VIZSGÁLATRA. Ez hasznos a meglévő vevő protokollok kémkedésére, valamint hibakeresés a szokásos hardvert, valamint a zárt / szabadalmaztatott szoftverek kölcsönhatását. The picture shows Girder sending the initialization string ‘IR’ (0x49,0x52), as well as the receiver reply ‘OK’ (0x4F,0x4B).

Tovább

Az RC5X kompatibilis vevőegységünk egy széles körben használt interfész protokollt követi. Van egy csomó lehetőség extra funkciók egy nyílt forráskódú infravörös vevő:

Támogatja az összes távirányítót egy általános hash generátoron keresztül, mint az eredeti UIR / irman hardver.

Adjon hozzá extra távoli protokoll dekódolókat, mint az RC6.

Támogatja a többszörös, konfigurálható interfész protokollokat.

I / O soros port végrehajtása.

Tárolja az EEPROM konfigurációs beállításait, beleértve a protokollt, az interfész módot, az időzítési lehetőségeket, a soros portot stb.