Cara: Penerima Remote Control USB

Sekarang kita mendengarkan MP3, serta melihat Xvids atau X264S, komputer adalah pusat kenikmatan di setidaknya satu ruang di banyak rumah. Kecuali jika Anda memiliki HTPC khusus, Anda kemungkinan besar terjebak menggunakan keyboard untuk menjeda, memodifikasi volume, serta maju cepat melalui Recaps MythBusters yang mengganggu. Penguji Remote Control PC Variasi dari desain port serial kuno (yang memilikinya?) Ke perangkat USB yang tidak didukung oleh perangkat lunak terkemuka. Dalam gaya bagaimana kami gaya USB inframerah yang meniru protokol khas yang didukung oleh perangkat lunak untuk Windows, Linux, serta Mac. Kami memiliki panduan lengkap untuk skema protokol plus serta daftar bagian.

Desain ikhtisar

Remote Controls mengirimkan data pada balok inframerah yang dimodulasi. IC penerima inframerah memisahkan balok termodulasi menjadi aliran 0S yang bersih serta 1s. Stream data diterjemahkan oleh mikrokontroler serta dikirim ke komputer melalui koneksi USB. Perangkat lunak memproses kode serta memicu tindakan pada komputer.

Latar belakang

Penerima inframerah komputer

Gaya penerima inframerah PC tertua menggunakan IC penerima untuk beralih pin port serial, biasanya DCD. Gaya ini paling mungkin berasal dari Usenet, serta itu masih paling menonjol di web: Engadget, instruksi, dll. Ini bukan perangkat serial yang benar karena mereka tidak mengirim data ke PC. Sebaliknya, program komputer kali pulsa pada port serial serta demodulasi sinyal. Ini adalah desain yang sangat mudah, namun itu tergantung pada akses interupsi langsung ke serta presisi waktu yang tidak lagi ditawarkan di Windows. Pengguna Linux atau Mac dapat mencoba penerima ini, jika Anda masih memiliki port serial. Kami tidak bisa mendapatkan tipe penerima ini untuk bekerja dengan port serial pada PC Windows XP kontemporer, serta tidak mengharapkan waktu yang akurat untuk mentransfer melalui USB-> Serial Converter.

Beberapa penerima inframerah lebih lanjut adalah perangkat port serial yang benar yang menentukan atau mendekodekan sinyal inframerah sebelum mengirim data ke komputer. UIR / IRMAN serta UIR2 mengintegrasikan gambar tradisional 16F84, namun tidak menyediakan kode firmware dan / atau sumber. Perangkat ini harus bekerja pada komputer kontemporer, melalui USB-> Converter Serial jika perlu. USBYBOY serta USBirboy adalah perangkat USB asli, namun tidak memiliki dukungan luas.

Perangkat lunak penerima

Terlepas dari tipe penerima, komputer membutuhkan program untuk mendengarkan perintah jarak jauh yang masuk serta mengubahnya menjadi tindakan di komputer. Linux dan pengguna Mac memiliki LIRC, yang mendukung banyak jenis penerima yang berbeda. Pengguna Windows agak kurang beruntung. Winlirc adalah port Windows LIRC yang ditinggalkan untuk penerima port serial berbasis interupsi yang mudah; Winlirc terakhir dikembangkan pada tahun 2003. Girder awalnya merupakan utilitas otomasi PC freeware, namun akhirnya menjadi bloatware mahal dengan uji coba 30 hari. Untungnya, versi freeware terakhir dari Girder (3.2.9b) masih ditawarkan untuk diunduh.

Bekerja dengan protokol jarak jauh IR

Decoding IR Sinyal

Remote Controls mengkodekan perintah dalam jarak atau waktu pulsa penyedia 38KHz, [San Bergmans] memiliki penjelasan tentang para pelaku yang terlibat. IC penerima inframerah memisahkan aliran data dari operator. Tugas kami adalah memecahkan kode aliran data dengan mikrokontroler. Ada puluhan protokol remote control, namun RC5 Phillips tersebar luas serta biasanya digunakan oleh penggemar.

