Nasıl yapılır: USB Uzaktan Kumanda Alıcısı

Şimdi MP3’leri dinlerken, XVID’leri veya X264’lerin yanı sıra bir bilgisayar, birçok evin en az bir alanındaki keyfi merkezidir. Özel bir HTPC’iniz olmadıkça, olsa da, büyük olasılıkla klavyeyi kullanarak sıkışmışsınız, hacmi değiştirmek, hacmini değiştirmek, hem othersome efsanelerden de hızlı ileri. PC uzaktan kumanda alıcıları, önde gelen yazılım tarafından desteklenmeyen eski seri port tasarımlarından (kim var?). Bu şekilde, Windows, Linux, ayrıca MAC için yazılım tarafından desteklenen tipik bir protokolü taklit eden bir USB kızılötesi alıcısı tarz. Protokol Plus Schematics’in yanı sıra bir parça listesine de tam bir rehberimiz var.

Tasarım Genel Bakış

Uzaktan kumandalar, modüle edilmiş bir kızılötesi kirişe veri iletir. Bir kızılötesi alıcı IC, modüle edilmiş ışını, 1’lerin yanı sıra temiz bir akışa ayırır. Veri akımı bir mikrodenetleyici tarafından çözülür ve bir bilgisayara bir USB bağlantısı üzerinden gönderilir. Yazılım, kodları ve bilgisayardaki eylemleri tetikleyerek işler.

Arka fon

Bilgisayar Kızılötesi Alıcıları

En eski PC kızılötesi alıcı stili, tipik olarak DCD bir seri port pinini değiştirmek için bir alıcı IC kullanır. Bu stil büyük olasılıkla Usenet’ten kaynaklanan yanı sıra, yine de web’de en belirgin olanıdır: Engadget, öğretmenlik, vb. Bunlar, PC’ye veri göndermemeleri için gerçek seri cihazlar değildir. Bunun yerine, bir bilgisayar programı zamanları seri bağlantı noktasına darbeler ve sinyali demodüle eder. Bu çok kolay bir tasarımdır, ancak artık Windows’ta sunulan zamanlama hassasiyetine doğrudan kesintiye bağlıdır. Linux veya Mac kullanıcıları, hala bir seri bağlantı noktasınız varsa, bu alıcıyı deneyebilir. Bu tür bir alıcıyı, çağdaş bir Windows XP PC’de seri portla birlikte çalışmasını sağlayamadık ve ayrıca doğru zamanlamanın bir USB-> Seri Dönüştürücü üzerinden aktarılmasını beklemeyin.

Bazı çok daha gelişmiş kızılötesi alıcılar, bilgisayara veri göndermeden önce kızılötesi sinyalleri belirleyen veya kod çözen gerçek seri port cihazlarıdır. UIR / IRMAN yanı sıra UIR2, geleneksel bir resmi 16F84’ü entegre eder, ancak ürün yazılımı ve / veya kaynak kodu sağlamayın. Bu cihazlar, gerekirse bir USB-> Seri Dönüştürücü aracılığıyla çağdaş bir bilgisayarda çalışmalıdır. USBBY’nin yanı sıra usbirboy yerli USB cihazlarıdır, ancak geniş destek yoktur.

Alıcı yazılımı

Alıcı türünden bağımsız olarak, bilgisayarın gelen uzak komutları dinlemek için bir programa ihtiyaç duyar ve bilgisayardaki işlemlere dönüştürür. Linux ve Mac kullanıcıları, birçok farklı alıcı türünü destekleyen LIRC’leri de var. Windows kullanıcıları biraz daha az şanslı. WinLirc, kolay kesme tabanlı seri port alıcıları için terk edilmiş bir Windows Limanıdır; WinLirc en son 2003 yılında gelişti. Girder başlangıçta bir Freeware PC otomasyon programı oldu, ancak 30 günlük bir deneme ile pahalı Bloatware olmak sona erdi. Neyse ki, Girder’in (3.2.9b) son ücretsiz versiyonu hala indirildi.

IR uzaktan protokollerle çalışmak

IR Sinyallerini Kodlandırma

Uzaktan kumandalar, bir 38khz sağlayıcı nabzı boşluğundaki veya zamanlamadaki komutları kodlamak, [San Bergmans], ilgili müdürlerin bir açıklamasına sahiptir. Bir kızılötesi alıcı IC veri akışını taşıyıcıdan ayırır. Görevimiz, veri akışını bir mikrodenetleyici ile çözmektir. Düzinelerce uzaktan kumanda protokolü vardır, ancak Phillips’in RC5’leri yaygındır ve genellikle hobiler tarafından kullanılır.

RC5, bit zaman başına 14 adet eşit uzunlukta bit uzunluğunda bitidir. Bit zamanının ilk yarısında bir nabız, 0’ı temsil eder, ikinci yarıdaki bir nabız 1’i temsil eder. Bu planın Manchester kodlaması olarak adlandırılır.

Bilinen bir RC5 uzaktan kumandası olan Helpauge Wintv uzaktan kumandasının çıktısına bir göz atmak için bir mantık analizörü kullandık. Diyagram, 1 düğmenin iki presini ve 2 düğmesinin iki presini gösterir; Çıkışın yanı sıra Manchester kodlaması yukarıdaki açıklamadan geriye doğru olduğuna dikkat edin.

İlk iki bit zaman biti başlar, ardından bir geçiş bitidir. Bir düğmeye her basıldığında, bir düğmeye basıldığında geçiş biti ters çevrilir, böylece alıcı, bir tutma ile tekrarlanan bir basın arasındaki farkı söyleyebilir. Gelecek 5 bit, adresi (0B11110 = 0x1e), ardından komutu takip eder (0B000001 = 0x01, 0B000010 = 0x02). RC5’e geriye doğru uyumlu bir uzantı, ikinci başlangıç ​​bitini komut bit 7 olarak kullanır.

