สารบัญ:
- ขั้นตอนที่ 1: ไอเดีย
- ขั้นตอนที่ 2: การสร้างคอนโทรลเลอร์
- ขั้นตอนที่ 3: ปรับแต่งคอนโทรลเลอร์
- ขั้นตอนที่ 4: เครื่องมือในการทำให้การตัดเย็บเสื้อผ้าง่ายขึ้น
วีดีโอ: ตกอยู่ใน Stm32: การควบคุมระยะไกลสำหรับ Home Media Center: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
นี่คือต้นแบบที่สมบูรณ์สำหรับการควบคุมระยะไกลสำหรับโฮมมีเดียเซ็นเตอร์โดยใช้ไมโครคอนโทรลเลอร์ smt32, stm32f103c8t6 ที่รู้จักกันในชื่อ 'bluepill' สมมติว่าคุณกำลังใช้พีซีสำหรับโฮมมีเดียเซ็นเตอร์ เป็นโซลูชันที่ยืดหยุ่นมาก ซึ่งช่วยให้คุณสามารถวางไลบรารีวิดีโอขนาดใหญ่ลงในฮาร์ดไดรฟ์ภายใน หรือคุณสามารถเล่นวิดีโอจากเครือข่าย เช่น youtube ได้ คุณจะไม่มีปัญหากับตัวแปลงสัญญาณหรือวิดีโอเลย เพราะมันเป็นโปรแกรมที่ดีมาก ง่ายต่อการอัปเดตโปรแกรมเล่นซอฟต์แวร์ทุกเวลา ข้อเสียเปรียบหลักของการแก้ปัญหานี้คือ คุณควรใช้เมาส์และคีย์บอร์ดเพื่อควบคุมการเล่นของคุณ รีโมตคอนโทรล IR เป็นโหมดที่สะดวกมากสำหรับสิ่งนี้
ในบทความนี้ ผมจะแสดงวิธีการสร้างรีโมทคอนโทรลของตัวเองโดยใช้ชิปบอร์ดบลูพิล
ขั้นตอนที่ 1: ไอเดีย
แนวคิดหลักนั้นง่ายมาก: บอร์ด bluepill มีพอร์ต usb ในตัว และสามารถทำหน้าที่เป็นคีย์บอร์ด USB HID หากเราแนบตัวรับสัญญาณ IR เข้ากับบอร์ด จะสามารถแปลคำสั่งจากรีโมทคอนโทรล IR ของคุณเป็น 'การกดแป้น' ของแป้นพิมพ์เสมือนได้ ไม่จำเป็นต้องมีไดรเวอร์เพิ่มเติม!
มีโปรโตคอล IR มากมายในโลกรอบตัวเรา ผู้จำหน่ายทีวีของ VCS แต่ละรายมีโปรโตคอล IR ของตัวเอง แต่โปรโตคอลเหล่านี้มีบางอย่างที่เหมือนกัน: พวกเขาใช้การมอดูเลตแบบพัลส์เพื่อเข้ารหัสสัญญาณ โดยปกติจะมีคำนำอยู่บ้าง: แรงกระตุ้นยาวก่อนบิตแรกในแพ็กเก็ต จากนั้นการควบคุม IR จะส่งแพ็กเก็ตทั้งหมดด้วย 0 และ 1 และสิ้นสุดการส่งด้วยพัลส์แบบยาวเสร็จสิ้น ในการถอดรหัสบิต เราต้องวัดความยาวพัลส์และความยาวของพีค โดยปกติความยาวสูงสุดของลอจิก 0 และลอจิก 1 จะเท่ากัน ความแตกต่างอยู่ที่ความยาวพัลส์ทั้งหมด
ตัวควบคุมไมโคร stm32 มีคุณสมบัติฝังตัวเพื่อจับสัญญาณ PWM เกือบทุกตัวจับเวลาของไมโครคอนโทรลเลอร์สามารถใส่ใน 'การจับสัญญาณ PWM มากขึ้น' เมื่อตัวแปรช่องสัญญาณของตัวจับเวลาบันทึกความยาวทั้งหมดของพัลส์และความยาวสูงสุดของพัลส์ ที่นี่ฉันต้องเน้นรายละเอียดเล็กน้อย: เมื่อตัวรับสัญญาณ IR จับสัญญาณ แรงดันไฟฟ้าบนพินทำงานจะกลายเป็น 0 และในสถานะว่าง แรงดันไฟฟ้าในพินทำงานคือ 5 หรือ 3.3 โวลต์ ขึ้นอยู่กับแรงดันไฟฟ้าของตัวรับสัญญาณ IR กล่าวคือ ผู้รับ 'กลับด้าน' สัญญาณ
ด้วยโหมดการจับภาพ PWM ตัวควบคุมไมโคร stm32 สามารถเปลี่ยนเป็นนักแปลระยะไกล IR จากรีโมท IR ไปยังรหัสแป้นพิมพ์ได้อย่างง่ายดาย จากนั้นคุณสามารถเริ่มซอฟต์แวร์สร้างภาพที่คุณชื่นชอบได้ เช่น Kodi ของ VLC เพื่อเล่นภาพยนตร์เรื่องโปรดของคุณบน Media Center
ขั้นตอนที่ 2: การสร้างคอนโทรลเลอร์
ในการเขียนโปรแกรม stm32 micro controller ฉันอยากจะแนะนำซอฟต์แวร์ฟรีจาก STM: system workbench (aka ac6) และเครื่องมือกำหนดค่าบอร์ด cubeMX ในการอัปโหลดซอฟต์แวร์ลงในไมโครคอนโทรลเลอร์ สามารถใช้โคลนชิปของอะแดปเตอร์ ST-Link V2 ได้ ไฟล์โปรเจ็กต์เวิร์กเบนช์ระบบที่แนบมากับขั้นตอนนี้ ไฟล์ F1-IR_remote.zip
เครื่องมือกำหนดค่าบอร์ดทำให้ขั้นตอนการกำหนดค่าฮาร์ดแวร์เริ่มต้นของไมโครคอนโทรลเลอร์ของเราง่ายขึ้น
หากคุณกำลังใช้เครื่องมือปรับแต่งระบบ คุณสามารถใช้โปรเจ็กต์ที่ดาวน์โหลดมา แต่ถ้าคุณต้องการตรวจสอบโครงการในรายละเอียดเพิ่มเติม คุณสามารถสร้างการกำหนดค่าบอร์ดใน cubeMX:
- สร้างโครงการใหม่และเลือกบอร์ด stm32f103c8
- เลือก 'Crystal/Ceramic Resonator' สำหรับรายการ 'นาฬิกาความเร็วสูง (HSE)' ในเมนู RCC
- เลือก 'Serial Wire' สำหรับรายการ 'Debug' ในเมนู SYS
-
กำหนดค่าตัวจับเวลา #2 (เมนู TIM2) ในโหมดจับภาพ PWM ตามที่แสดงในภาพ:
- โหมดทาส -> รีเซ็ตโหมด
- แหล่งที่มาของทริกเกอร์ -> TI1FP1
- แหล่งสัญญาณนาฬิกา -> นาฬิกาภายใน
- Channel1 -> อินพุตโหมดจับภาพโดยตรง
- ตั้งค่าช่องทำเครื่องหมาย 'อุปกรณ์ (FS) ในเมนู USB
- เลือกองค์ประกอบเมนูแบบเลื่อนลง 'Human Interface Device Class (HID)' ในรายการ 'Class of FS IP' ในเมนู USB_DEVICE
- ในแผงการกำหนดค่านาฬิกา ตรวจสอบให้แน่ใจว่าได้ให้ 72 MHz กับตัวจับเวลา #2 เนื่องจากเราต้องการตัวจับเวลาที่แต่ละ 1 mks
- ในแผงการกำหนดค่าให้กำหนดค่าอุปกรณ์ USB ตามที่แสดงในภาพ
-
ในแผงการกำหนดค่าให้กำหนดค่าตัวจับเวลา #2 ดังต่อไปนี้:
- Prescaller - 71 (จาก 0 ถึง 71) - ขีด 1 ไมโครวินาที!
- โหมดตัวนับ - ขึ้น
- Counter Period - 39999 (น่าจะวัดชีพจรได้)
- ช่องดักจับอินพุต 1 - Falling Edge (จำไว้ว่าสัญญาณจากตัวรับสัญญาณ IR กลับด้าน)
ในโหมดจับภาพ PWM ตัวจับเวลา #2 จะทำงานดังต่อไปนี้:
เมื่อตรวจพบการตกด้านหน้า ตัวนับเวลาจะถูกบันทึกไว้ในรีจิสเตอร์ channel1 และตัวนับเวลาจะถูกรีเซ็ตด้วย 0 จากนั้นตัวจับเวลาจะนับทิศทางต่อไป ดังนั้นเราจึงสามารถวัดความยาวพัลส์ได้อย่างง่ายดายในหน่วยไมโครวินาที
โดยค่าเริ่มต้นคลาส STM32 USB HID จะจำลองเมาส์ USB คุณจะพบคำแนะนำในการเปลี่ยนคอนโทรลเลอร์ให้เป็นคีย์บอร์ดได้ที่นี่
ขั้นตอนที่ 3: ปรับแต่งคอนโทรลเลอร์
โครงการนี้ทำงานร่วมกับรีโมทคอนโทรลของ Panasonic และศูนย์สื่อของ Kodi ในการปรับแต่งโปรเจ็กต์สำหรับคอนโทรลเลอร์ของคุณเอง คุณควรเพิ่มโค้ดอาร์เรย์สำหรับรีโมตคอนโทรลของคุณเหมือนกับที่ฉันทำกับพานาโซนิครีโมตคอนโทรล (panasonicCode) ไปที่ส่วนหัว Inc/code.h อย่างที่คุณเห็น ทุกคำสั่งมี ID ที่ไม่ซ้ำกัน (ใน IRcommmand enum) มี 24 คำสั่ง (0-23) ที่โครงการรู้จัก คำสั่งจะจัดเรียงตามความเกี่ยวข้อง
typedef enum { IR_play = 0, IR_stop, IR_pause, IR_forward, IR_rewind, IR_last_channel, IR_OSD, IR_prevous_menu, IR_left, IR_right, IR_up, IR_down, IR_enter, IR_chapter_next, IR_chapter_title_previous, IR_info_n_subplay, IR_chapter_title_, IR_info_n_subplay, IR_power, IR_unknown } คำสั่ง IR;
const uint16_t kbrd_kodi = {HID_KEY_P, HID_KEY_X, HID_KEY_SPACE, HID_KEY_F, HID_KEY_R, HID_KEY_0, HID_KEY_M, HID_KEY_BACKSPACE, HID_KEY_LEFT, HID_KEY_RIGHT, HID_KEY_UP, HID_KEY_DOWN, HID_KEY_ENTER, HID_KEY_DOT, HID_KEY_COMMA, HID_KEY_S, HID_KEY_I, HID_KEY_T, HID_KEY_L (uint16_t (HID_LEFT_CTRL) << 8)| HID_KEY_T, HID_KEY_V, HID_KEY_Z, HID_KEY_W, HID_KEY_C };
const uint32_t panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091, 0x180a021, 0xd00bcb1 };
จากนั้นคุณควรเพิ่มรีโมตคอนโทรลของคุณเองในเมธอด init() ใน IR.cpp ด้วยฟังก์ชัน addRemote() อาร์กิวเมนต์ของฟังก์ชันคือ:
- จำนวนบิตในแพ็กเก็ต
- ความยาวส่วนหัวของแพ็กเก็ต
- ความยาวบิต 'ศูนย์'
- 'หนึ่ง' บิตความยาว
- ชี้ไปที่โค้ดอาร์เรย์
- องค์ประกอบตัวเลขของอาร์เรย์
เป็นโมฆะ IRcmd:: init (เป็นโมฆะ) { addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode) / sizeof (uint32_t));
}
นอกจากนี้ ไฟล์ยังมีตารางอื่นสำหรับแปลงคำสั่งเป็นรหัสแป้นพิมพ์ อาร์เรย์ kbdr_kodi มีรหัสคีย์สำหรับศูนย์สื่อของ Kodi คุณสามารถเพิ่มอาร์เรย์อื่นสำหรับโปรแกรมศูนย์สื่อของคุณเองได้ เช่น vlc player หากคุณจะเพิ่มตารางแอปพลิเคชันศูนย์สื่ออื่น คุณจะต้องสร้างวัตถุ KBD อื่น และเริ่มต้นใน main.cpp
ขั้นตอนที่ 4: เครื่องมือในการทำให้การตัดเย็บเสื้อผ้าง่ายขึ้น
มีอีกสองโครงการในที่เก็บ
- การตรวจสอบ IR - ช่วยในการวัดพารามิเตอร์เวลาของสัญญาณจากรีโมทของคุณ
- IR_capture - ช่วยให้จับรหัส HEX ของรีโมทคอนโทรลของคุณ
เพียงโหลดโปรเจ็กต์ IR สำรวจและเชื่อมต่อพอร์ต USB ของบอร์ด bluepill เข้ากับคอมพิวเตอร์ของคุณ จากนั้นเปิดโปรแกรมเทอร์มินัลบนอุปกรณ์พอร์ตอนุกรมเสมือน ซึ่งตรงกับบอร์ด stm32 ในขณะที่คุณกดปุ่มบนรีโมท โปรแกรมจะวัดพัลส์ที่ได้รับและพิมพ์เวลาเฉลี่ยสำหรับพัลส์ที่แตกต่างกัน ควรลดความซับซ้อนในการตรวจจับความยาวพัลส์สำหรับส่วนหัวของแพ็กเก็ต ศูนย์และหนึ่งบิต
ในโครงการตรวจสอบ IR ตัวจับเวลา #2 ทำงานในโหมดจับภาพ PWM ที่มีสองช่องสัญญาณ: ช่องที่หนึ่งจับความยาวพัลส์ทั้งหมด และช่อง 2 จับความยาวสูงสุด เมื่อตรวจพบขอบสัญญาณที่ตกลงมา ค่าตัวจับเวลาจะบันทึกลงในช่องที่ลงทะเบียนไว้หนึ่งช่องและตัวจับเวลาจะรีเซ็ตด้วย 0 เมื่อตรวจพบขอบที่เพิ่มขึ้นของสัญญาณ ตัวนับเวลาจะบันทึกลงในช่อง 2 ที่ลงทะเบียน
ในการจับภาพรหัสปุ่มของรีโมทคอนโทรลของคุณเอง คุณสามารถใช้โปรเจ็กต์ IR_capture ได้ ในไฟล์ main.c คุณควรเพิ่มคำจำกัดความระยะไกลเช่นนี้:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60 };
- .hdr - ความยาวส่วนหัวเป็น mks
- .bits - จำนวนบิตในแพ็กเก็ต
- .zero - ความยาวของศูนย์บิต
- .one - ความยาวหนึ่งบิต
- .dev - ส่วนเบี่ยงเบน (ความแตกต่างของเวลาที่สามารถยอมรับได้) โดยปกติแล้วจะมีความยาว 1/10 ของความยาวที่เล็กที่สุด
จากนั้นเพิ่มรีโมตของคุณในรายการรีโมตที่รองรับ:
const IRcode* รีโมท[2] = {&panasonic, &pioneer};
แนะนำ:
Vintage Look Media PC จากแล็ปท็อปเครื่องเก่า: 30 ขั้นตอน (พร้อมรูปภาพ)
Vintage Look Media PC จากแล็ปท็อปเครื่องเก่า: ในคำแนะนำ/วิดีโอพิเศษนี้ ฉันกำลังสร้างพีซีสื่อขนาดเล็กที่ดูเท่พร้อมลำโพงในตัว ซึ่งควบคุมด้วยแป้นพิมพ์ระยะไกลขนาดเล็กที่สะดวกสบาย พีซีใช้แล็ปท็อปเครื่องเก่า เรื่องราวเล็กๆ เกี่ยวกับโครงสร้างนี้ หนึ่งปีที่แล้วฉันเห็น Matt
Raspberry PI Media Center, OSMC DAC/AMP: 3 ขั้นตอน
Raspberry PI Media Center, OSMC DAC/AMP: ใช้ Raspberry pi เพิ่ม DAC และแอมพลิฟายเออร์ แล้วคุณมีศูนย์สื่อที่ดีมากสำหรับเงินไม่มาก อย่างแรกฉันต้องบอกว่า "BIG" ขอบคุณผู้คนที่ GearBest ที่ส่งสินค้าชิ้นนี้ให้ฉันทดลองใช้ และถ้าคุณต้องการที่จะได้รับหนึ่ง
1981 Portable VCR Raspberry PI Media Center: 12 ขั้นตอน (พร้อมรูปภาพ)
1981 Portable VCR Raspberry PI Media Center: นี่คือ VCR แบบพกพา Sharp VC-2300H ยุค 80 ที่ฉันได้แปลงแล้ว ตอนนี้มี Raspberry Pi อยู่ในหัวใจ โดยใช้งานซอฟต์แวร์ Raspbmc media center ที่ยอดเยี่ยม การอัพเกรดอื่น ๆ รวมถึงนาฬิกาที่ใช้ Arduino ที่เก๋ไก๋และ "เทป" EL wire
Digital Wall Calendar and Home Information Center: 24 ขั้นตอน (พร้อมรูปภาพ)
ปฏิทินติดผนังแบบดิจิทัลและศูนย์ข้อมูลที่บ้าน: ในคำแนะนำนี้ ฉันจะเปิดทีวีจอแบนเครื่องเก่าในปฏิทินติดผนังแบบดิจิทัลที่มีกรอบไม้และศูนย์ข้อมูลสำหรับบ้านที่ขับเคลื่อนโดย Raspberry Pi เป้าหมายคือการเข้าถึงได้อย่างรวดเร็ว ข้อมูลที่เกี่ยวข้องสำหรับสมาชิกทุกคนของ th
โซลูชัน Media Center ที่แม้แต่ภรรยาและลูกก็ใช้: 9 ขั้นตอน
โซลูชัน Media Center ที่แม้แต่ภรรยาและลูกก็ใช้: คำแนะนำนี้เป็นบทสรุปของประสบการณ์ของฉันในการลองใช้แอพ Media Center, OS, ฮาร์ดแวร์และรูปแบบไฟล์ที่หลากหลาย นี่ไม่ใช่วิธี PVR และไม่อนุญาตให้คุณบันทึกหรือหยุดรายการทีวีสดชั่วคราว แม้ว่าฉันจะแนะนำทางเลือกที่ดีบางอย่าง