RC5 adalah aliran 14 bit panjang yang sama persis 1,778ms per bit. Pulsa selama paruh pertama dari waktu bit mewakili 0, pulsa pada babak kedua mewakili 1. Rencana ini disebut Manchester Coding.

Kami menggunakan penganalisa logika untuk melihat output dari Happauge Wintv Remote Control, RC5 Remote yang dikenal. Diagram menunjukkan dua penekan tombol 1, serta dua penekan tombol 2; Perhatikan bahwa output terbalik serta pengkodean Manchester mundur dari uraian di atas.

Waktu dua bit pertama adalah mulai bit, diikuti dengan sedikit sakelar. Angka invers beralih setiap kali tombol ditekan sehingga penerima dapat memberi tahu perbedaan antara penahanan serta pers yang berulang. 5 bit berikutnya adalah alamat (0b11110 = 0x1e), diikuti oleh perintah (0b000001 = 0x01, 0b000010 = 0x02). Ekstensi yang kompatibel dengan RC5 menggunakan bit awal kedua sebagai perintah bit 7.

Mewakili kode jarak jauh ke komputer

Melihat desain sebelumnya, kami melihat tiga metode umum untuk mengkomunikasikan perintah jarak jauh ke komputer:

Protokol penerima tertentu decode satu protokol, serta mengirim perintah yang diterjemahkan secara aktual ke PC

A lebih banyak tipe penerima yang lebih umum langkah waktu serta jarak masing-masing pulsa serta mengirimkan bentuk gelombang penuh ke PC untuk analisis.

Beberapa penerima menghasilkan hash yang berbeda untuk sinyal, namun tidak benar-benar memasukkan data yang cukup untuk sepenuhnya menciptakan kembali bentuk gelombang.

Sementara preferensi kami adalah terhadap metode Hash Umum, satu-satunya remote kami menggunakan RC5 sebagaibaik karena jauh lebih menarik untuk mengembangkan decoder tertentu RC5. Kami menjelaskan modifikasi untuk versi yang lebih umum di bagian firmware.

Protokol antarmuka komputer

Kami tidak ingin menulis perangkat lunak atau driver penerima kami sendiri, jadi kami mencari protokol komunikasi yang sudah ada dan dikenal dengan baik untuk meniru. Penerima tipe UIR / IRMAN / IRA / CTINFRA / Hollywood + didukung oleh Girder serta LIRC, serta menggunakan protokol serial yang mudah dengan handshake:

Gadget diinisialisasi oleh DTS serta pin DTR dari port serial. Kami tidak memiliki ini juga tidak peduli.

Komputer mengirim “IR”, dengan penundaan opsional. Gadget membalas “OK”. Kami hanya akan mengirim “OK” pada setiap “R”

Kode remote control dikirim sebagai hash enam byte yang berbeda. Kami akan memecahkan kode sinyal RC5 serta mengirim nilai-nilai aktual, namun hash generik mungkin digunakan sebagai gantinya.

Protokol ini untuk perangkat port serial, namun penerima USB kami akan muncul sebagai port serial virtual serta program tidak akan mengerti perbedaannya.

Perangkat keras

Klik di sini untuk skema ukuran penuh (PNG). Penerima kami didasarkan pada gambar yang diaktifkan USB 18F2455 mikrokontroler, versi yang lebih kecil, lebih murah dari 18F2550. Rumah tangga 18F dapat diprogram dengan para penggemar programmer gaya JDM yang disukai jika dioda digunakan untuk mengurangi VPP ke tingkat bebas risiko. Gambar mendapat satu kapasitor decoupling (C1), serta dioda (D1) serta resistor (R1) pada header pemrograman ICSP. Kami mengekspos port serial pada header pin untuk debugging atau versi port USB / serial campuran menggunakan IC transciver Max RS232.