Uzak Kodları Bilgisayara Temizleme

Önceki tasarımlara bakıldığında, uzaktaki komutları bir bilgisayara iletmek için üç genel yöntem gördük:

Protokol Belirli Alıcılar bir protokolü çözmenin yanı sıra, PC’ye gerçek kodu çözülmüş komutları göndermenin yanı sıra

Çok daha genel bir alıcı türü, zamanlamanın yanı sıra her nabızın aralığını yanı sıra tam dalga formunu analiz için PC’ye gönderir.

Bazı alıcılar, bir sinyal için belirgin bir karma üretir, ancak dalga formunu tamamen yeniden oluşturmak için gerçekten yeterli veri içermez.

Tercihimiz genel karma yöntemine doğru iken, tek uzaktan kumandamız RC5 olarak kullanır.well 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.

Donanım

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.

Parça listesi

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).

Bölüm

Tanım

İc1

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 direnç

TSOP

TSOP1738 (obsolete, try TSOP1138)

USB bağlantı

USB ‘B’ plug, female

SER

.1″ pin header

ICSP

.1″ pin header

Firma yazılımı

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 aAlıcı gibi sanal seri bağlantı noktası gadget’ı. Windows XP, gerekli sürücülere sahiptir, ancak bunları cihazımızla uygun şekilde ilişkilendirmek için .inf verilerinden yardımcı olur.

Windows, alıcıyı ilk taktığınızda yeni donanım iletişim kutusunu gösterecektir. Özel yapımı bir sürücü kullanmak ve iş arşivinde (zip) dahil olan .inf verilerine işaret etmek için seçin. Bu, gadget’ı zaten Windows’ta bulunan bir sürücüye bağlar, yanı sıra alıcıyı COM portu olarak ekler. COM port numarasını kontrol panelinde kontrol edebilirsiniz.

Mac ve Linux kullanıcılarının yanı sıra alıcıyı LIRC ile kullanabilirler, ancak Windows kullanıcıları eski, Freeware Girder veya yeni, 30 günlük deneme shareware sürümünün seçeneğiyle karşı karşıya kalacaktır. Girder’in ücretsiz versiyonunu kullandık, ancak erkeklerin göz ardı ettiğimiz harika, açık bir kaynak alternatif önerebileceğini umarız.

Kullandığınız bilgisayar tarafı kontrol yazılımından bağımsız olarak, bir UIR / IRMAN / IRA / CTINFRA / Hollywood + Stil Alıcısı için yapılandırın, ayrıca COM portuna veya atanan seri adresine girin. Alıcımız, ‘Hızlı Uir Init’ gibi herhangi bir protokol seçeneğiyle aynı şekilde uyumludur ve “IR” -> “Tamam” el sıkışmasından kısalır veya kurtulun. Şimdi alıcıyı test etmenin yanı sıra, yazılımınızın belgelerine göre bir uzaktan bir uzaklaştırın.

Manuel terminal arayüzü yanı sıra hata ayıklama

Alıcı ile ilgili bir sorun varsa, yoksa sadece merak ediyorsanız, bir seri terminalden arayüz etmeye çalışın. Biz gerçekten Herkül’deki seri terminal gibi. Doğru COM portunu ayarlayın, ancak yapılandırma ayarlarının yanı sıra, USB Seri Bağlantı Noktası Sürücüsü tarafından göz ardı edilir.

Bir finansman ‘r’, alıcı ‘Tamam’ı’ yanıtlamak için zamanında olacaktır. RC5 kodları ham bayt olarak döndürülür, bu nedenle terminalinizi ASCII metni olarak çevirmek yerine altıgen değerleri göstermek için ayarladığınızdan emin olun. Çok ilk bayt, RC5 adresi bayt (0x1e), ardından UIR / IRMAN protokolüne uymak için BYTE (0x41) ve ardından dört tampon 0S’dir. Resim, el sıkışmasının yanı sıra 1,2’deki kısa bir basının çıktısını ve 3 düğmenin çıktısını gösterir.

Review için Portmon Logs Com Port Faaliyet adı verilen ücretsiz bir yardımcı program. Bu, mevcut alıcı protokollerine casusluk yapmak, ayrıca ısmarlama donanımımızın etkileşimini ve kapalı / tescilli yazılımların yanı sıra hata ayıklamanın yanı sıra faydalıdır. Resim, ‘IR’ (0x49,0x52) başlatma dizesini gönderen kirişi gösterir; ayrıca alıcı ‘OK’ (0x4F, 0x4b).

Daha ileri götürmek

RC5X uyumlu alıcımız, yaygın olarak kullanılan bir arabirim protokolünü izler. Açık kaynaklı bir kızılötesi alıcısında ekstra özellikler için bir sürü olanak var:

Orijinal UIR / IRMAN donanımı gibi genel bir karma jeneratör aracılığıyla tüm uzaktan kumandaları destekleyin.

RC6 gibi ekstra uzaktan protokol kod çözücüleri ekleyin.

Birden fazla, yapılandırılabilir arabirim protokolünü destekleyin.

Seri bağlantı noktasını G / Ç’yi uygulayın.

Protokol, arayüz modu, zamanlama seçenekleri, seri bağlantı noktası vb. Dahil EEPROM’da yapılandırma seçeneklerini saklayın.

Leave a Reply

Your email address will not be published.