How-to: USB Remote Control Receiver
ที่เราฟัง MP3 เช่นเดียวกับดู XVIDS หรือ X264S คอมพิวเตอร์เป็นศูนย์กลางความบันเทิงในพื้นที่อย่างน้อยหนึ่งบ้าน แม้ว่าคุณจะมี HTPC พิเศษคุณมักจะติดอยู่กับการใช้แป้นพิมพ์เพื่อหยุดการปรับเปลี่ยนปริมาตรรวมถึงกรอไปข้างหน้าอย่างรวดเร็วผ่านการสรุป Mythbusters ที่น่ารำคาญ PC Remote Control Receiver ความหลากหลายจากการออกแบบพอร์ตอนุกรมโบราณ (ใครมีหนึ่ง?) ถึงอุปกรณ์ USB ไม่รองรับซอฟต์แวร์ที่โดดเด่น ในวิธีนี้เรามีสไตล์ตัวรับสัญญาณอินฟราเรด USB ที่เลียนแบบโปรโตคอลทั่วไปที่สนับสนุนโดยซอฟต์แวร์สำหรับ Windows, Linux รวมถึง Mac เรามีคู่มือเต็มรูปแบบสำหรับโปรโตคอล Plus Schematics เช่นเดียวกับรายการชิ้นส่วน
ภาพรวมการออกแบบ
การควบคุมระยะไกลส่งข้อมูลบนคานอินฟราเรดที่มอดูเลต IC ตัวรับสัญญาณอินฟราเรดแยกลำแสงที่ปรับเปลี่ยนเป็นสตรีมที่สะอาดของ 0S เช่นเดียวกับ 1s สตรีมข้อมูลจะถูกถอดรหัสโดยไมโครคอนโทรลเลอร์รวมถึงส่งไปยังคอมพิวเตอร์ผ่านการเชื่อมต่อ USB ซอฟต์แวร์ประมวลผลรหัสเช่นเดียวกับการทริกเกอร์การกระทำบนคอมพิวเตอร์
พื้นหลัง
เครื่องรับอินฟราเรดคอมพิวเตอร์
สไตล์เครื่องรับอินฟราเรดพีซีที่เก่าแก่ที่สุดใช้ตัวรับ IC เพื่อสลับ PIN พอร์ตอนุกรมโดยทั่วไปแล้ว DCD สไตล์นี้มีแนวโน้มที่จะเกิดขึ้นใน Usenet เช่นเดียวกับที่ยังคงโดดเด่นที่สุดบนเว็บ: Engadget, คำแนะนำ ฯลฯ เหล่านี้ไม่ใช่อุปกรณ์ซีเรียลจริงเนื่องจากพวกเขาไม่ส่งข้อมูลไปยังพีซี แต่โปรแกรมคอมพิวเตอร์จะพัลส์ในพอร์ตอนุกรมแทนและยกเลิกสัญญาณ นี่เป็นการออกแบบที่ง่ายมากอย่างไรก็ตามมันขึ้นอยู่กับการเข้าถึงการขัดจังหวะโดยตรงเช่นเดียวกับความแม่นยำในการกำหนดเวลาที่ไม่ได้นำเสนอใน Windows อีกต่อไป ผู้ใช้ Linux หรือ Mac สามารถลองผู้รับนี้ได้หากคุณยังมีพอร์ตอนุกรม เราไม่สามารถรับผู้รับประเภทนี้ไปทำงานกับพอร์ตอนุกรมบนพีซี Windows XP ร่วมสมัยเช่นเดียวกับอย่าคาดหวังว่าการถ่ายโอนเวลาที่แม่นยำในการถ่ายโอนผ่าน USB-> ตัวแปลงอนุกรม>
เครื่องรับอินฟราเรดขั้นสูงจำนวนมากเป็นอุปกรณ์พอร์ตอนุกรมที่แท้จริงที่กำหนดหรือถอดรหัสสัญญาณอินฟราเรดก่อนที่จะส่งข้อมูลไปยังคอมพิวเตอร์ UIR / IRMAN รวมถึง UIR2 รวมรูปภาพแบบดั้งเดิม 16F84 อย่างไรก็ตามไม่ต้องจัดหาเฟิร์มแวร์และ / หรือซอร์สโค้ด อุปกรณ์เหล่านี้ควรทำงานกับคอมพิวเตอร์ร่วมสมัยผ่านตัวแปลง Serial USB -> หากจำเป็น Ubtiny เช่นเดียวกับ USBirboy เป็นอุปกรณ์ USB ดั้งเดิม แต่ขาดการสนับสนุนที่กว้างขวาง
ซอฟต์แวร์รับ
โดยไม่คำนึงถึงประเภทผู้รับคอมพิวเตอร์ต้องการโปรแกรมในการฟังคำสั่งระยะไกลที่เข้ามารวมถึงแปลงเป็นการกระทำบนคอมพิวเตอร์ Linux และผู้ใช้ Mac มี LIRC ซึ่งรองรับประเภทผู้รับที่แตกต่างกันจำนวนมาก ผู้ใช้ Windows โชคดีน้อยกว่าเล็กน้อย WinLIRC เป็นพอร์ต Windows ที่ถูกทิ้งร้างของ LIRC สำหรับตัวรับสัญญาณอนุกรมที่ใช้อินเตอร์รัปต์ที่ใช้งานง่าย WinLIRC ได้รับการพัฒนาครั้งล่าสุดในปี 2003 คานเป็นต้นมาเป็นยูทิลิตี้ PC อัตโนมัติของพีซีอย่างไรก็ตามได้สิ้นสุดลงด้วยการมีค่าใช้จ่ายในการทดลองใช้ 30 วัน โชคดีที่ Girder เวอร์ชั่นฟรีแวร์ (3.2.9b) ยังคงมีให้ดาวน์โหลด
การทำงานกับโปรโตคอลระยะไกล IR
ถอดรหัสสัญญาณ IR
การควบคุมระยะไกลคำสั่งเข้ารหัสในระยะห่างหรือระยะเวลาของผู้ให้บริการ 38KHz, [San Bergmans] มีคำอธิบายของผู้บริหารที่เกี่ยวข้อง IC ตัวรับสัญญาณอินฟราเรดแยกกระแสข้อมูลออกจากผู้ให้บริการ งานของเราคือถอดรหัสสตรีมข้อมูลด้วยไมโครคอนโทรลเลอร์ มีโปรโตคอลการควบคุมระยะไกลหลายสิบตัว แต่ Phillips ‘RC5 นั้นแพร่หลายเช่นเดียวกับที่ใช้โดยนักมือสมัครเล่นทั่วไป
RC5 เป็นสตรีม 14 บิตที่มีความยาวเท่ากับ 1.778ms อย่างแม่นยำต่อเวลา ชีพจรในช่วงครึ่งแรกของเวลาบิตหมายถึง 0 ชีพจรในช่วงครึ่งหลังแสดงถึง 1. แผนนี้เรียกว่าการเข้ารหัสแมนเชสเตอร์
เราใช้เครื่องวิเคราะห์ตรรกะเพื่อดูเอาท์พุทของการควบคุมระยะไกล Wintv ที่มีความสุขซึ่งเป็นรีโมท RC5 ที่รู้จัก แผนภาพแสดงสองกดปุ่ม 1 ปุ่มรวมถึงสองกดปุ่ม 2 ปุ่ม; โปรดทราบว่าเอาต์พุตที่ถูกผันออกมารวมถึงการเข้ารหัสแมนเชสเตอร์ย้อนกลับจากคำอธิบายข้างต้น
ครั้งแรกสองบิตแรกคือเริ่มบิตตามด้วยสลับบิต การสลับบิตสลับแต่ละครั้งที่กดปุ่มเพื่อให้ผู้รับสามารถบอกความแตกต่างระหว่างการกดค้างไว้รวมถึงการกดซ้ำ ๆ 5 บิตถัดไปเป็นที่อยู่ (0b11110 = 0x1e) ตามด้วยคำสั่ง (0b000001 = 0x01, 0b000010 = 0x02) ส่วนต่อขยายที่เข้ากันได้กับ RC5 ใช้บิตเริ่มต้นที่สองเป็นคำสั่งบิต 7
แสดงถึงรหัสระยะไกลกับคอมพิวเตอร์
ดูการออกแบบก่อนหน้านี้เราเห็นวิธีทั่วไปสามวิธีในการสื่อสารคำสั่งระยะไกลไปยังคอมพิวเตอร์:
โปรโตคอลตัวรับสัญญาณเฉพาะถอดรหัสโปรโตคอลหนึ่งรวมถึงส่งคำสั่งถอดรหัสที่แท้จริงไปยังพีซี
ผู้รับประเภททั่วไปจำนวนมากขั้นตอนการกำหนดเวลารวมถึงระยะห่างของชีพจรแต่ละครั้งรวมถึงส่งรูปแบบของรูปคลื่นเต็มไปยังพีซีเพื่อการวิเคราะห์
เครื่องรับบางตัวสร้างแฮชที่แตกต่างกันสำหรับสัญญาณ แต่ไม่รวมข้อมูลที่เพียงพอเพื่อสร้างรูปแบบของคลื่นอย่างสมบูรณ์
ในขณะที่การตั้งค่าของเรามีต่อวิธีการแฮชทั่วไประยะไกลเท่านั้นที่ใช้ RC5 เป็นเช่นเดียวกับที่มันน่าสนใจมากขึ้นในการพัฒนาตัวถอดรหัส RC5 โดยเฉพาะ เราอธิบายการดัดแปลงสำหรับรุ่นทั่วไปมากขึ้นในส่วนเฟิร์มแวร์
โปรโตคอลอินเตอร์เฟสคอมพิวเตอร์
เราไม่ต้องการเขียนซอฟต์แวร์หรือไดรเวอร์เครื่องรับของเราเองดังนั้นเราจึงมองหาโปรโตคอลการสื่อสารที่มีอยู่และเป็นที่รู้จักกันดีเพื่อเลียนแบบ รับ UIR / IRMAN / IRA / CTINFRA / Hollywood + Type ได้รับการสนับสนุนจากคานรวมถึง LIRC เช่นเดียวกับการใช้โปรโตคอลซีเรียลที่ง่ายพร้อมการจับมือกัน:
แกดเจ็ตเริ่มต้นด้วย DTS เช่นเดียวกับหมุด DTR ของพอร์ตอนุกรม เราไม่มีสิ่งเหล่านี้รวมถึงไม่สนใจ
คอมพิวเตอร์ส่ง “IR” ด้วยความล่าช้าทางเลือก แกดเจ็ตตอบกลับ “ตกลง” เราจะส่ง “ตกลง” ในทุก “r”
รหัสการควบคุมระยะไกลจะถูกส่งเป็นแฮชหกไบต์ที่แตกต่างกัน เราจะถอดรหัสสัญญาณ RC5 รวมทั้งส่งค่าจริงอย่างไรก็ตามอาจใช้แฮชทั่วไปแทน
โปรโตคอลนี้มีไว้สำหรับอุปกรณ์พอร์ตอนุกรมอย่างไรก็ตามตัวรับสัญญาณ USB ของเราจะปรากฏเป็นพอร์ตอนุกรมเสมือนรวมถึงโปรแกรมไม่เข้าใจความแตกต่าง
ฮาร์ดแวร์
คลิกที่นี่เพื่อดูแผนผังขนาดเต็ม (PNG) เครื่องรับของเราขึ้นอยู่กับภาพ USB ที่เปิดใช้งานไมโครคอนโทรลเลอร์ 18F2455 รุ่นเล็ก ๆ ที่มีราคาแพงน้อยกว่า 18F2550 ครัวเรือน 18F สามารถตั้งโปรแกรมได้ด้วยโปรแกรมเมอร์สไตล์ JDM ที่ต้องการหากใช้ไดโอดเพื่อลด VPP เป็นระดับที่ปราศจากความเสี่ยง ภาพได้รับหนึ่งตัวเก็บประจุ Decoupling (C1) รวมถึงไดโอด (D1) เช่นเดียวกับตัวต้านทาน (R1) บนส่วนหัวการเขียนโปรแกรม ICSP เราสัมผัสพอร์ตอนุกรมบนหัวพินสำหรับการดีบักหรือชุดพอร์ต USB / แบบอนุกรมโดยใช้ IC ตัวรับส่งสัญญาณสูงสุด RS232
อุปกรณ์ต่อพ่วง USB ต้องการนาฬิกานอก 20MHz (Q1, C5,6) เช่นเดียวกับตัวเก็บประจุ. 220UF เราแกล้งเก็บประจุโดยใช้ตัวเก็บประจุ 2 x .1uf decoupling (C2,3) ไฟ LED 3 มม. (LED1) รวมถึงตัวต้านทานการ จำกัด การ จำกัด การเชื่อมต่อ 330ohohm (R2) แสดงสถานะการเชื่อมต่อ USB
เราใช้ IC เครื่องรับอินฟราเรด TSOP-1738 ซึ่งเรียกร้องให้ตัวเก็บประจุ 4.7uf decoupling (C4) หากคุณไม่สามารถค้นพบ IC เฉพาะนี้ตัวรับใด ๆ ที่ระบุไว้ที่นี่ควรทำงาน เอาต์พุต TSOP-1738 คือการผกผันของสัญญาณที่ได้รับมันดึงลงไปที่พื้นเมื่อตรวจพบชีพจรดังนั้นตัวต้านทานแบบดึงขึ้น (R3) จะถือขาสูงเมื่อไม่มีสัญญาณ ตรวจสอบว่าคุณใช้ตัวรับสัญญาณที่แตกต่างกันหรือไม่คุณสามารถใช้ตัวต้านทานแบบดึงลงได้เช่นเดียวกับการถอดรหัสการถอดรหัสแมนเชสเตอร์ในเฟิร์มแวร์
วงจรดึงพลังงานจากบัส USB ดังนั้นเราจึงไม่ต้องการแหล่งจ่ายไฟพิเศษ
ส่วนรายการ
คลิกที่นี่เพื่อดูไดอะแกรมตำแหน่งขนาดเต็ม (PNG) สไตล์ PCB เป็น 100% ผ่านรูเช่นเดียวกับด้านเดียว แผนผังและ PCB ถูกสร้างขึ้นด้วย Cadsoft Eagle รุ่นฟรีแวร์มีให้สำหรับหลาย ๆ แพลตฟอร์ม ไฟล์ทั้งหมดรวมอยู่ในงานเก็บถาวรงาน (ZIP)
ส่วนหนึ่ง
คำอธิบาย
ic1
รูป 18f2455
–
28 Pin. 300 ซ็อกเก็ต
C1,2,3
ตัวเก็บประจุ 0.1UF
c4
ตัวเก็บประจุ 4.7UF
c5,6
ตัวเก็บประจุ 27pf (15pf อาจดีกว่า)
D1
ไดโอด 1N4181
ไตรมาสที่ 1
คริสตัล 20MHz
R1,3
ตัวต้านทาน 10K โอห์ม
r2
330 ตัวต้านทานโอห์ม
tsop
TSOP1738 (ล้าสมัยลอง TSOP1138)
ยูเอสบี
ปลั๊ก USB ‘B’ หญิง
เสร่
.1 “หัวพิน
icsp
.1 “หัวพิน
เฟิร์มแวร์
เฟิร์มแวร์ถูกเขียนใน C โดยใช้คอมไพเลอร์ C18 ของ Microchip เฟิร์มแวร์รวมถึงแหล่งที่มารวมอยู่ในงานเก็บถาวรงาน (ZIP)
เราใช้สแต็ก USB ของ Microchip รุ่น 2.3 เพื่อผลิตพอร์ตอนุกรม USB โดยใช้คนขับรถเริ่มต้นที่นำเสนอแล้วในหลาย ๆ ระบบ USB Stack มีฟังก์ชั่นง่าย ๆ ในการระบุอุปกรณ์ USB รวมถึงการถ่ายโอนข้อมูลระหว่าง Gadget รวมถึงโฮสต์ การเปลี่ยน PIN เพียงเล็กน้อยเพื่อรับงานนำเสนอ CDC ที่ทำงานกับฮาร์ดแวร์ที่ทำเองของเรา
การดำเนินการตามโปรโตคอล UIR / IRMAN / IRA / IRA / CTINFRA / Hollywood + ตอบสนองต่อตัวอักษร ‘R’ ด้วย ‘ตกลง’ สิ่งนี้ควรตอบสนองความต้องการจับมือของการใช้งานประเภทใด ๆ ของโปรโตคอลนี้
เราเลือกที่จะถอดรหัสโดยเฉพาะ RC5 (และ RC5X) เนื่องจากเป็นโปรโตคอลที่ใช้กันอย่างแพร่หลายเช่นเดียวกับรีโมทประเภทเดียวที่เราต้องทำงานด้วย การถอดรหัสหลายตัวทำในตัวจัดการขัดจังหวะ:
การปรับเปลี่ยนสัญญาณแรกทำให้เกิดการขัดจังหวะที่เริ่มจับเวลา 889us (ช่วงเวลาครึ่งหนึ่ง)
ในแต่ละตัวจับเวลาขัดจังหวะครึ่งหนึ่งของ Manchester เข้ารหัสบิตถูกสุ่มตัวอย่าง
การขัดจังหวะการวัดการวัดทุกครั้งรวมถึงค่าบิตคำนวณให้เป็น 0, 1 หรือข้อผิดพลาด ข้อผิดพลาดรีเซ็ตการถอดรหัสการถอดรหัส
ในตอนท้ายของการส่งที่อยู่แต่ละครั้งและไบต์คำสั่งจะถูกถอดรหัสรวมถึงส่งไปยังโฮสต์ที่มี 4 บัฟเฟอร์ไบต์ (0) เราละทิ้งบิตสลับเพราะมันจะทำให้ซอฟต์แวร์พีซีสับสนในการคิดว่าการกดทุกครั้งเป็นรหัสที่แตกต่างกัน เราผนวกการเริ่มต้นที่สองไปยังบิตคำสั่งสำหรับการปฏิบัติตาม RC5X นี่เป็นเพียงเพิ่ม 0x40 ไปยังรหัสระยะไกลที่ไม่ใช่ RC5X
รุ่นทั่วไปจำนวนมากสามารถทำได้โดยการลบขั้นตอนการเข้ารหัสแมนเชสเตอร์ (3) รวมถึงการส่ง 48 บิตตัวอย่าง (ทั้งหมด 6 ไบต์) ไปยังคอมพิวเตอร์
การติดตั้งตัวรับสัญญาณอินฟราเรด USB
ระบบปฏิบัติการส่วนใหญ่มี chauffeurs ที่สนับสนุนแกดเจ็ตพอร์ตอนุกรมเสมือนเช่นตัวรับสัญญาณ Windows XP มีไดรเวอร์ที่ต้องการ แต่ต้องการความช่วยเหลือจากข้อมูล. inf เพื่อเชื่อมโยงกับอุปกรณ์ของเราอย่างเหมาะสม
Windows จะแสดงกล่องโต้ตอบฮาร์ดแวร์ใหม่เป็นครั้งแรกที่คุณเสียบตัวรับสัญญาณ เลือกที่จะใช้ผู้ขับขี่รถยนต์ที่ทำเองรวมถึงชี้ไปที่ข้อมูล. inf ที่รวมอยู่ในงานเก็บถาวร (ZIP) ลิงก์นี้แกดเจ็ตกับผู้ขับขี่รถยนต์ที่รวมอยู่ใน Windows แล้วรวมถึงเพิ่มตัวรับสัญญาณเป็นพอร์ต COM คุณสามารถตรวจสอบหมายเลขพอร์ต COM ในแผงควบคุม
Mac เช่นเดียวกับผู้ใช้ Linux สามารถใช้เครื่องรับกับ LIRC ได้ แต่ผู้ใช้ Windows จะต้องเผชิญกับตัวเลือกของคานแบบเก่าฟรีแวร์หรือเวอร์ชั่นแชร์แวร์ทดลองใช้งานใหม่ 30 วัน เราใช้ Girder เวอร์ชั่นฟรีแวร์ แต่หวังว่าคุณผู้ชายจะแนะนำแหล่งที่ดีโอเพ่นซอร์สที่เรามองข้าม
โดยไม่คำนึงถึงซอฟต์แวร์ควบคุมฝั่งคอมพิวเตอร์ที่คุณใช้กำหนดค่าสำหรับ UIR / IRMAN / IRA / IRA / CTINFRA / Hollywood + Style Style เครื่องรับของเราสามารถเข้ากันได้กับตัวเลือกโปรโตคอลใด ๆ เช่น ‘Fast UIR Init’ เช่นเดียวกับ ‘ข้าม UIR เริ่มต้นตรวจสอบ’ ซึ่งย่อหรือกำจัด “IR” -> “ตกลง” จับมือกัน ตอนนี้ทดสอบตัวรับสัญญาณรวมถึงเพิ่มรีโมตตามเอกสารสำหรับซอฟต์แวร์ของคุณ
อินเตอร์เฟสเทอร์มินัลด้วยตนเองเช่นเดียวกับการดีบัก
หากคุณมีปัญหากับผู้รับหรือคุณแค่อยากรู้อยากเห็นลองเชื่อมต่อกับเทอร์มินัลอนุกรม เราชอบเทอร์มินัลอนุกรมใน Hercules อย่างแท้จริง ตั้งค่าพอร์ต COM ที่เหมาะสม แต่การตั้งค่าความเร็วรวมถึงการกำหนดค่าจะถูกละเว้นโดยไดรเวอร์พอร์ตอนุกรม USB
การระดมทุน ‘R’ จะได้รับการตอบรับในเวลาที่เหมาะสมเพื่อตอบกลับ ‘ตกลง’ รหัส RC5 จะถูกส่งคืนเป็นไบต์ดิบดังนั้นอย่าลืมตั้งค่าเทอร์มินัลของคุณเพื่อแสดงค่า Hex แทนที่จะแปลเป็นข้อความ ASCII ไบต์แรกเป็นไบต์ที่อยู่ RC5 (0x1E) ตามด้วยคำสั่งไบต์ (0x41) เช่นเดียวกับบัฟเฟอร์สี่ตัว 0s เพื่อเป็นไปตามโปรโตคอล UIR / Irman ภาพแสดงการจับมือรวมถึงเอาต์พุตของการกดสั้น ๆ บน 1,2 ปุ่มเช่นเดียวกับ 3 ปุ่ม
ยูทิลิตี้ฟรีที่เรียกว่า Portmon Logs Com Port กิจกรรมสำหรับรีวิว สิ่งนี้มีประโยชน์สำหรับการสอดแนมโปรโตคอลตัวรับที่มีอยู่รวมถึงการดีบักการโต้ตอบของฮาร์ดแวร์ที่กำหนดเองของเรารวมถึงซอฟต์แวร์ที่ปิด / เป็นกรรมสิทธิ์ ภาพแสดงคานส่งสตริงการเริ่มต้น ‘IR’ (0x49,0x52) รวมถึงตัวรับสัญญาณตอบกลับ ‘ตกลง’ (0x4F, 0x4B)
รับมันต่อไป
ตัวรับสัญญาณที่สอดคล้องกับ RC5X ของเราตามโปรโตคอลอินเทอร์เฟซที่ใช้กันอย่างแพร่หลาย มีความเป็นไปได้มากมายสำหรับคุณสมบัติพิเศษในตัวรับสัญญาณอินฟราเรดโอเพ่นซอร์ส:
สนับสนุนรีโมททั้งหมดผ่านเครื่องกำเนิดแฮชทั่วไปเช่นฮาร์ดแวร์ UIR / Irman ดั้งเดิม
เพิ่มตัวถอดรหัสโปรโตคอลระยะไกลพิเศษเช่น RC6
รองรับโปรโตคอลอินเตอร์เฟซที่กำหนดค่าได้หลายแบบ
ใช้พอร์ตอนุกรม I / O
ตัวเลือกการกำหนดค่าร้านค้าใน EEPROM รวมถึงโปรโตคอลโหมดอินเตอร์เฟสตัวเลือกเวลาพอร์ตอนุกรม ฯลฯ