Periferal USB membutuhkan jam luar 20MHz (Q1, C5,6), serta kapasitor .220uf. Kami memalsukan kapasitor menggunakan kapasitor decoupling 2 x .1uf (C2,3). LED 3mm (LED1) serta 330ohm Resistor pembatas (R2) saat ini menunjukkan status koneksi USB.

Kami menggunakan IC penerima inframerah TSOP-1738 yang menyerukan capacitor decoupling 4.7uf (C4). Jika Anda tidak dapat menemukan IC tertentu ini, semua jenis penerima yang dicatat di sini harus berfungsi. Output TSOP-1738 adalah kebalikan dari sinyal yang diterima, itu menarik ke tanah ketika denyut nadi terdeteksi, sehingga resistor pull-up (R3) memegang pin tinggi ketika tidak ada sinyal. Periksa apakah Anda menggunakan penerima yang berbeda, Anda dapat membutuhkan untuk menggunakan resistor pull-down serta membalikkan rutin decoding Manchester di firmware.

Sirkuit menarik daya dari bus USB, jadi kami tidak memerlukan catu daya tambahan.

Daftar Bagian

Klik di sini untuk diagram penempatan ukuran penuh (PNG). Gaya PCB adalah 100% melalui lubang serta satu sisi. Skema serta PCB dibuat dengan CADSOFT Eagle, versi freeware ditawarkan untuk banyak platform. Semua file dimasukkan dalam arsip kerja (ZIP).

Bagian

Keterangan

IC1.

Pic 18F2455.

28 pin .300 soket

C1,2,3.

0.1uf Kapasitor

C4.

4.7UF Capacitor.

C5,6.

Kapasitor 27pf (15pf mungkin lebih baik)

D1.

1N4181 Diode.

Q1.

20MHz Crystal.

R1,3.

10K ohm resistor.

R2.

330 ohm resistor.

Tsop.

Tsop1738 (usang, coba tsop1138)

USB.

USB ‘B’ Plug, Female

Calon

.1 “Header PIN

ICSP

.1 “Header PIN

Firmware.

Firmware ini ditulis dalam C menggunakan presentasi gratis Microchip C18 Compiler. Firmware serta sumber dimasukkan dalam arsip kerja (zip).

Kami menggunakan versi 2.3 dari stack USB microchip untuk menghasilkan port serial USB menggunakan sopir default yang sudah ditawarkan pada banyak sistem. Stack USB memiliki fungsi mudah untuk menghitung gadget USB serta mentransfer data antara gadget serta host. Hanya perlu beberapa perubahan pin untuk mendapatkan presentasi CDC bekerja pada perangkat keras buatan kami.

Implementasi kami dari UIR / IRMAN / IRA / CTINFRA / Hollywood + Protocol hanya menanggapi huruf ‘r’ dengan ‘OK’. Ini harus memenuhi persyaratan handsah dari segala jenis implementasi protokol ini.

Kami memilih untuk secara khusus memecahkan kode RC5 (dan RC5X) karena ini adalah protokol yang banyak digunakan, serta satu-satunya jenis jarak jauh yang harus kami kerjakan. Banyak decoding dilakukan dalam interrupt handler:

Modifikasi sinyal pertama memicu interupsi yang memulai timer 889US (periode setengah bit).

Pada setiap interupsi timer, setengah dari bit kode Manchester disampel.

Setiap interupsi lainnya Pengukuran dibandingkan, serta nilai bit dihitung menjadi 0, 1, atau kesalahan. Kesalahan mengatur ulang routing decoding.

Pada akhir setiap transmisi alamat serta byte perintah diterjemahkan, serta dikirim ke host dengan 4 buffer byte (0). Kami membuang bit toggle karena akan membingungkan perangkat lunak PC untuk berpikir setiap pers lainnya adalah kode yang berbeda. Kami menambahkan bit awal kedua ke perintah bit untuk kepatuhan RC5X; Ini hanya menambahkan 0x40 ke kode jarak jauh non RC5x.

