Cum: Receptor de control al telecomenzii USB

Acum că ascultăm MP3-uri, precum și View Xvids sau X264s, un computer este centrul de bucurie în cel puțin un spațiu al multor case. Cu excepția cazului în care aveți, totuși, un HTPC special, sunteți cel mai probabil blocat folosind tastatura pentru a întrerupe, modificarea volumului, precum și rapid înainte prin recapitularea mitbusters. Receptoare de la distanță de la distanță de la distanță de la modelele vechi de porturi seriale (care are unul?) La dispozitivele USB care nu sunt acceptate de software proeminent. În acest mod de a construi un receptor cu infraroșu USB care imită un protocol tipic susținut de software pentru Windows, Linux, precum și Mac. Avem un ghid complet pentru schemele protocol plus, precum și o listă de piese.

Proiectare Prezentare generală.

Telecomandă transmite date pe un fascicul infraroșu modulat. Un receptor infraroșu IC separă fasciculul modulat într-un curent curat de 0s, precum și 1s. Fluxul de date este decodificat de un microcontroler, precum și de un computer pe o conexiune USB. Software-ul procesează codurile, precum și acțiunile declanșează pe computer.

fundal

Receptoare cu infraroșu de calculator

Cel mai vechi stil de recepție cu infraroșu PC utilizează un receptor IC pentru a comuta un PIN de port serial, de obicei DCD. Acest stil a provenit cel mai probabil din Usenet, precum și este încă cel mai proeminent pe web: Engadget, Instrucții etc. Acestea nu sunt dispozitive seriale adevărate, deoarece nu trimit date pe PC. În schimb, un program de calculator este impuls pe portul serial, precum și demodulează semnalul. Acesta este un design foarte ușor, cu toate acestea depinde de întreruperea directă a vânzării de acces la, cât și de precizia de timp care nu mai este oferită în Windows. Utilizatorii Linux sau Mac pot încerca acest receptor, dacă aveți încă un port serial. Nu am putut obține acest tip de receptor să lucreze cu portul serial pe un PC contemporan Windows XP, precum și nu vă așteaptă ca momentul precis să se transfere printr-un convertor serial USB->.

Unele receptoare în infraroșu mai avansate sunt dispozitive de port serial care determină sau decodifică semnale infraroșu înainte de a trimite date către computer. Uir / Irrman, precum și Uir2 integrează o imagine tradițională 16F84, cu toate acestea nu furnizează coduri de firmware și / sau sursă. Aceste dispozitive ar trebui să funcționeze pe un computer contemporan, printr-un convertor serial USB->, dacă este necesar. Usbtiny, precum și USBIRBOY sunt dispozitive USB native, totuși dispun de un sprijin larg.

Software-ul de recepție

Indiferent de tipul de receptor, computerul are nevoie de un program pentru a asculta comenzi de la distanță, precum și pentru a le converti la acțiuni pe computer. Linux, precum și utilizatorii de Mac au LIRC, care suportă o mulțime de tipuri de receptor diferite. Utilizatorii Windows sunt un pic mai puțin norocos. Winlirc este un port de ferestre abandonat de LIRC pentru receptoare de port serial bazate pe întreruperi; Winlirc a fost dezvoltat ultima dată în 2003. Grinzi a fost inițial o utilitate gratuită de automatizare PC, totuși a ajuns să fie costisitoare Blinatware cu un proces de 30 de zile. Din fericire, ultima versiune freeware a Girder (3.2.9b) este încă oferită pentru descărcare.

Lucrul cu protocoale de la distanță IR

Decodarea semnalelor IR.

Telecomande codifică comenzile în spațierea sau calendarul unui impuls de furnizori de 38 kHz, [San Bergmans] are o explicație a directorilor implicați. Un receptor infraroșu IC separă fluxul de date de la transportator. Sarcina noastră este de a decoda fluxul de date cu un microcontroler. Există zeci de protocoale de control la distanță, totuși Phillips ‘RC5 este larg răspândit, precum și de obicei folosite de pasiști.