Sebuah versi yang jauh lebih umum dapat dilakukan dengan menghapus langkah pengkodean Manchester (3), serta mengirim 48 bit sampel (semua 6 byte) ke komputer.

Menginstal penerima inframerah USB

Sebagian besar sistem operasi sudah memiliki sopir yang mendukung aGadget port serial virtual seperti penerima. Windows XP memiliki driver yang diperlukan, namun perlu bantuan dari data .inf untuk mengaitkannya dengan perangkat kami dengan tepat.

Windows akan menampilkan dialog Hardware baru pertama kali Anda pasang di penerima. Pilih untuk menggunakan pengendara custom-made maupun arahkan ke data .inf yang termasuk dalam Arsip Pekerjaan (ZIP). Ini menghubungkan gadget ke pengendara yang sudah termasuk dalam Windows, serta menambahkan penerima sebagai port COM. Anda dapat memeriksa nomor port COM di panel kontrol.

Mac serta pengguna Linux dapat menggunakan penerima dengan LIRC, namun pengguna Windows akan dihadapkan dengan opsi girder lama, freeware, atau versi shareware uji coba 30 hari. Kami menggunakan versi freeware girder, namun harap Anda laki-laki dapat menyarankan alternatif sumber terbuka yang hebat yang kami abaikan.

Terlepas dari perangkat lunak kontrol sisi komputer yang Anda gunakan, konfigurasikan untuk penerima UIR / IRA / IRA / CTINFRA / Hollywood +, serta masuk ke port COM atau alamat seri yang ditetapkan untuk itu. Penerima kami juga kompatibel dengan semua jenis opsi protokol seperti ‘fast uir init’ serta ‘lewati uir init check’, yang mempersingkat atau menyingkirkan “ir” -> handshake “OK”. Sekarang uji penerima serta tambahkan remote sesuai dengan dokumentasi untuk perangkat lunak Anda.

Antarmuka terminal manual serta debugging

Jika Anda memiliki masalah dengan penerima, atau Anda hanya ingin tahu, cobalah untuk antarmuka dari terminal serial. Kami benar-benar menyukai terminal serial pada Hercules. Tetapkan port COM yang tepat, namun kecepatan serta pengaturan konfigurasi diabaikan oleh driver port serial USB.

Pendanaan ‘r’ akan tepat waktu penerima untuk menjawab ‘OK’. Kode RC5 dikembalikan sebagai byte mentah, jadi pastikan untuk mengatur terminal Anda untuk menampilkan nilai hex daripada menerjemahkannya sebagai teks ASCII. Byte pertama adalah byte alamat RC5 (0x1e), diikuti oleh perintah byte (0x41), serta kemudian empat buffer 0 untuk mematuhi protokol UIR / Irman. Gambar menunjukkan jabat tangan, serta output dari tekan pendek pada 1,2, serta 3 tombol.

Utilitas gratis yang disebut aktivitas port port portmon com untuk ditinjau. Ini berguna untuk memata-matai protokol penerima yang ada, serta men-debug interaksi perangkat keras buatan kami maupun perangkat lunak tertutup / eksklusif. Gambar menunjukkan girder mengirim string inisialisasi ‘ir’ (0x49,0x52), serta penerima balasan ‘OK’ (0x4f, 0x4b).

Membawanya lebih jauh

Penerima kompatensi RC5X kami mengikuti protokol antarmuka yang banyak digunakan. Ada banyak kemungkinan untuk fitur tambahan dalam penerima inframerah sumber terbuka:

Mendukung semua remote melalui generator hash generik, seperti perangkat keras UIR / IRM asli.

Tambahkan decoder protokol jarak jauh ekstra, seperti RC6.

Mendukung beberapa protokol antarmuka yang dapat dikonfigurasi.

Menerapkan port serial I / o.

Simpan opsi konfigurasi di EEPROM, termasuk protokol, mode antarmuka, opsi waktu, port serial, dll.

Leave a Reply

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