RC5 este flux de 14 biți de lungime egală cu precizie de 1,778 m-uri pe bit. Un impuls în prima jumătate a timpului de biți reprezintă 0, un impuls în a doua jumătate reprezintă 1. Acest plan se numește codificarea Manchester.

Am folosit un analizor logic pentru a arunca o privire la ieșirea unei telecomandă WinTV Happuuge, o telecomandă RC5 cunoscută. Diagrama prezintă două prese ale butonului 1, precum și două prese ale butonului 2; Rețineți că ieșirea este inversată, precum și codarea Manchester este înapoi din descrierea de mai sus.

Primele două momente de biți sunt biți de pornire, urmată de un bit de comutare. Bitul de comutare investește de fiecare dată când este apăsat un buton, astfel încât receptorul să poată spune diferența dintre o presă de așteptare, precum și o presă repetată. Următorii 5 biți sunt adresa (0B11110 = 0X1E), urmată de comandă (0B000001 = 0x01, 0B000010 = 0x02). O extensie compatibilă înapoi la RC5 utilizează al doilea bit de pornire ca și bitul de comandă 7.

Reprezentarea codurilor la distanță la computer

Privind la desenele anterioare, am văzut trei metode generale de comunicare a comenzilor la distanță la un computer:

Protocolul Receptoare particulare decodează un protocol, precum și trimiteți comenzi decodificate reale la PC

Un tip mult mai general de receptor etape de distribuție, precum și distanțarea fiecărui puls, precum și trimite forma de undă completă a PC-ului pentru analiză.

Some receivers produce a distinct hash for a signal, however don’t really include sufficient data to completely recreate the waveform.

În timp ce preferința noastră este spre metoda General Hash, singura noastră telecomandă utilizează RC5 cawell as it was a lot more fascinating to develop an RC5 particular decoder. We explain modifications for a a lot more general version in the firmware section.

Computer interface protocol

We didn’t want to write our own receiver software or driver, so we looked for an existing, well recognized communication protocol to imitate. 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:

The gadget is initialized by the DTS as well as DTR pins of the serial port. We don’t have these as well as don’t care.

The computer sends “IR”, with an optional delay. The gadget replies “OK”. We’ll just send “OK” on every “R”

Remote control codes are sent as a distinct six byte hash. We’ll decode an RC5 signal as well as send the actual values, however a generic hash might be used instead.

This protocol is for a serial port device, however our USB receiver will appear as a virtual serial port as well as the program won’t understand the difference.

Hardware

Click right here for a full size schematic (png). Our receiver is based on a USB enabled picture 18F2455 microcontroller, the smaller, less expensive version of the 18F2550. The 18F household is programmable with the hobbyist preferred JDM-style programmers if a diode is used to decrease VPP to a risk-free level. The picture gets one decoupling capacitor (C1), as well as a diode (D1) as well as resistor(R1) on the ICSP programming header. We exposed the serial port on a pin header for debugging or a mixed USB/serial port version using a MAX RS232 transceiver IC.

The USB peripheral requires a 20MHz outside clock (Q1, C5,6), as well as a .220uF capacitor. We faked the capacitor using 2 x .1uF decoupling capacitors (C2,3). A 3mm LED (LED1) as well as a 330ohm present limiting resistor (R2) show USB connection status.

We used a TSOP-1738 infrared receiver IC which calls for a 4.7uF decoupling capacitor (C4). If you can’t discover this specific IC, any type of receiver noted right here ought to work. 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. check if you use a different receiver, you may requirement to use a pull-down resistor as well as reverse the Manchester decoding routine in the firmware.

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

Lista de componente

Click right here for a full size placement diagram (png). The PCB style is 100% through-hole as well as single sided. The schematic as well as PCB were made with Cadsoft Eagle, freeware versions are offered for many platforms. All the files are included in the job archive (zip).

Parte

Descriere

IC1.

PIC 18F2455

28 pin .300 socket

C1,2,3

0.1uF capacitor

C4

4.7uF capacitor

C5,6

27pF capacitor (15pF may be better)

D1

1N4181 diode

Q1.

20MHz crystal

R1,3

10K ohm resistor

R2.

330 ohm resistor

TSOP

TSOP1738 (obsolete, try TSOP1138)

USB

USB ‘B’ plug, female

SER

.1″ pin header

ICSP.

.1″ pin header

Firmware

The firmware is written in C using Microchip’s complimentary presentation C18 compiler. Firmware as well as source are included in the 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. It only took a few pin changes to get the CDC presentation working on our custom-made hardware.

Our implementation of the UIR/IRMAN/IRA/CTInfra/Hollywood+ protocol simply responds to the letter ‘R’ with ‘OK’. This ought to satisfy the handshake requirements of any type of implementation of this protocol.

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 aGadget virtual de port serial ca receptorul. Windows XP are driverele necesare, cu toate acestea nevoile de asistență de la o fișă .inf pentru a le asocia în mod corespunzător cu dispozitivul nostru.

Windows va afișa noul dialog hardware chiar prima dată când conectați receptorul. Selectați pentru a utiliza un motorist personalizat, precum și indicați-l la datele .inf incluse în arhiva de locuri de muncă (ZIP). Acest lucru leagă gadgetul către un motorist deja inclus în Windows, precum și adaugă receptorul ca port COM. Puteți verifica numărul portului COM din panoul de control.

Mac, precum și utilizatorii Linux pot folosi receptorul cu LIRC, cu toate acestea utilizatorii Windows se vor confrunta cu opțiunea Vechiului, Freeware Girder sau noua versiune de shareware de 30 de zile. Am folosit versiunea freeware a grinzilor, cu toate acestea sper ca barbatii pot sugera o suprafata mare, open source pe care am trecut-o cu vederea.

Indiferent de software-ul de control al computerului pe care îl utilizați, îl configurați pentru un receptor de stil Uir / IRMAN / IRA / Ctinfra / Hollywood +, precum și pentru a intra în portul COM sau adresa serială atribuită acestuia. Receptorul nostru este, de asemenea, compatibil cu orice tip de opțiuni de protocol, cum ar fi “Fast Uir Init”, precum și “Skip Uir Init Verificare”, care scurtează sau scapă de strângerea de mână “IR” -> “OK”. Acum, testați receptorul, precum și adăugați o telecomandă în funcție de documentația pentru software-ul dvs.

Interfața terminală manuală, precum și depanarea

Dacă aveți o problemă cu receptorul sau sunteți doar curioși, încercați să o interfați de la un terminal serial. Ne place cu adevărat terminalul serial pe Hercule. Setați portul COM drept, cu toate acestea, viteza și setările de configurare sunt ignorate de driverul port serial USB.

O finanțare “R” va primi în timp util receptorul să răspundă “OK”. Codurile RC5 sunt returnate ca octeți brute, deci asigurați-vă că ați setat terminalul pentru a afișa valorile Hex, mai degrabă decât să o traducă ca text ASCII. Primul octet este octetul adresei RC5 (0x1e), urmat de byte de comandă (0x41), precum și apoi patru tampon 0s pentru a adera la protocolul Uir / Irman. Imaginea arată strângerea de mână, precum și ieșirea unei prese scurte pe butoanele 1,2, precum și cele 3.

O utilitate gratuită numită PORMON LOGS COM Port Activitate pentru revizuire. Acest lucru este util pentru spionarea protocoalelor de receptor existente, precum și depanarea interacțiunii hardware-ului nostru personalizat, precum și software-ul închis / proprietar. Imaginea prezintă grinzile care trimit șirul de inițializare “IR” (0x49,0x52), precum și răspunsul receptorului “OK” (0x4f, 0x4b).

Luând-o mai departe

Receptorul compatibil RC5X urmează un protocol de interfață utilizat pe scară largă. Există o mulțime de posibilități pentru caracteristici suplimentare într-un receptor cu infraroșu cu sursă deschisă:

Sprijiniți toate telecomenzile printr-un generator generic Hash, cum ar fi Hardware-ul original de Uir / Irman.

Adăugați decodoare de protocol extra la distanță, cum ar fi RC6.

Suport mai multe protocoale de interfață configurabile.

Implementați portul serial I / O.

Stocați opțiunile de configurare în EEPROM, inclusiv protocolul, modul de interfață, opțiunile de sincronizare, portul serial etc.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post