
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

นอกจากวัตถุประสงค์อื่นๆ มากมายแล้ว ฉันยังใช้พีซีเป็นศูนย์มัลติมีเดีย มีบางครั้งที่ฉันกำลังพักผ่อนบนโซฟา ฟังเพลง หรือดูหนังหรือทีวี และไม่อยากลุกไปปรับระดับเสียงหรือเปลี่ยนช่องทีวีทุกครั้งที่มีโฆษณาโง่ๆ โผล่มา หรือฉันกำลังจะหลับและขอพร ความเงียบ. ดังนั้นฉันจึงตัดสินใจทำให้พีซีของฉันควบคุมจากระยะไกลด้วยรีโมตคอนโทรล IR มาตรฐาน ดังนั้นฉันจึงสามารถกดปุ่มทันทีแทนที่จะจับเมาส์หรือปุ่มปิดเสียงบนแป้นพิมพ์อย่างฉุนเฉียว
โครงการประกอบด้วยหลายส่วน:
- รีโมท
- ซอฟต์แวร์พีซี
- โมดูลรับสัญญาณ IR
ขั้นตอนที่ 1: รีโมทคอนโทรล

รายการแรก - รีโมตคอนโทรล - เป็นเรื่องเล็กน้อยที่ต้องทำ เพียงใช้การควบคุม IR ที่คุณต้องการ ผมใช้ตัวที่ลงขายเป็นชุดพร้อมตัวรับ IR ตามรูปเลยครับ เหตุผลเดียวที่ฉันตัดสินใจเลือกประเภทนี้ก็เพราะฉันมีอยู่แล้วที่บ้าน
ขั้นตอนที่ 2: ซอฟต์แวร์
ฉันได้สร้างโปรแกรมสำหรับ GNU/Linux OS ที่ทำงานในเทอร์มินัลแล้ว ซอร์สโค้ดสามารถดาวน์โหลด/ใช้/แชร์/แก้ไขได้ฟรี ในการรวบรวมรหัสเพียงแค่ออกคำสั่งเช่น gcc -o remotePC remotePC.c ในเทอร์มินัล ในการรันโปรแกรมประเภท./remotePC
ข้อมูลต่อไปนี้ในขั้นตอนนี้ส่งถึงผู้ที่สนใจว่าสิ่งต่างๆ ทำงานอย่างไร
รายละเอียดของโปรแกรม
โปรแกรมจะตรวจสอบก่อนว่ามีไฟล์ /dev/ttyACM0 หรือ ttyACM1 อยู่หรือไม่ หากเป็นเช่นนั้น ID กลุ่มของไฟล์จะถูกตรวจสอบให้แตกต่างจากศูนย์ ซึ่งหมายความว่าผู้ใช้ทั่วไปสามารถอ่านและเขียนพอร์ตอนุกรมได้ สองไบต์ที่มีค่า 0xAA 0x55 จะถูกเขียนไปยังพอร์ตเพื่อส่งสัญญาณว่าโปรแกรมพร้อมที่จะรับข้อมูล ข้อมูลขาเข้าจะถูกเปรียบเทียบกับค่าที่เก็บไว้ หากพบการแข่งขัน การดำเนินการที่กำหนดไว้ล่วงหน้าจะถูกดำเนินการ
ตัวควบคุมระดับเสียง
โปรแกรมสามารถเปิด/ปิดเสียง เพิ่ม/ลดระดับเสียงที่ระดับระบบได้ ทำได้โดยใช้โปรแกรม pactl คำสั่งจะมีลักษณะดังนี้:
pactl set-sink-mute 0 toggle
pactl set-sink-volume 0 +10%
pactl set-sink-volume 0 -10%
หากจำเป็นให้ติดตั้งแพ็คเกจที่ต้องการ
ตัวควบคุม VLC Media Player
โปรแกรมยังสามารถเริ่ม/หยุดชั่วคราวเสียง/วิดีโอ และเปลี่ยนแทร็กไปก่อนหน้า/ถัดไปในเพลย์ลิสต์ของ VLC Media Player ในกรณีนี้ Desktop Bus ใช้ คำสั่ง:
dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause
dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Next
dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc
/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Previous
ขั้นตอนที่ 3: โมดูลรับสัญญาณ IR



ส่วนที่สามของโครงการเป็นส่วนที่ซับซ้อนที่สุด แต่ก็ยังค่อนข้างเรียบง่าย แนวคิดคือตัวรับสัญญาณ IR จะส่งสัญญาณไปยัง MCU ซึ่งจะแปลงเป็นหมายเลขเฉพาะ หมายเลขนี้จะถูกส่งไปยังพีซีผ่าน USB
โมดูลนี้มีจุดประสงค์เพื่อติดตั้งภายในเคสพีซีและเชื่อมต่อกับช่องเสียบ USB บนเมนบอร์ดด้วยสายเคเบิล ในกรณีที่คุณต้องการการเชื่อมต่อภายนอกกับ USB คุณจะต้องทำการปรับเปลี่ยนเล็กน้อย
MCU
ฉันได้สร้างโมดูลบนไมโครคอนโทรลเลอร์ PIC16F1829 แล้ว การเลือก MCU นั้นไม่สำคัญ คุณสามารถใช้ MCU อื่นได้ หากคุณสามารถปรับซอร์สโค้ดได้ ฉันเลือก PIC นี้ด้วยเหตุผลสองประการ ครั้งแรกที่ฉันมีมันพร้อมใช้งานและอย่างที่สองคือพินได้รับความเสียหายบางส่วนจากการใช้งานอย่างเข้มข้นในโครงการทดสอบต่างๆ ดังนั้นฉันจึงต้องการใช้มันในโครงการถาวรก่อนที่มันจะใช้ไม่ได้ทั้งหมด:-)
ตัวรับสัญญาณ IR
ส่วนที่สองของโมดูลที่ใช้คือตัวรับสัญญาณ IR VS1838B ซึ่งเป็นส่วนที่กล่าวถึงในขั้นตอนที่ 1
ตัวแปลง UART/USB
ส่วนที่สามคือ MCP2221 ซึ่งเป็นตัวแปลง UART/I2C/USB
งานคือการรวม 3 ส่วนนี้เพื่อสร้างโมดูลที่สามารถรับสัญญาณจากรีโมทคอนโทรล IR และส่งมอบให้กับพีซี
สายไฟ
ในภาพแรกมีวงจรทดสอบบนเขียงหั่นขนม ในอันที่สองมีแผนผังการเดินสาย
รายการอะไหล่
1 ชิ้น PIC16F1829 (หรือ MCU อื่น ๆ)
1 ชิ้น VS1838B (หรือตัวรับสัญญาณ IR อื่น ๆ)
1 ชิ้น MCP2221 (หรือตัวแปลง UART / USB อื่น ๆ)
หัวต่อ 4 ขา 2 ชิ้น
หัวต่อ 6 ขา 1 ชิ้น
ตัวต้านทาน 1 ชิ้น 100R
ตัวต้านทาน 2 ชิ้น 10K
ตัวต้านทาน 2 ชิ้น 330R
ตัวเก็บประจุ 1 ชิ้น 470 nF
ตัวเก็บประจุด้วยไฟฟ้า 2 ชิ้น 4.7 uF
สวิตช์ 1 ชิ้น (อุปกรณ์เสริม)
การประกอบ PCB
ประกอบโมดูลด้วยการใช้แผนผัง คุณสามารถใช้บอร์ดสากลหรือสร้าง PCB แบบกำหนดเองได้ หากเป็นกรณีหลังฉันได้ให้ไฟล์ KiCad ในไฟล์เก็บถาวรด้านล่าง
เฟิร์มแวร์
ซอร์สโค้ดสำหรับ PIC ที่เขียนโดยใช้ MPLAB X IDE และคอมไพเลอร์ XC8 มีให้ดาวน์โหลดด้านล่าง
บันทึกรหัสที่มา
สำหรับผู้ที่ต้องการทราบว่าโปรแกรมกำลังทำอะไรอยู่บรรทัดต่อไปนี้
หลังจากตั้งค่าทั้งหมดเสร็จแล้ว ไฟ LED สีแดงจะติด และ MCU กำลังรอข้อมูล 0x55AA หลังจากนั้นไฟ LED จะเปลี่ยนเป็นสีเขียวและ MCU จะเริ่มตรวจจับสัญญาณจากตัวรับสัญญาณ IR โดยใช้การขัดจังหวะ มันวัดและบันทึกช่วงเวลาที่สัญญาณอยู่ในระดับสูงและต่ำ เวลาเหล่านี้จะถูกแปลงเป็นหมายเลข 32 บิตที่ส่งไปยังพีซี
ความสัมพันธ์ระหว่างเวลาและตัวเลขสุดท้ายถูกกำหนดโดยโปรโตคอล NEC
ขั้นตอนที่ 4: วิธีใช้อุปกรณ์



เฟิร์มแวร์
อัปโหลดเฟิร์มแวร์ไปยัง PIC ฉันใช้โปรแกรมเมอร์ PICkit 3
ฮาร์ดแวร์
ติดตั้งโมดูลตัวรับสัญญาณ IR ตามที่เห็นในภาพ:
- เชื่อมต่อหัวต่อ USB เข้ากับช่องเสียบ USB ภายในบนเมนบอร์ดภายในเคสพีซีด้วยสายเคเบิล 4 สายที่เหมาะสม หรือภายนอกกับช่องเสียบ USB ด้วยสาย USB มาตรฐาน ในกรณีที่สอง คุณต้องช่วยตัวเองบ้างเช่น ดังที่เห็นในรูปที่ 3 เพื่อเป็นแรงบันดาลใจ
- ต่อสายไฟ 5 V จากแหล่งพลังงานภายในเคส PC เข้ากับหัวต่อ 4 พิน หรือจ่ายไฟให้กับโมดูลในลักษณะอื่นในกรณีของการใช้งานภายนอก
ค้นหาคำอธิบายหมุดซ็อกเก็ต USB ของเมนบอร์ด ฉันไม่แน่ใจว่าการเดินสายไฟเป็นไปตามมาตรฐานหรือไม่ ดังนั้นควรตรวจสอบให้แน่ใจ ในกรณีของฉันมีพินสองแถวที่มี 5 พินในแถวบนและ 4 พินที่ด้านล่าง จากซ้ายไปขวา หมุดคือ + 5 V, D-, D+, Gnd ไม่ได้เชื่อมต่อพินที่ 5 ในแถวแรก ฉันแนบสายเคเบิลตามที่เห็นในภาพที่สอง
ซอฟต์แวร์
เรียกใช้โปรแกรมในเทอร์มินัล หากทุกอย่างถูกต้อง ข้อความสุดท้ายของโปรแกรมคือ "กำลังรอข้อมูล…" ตอนนี้เมื่อคุณกดปุ่มบนรีโมทคอนโทรล รหัสที่ได้รับจะปรากฏในเครื่องเทอร์มินัล วิธีนี้คุณจะรู้ว่าปุ่มใดส่งรหัสใดออกมา
ตอนนี้มีการเขียนโปรแกรมบางอย่างรอคุณอยู่ แต่ไม่ต้องกังวล ต้องเปลี่ยนบางสิ่งในซอร์สโค้ดของโปรแกรมเพื่อให้โปรแกรมตอบสนองต่อรีโมทคอนโทรลของคุณ เปิดไฟล์ remotePC.c ในโปรแกรมแก้ไขข้อความหรือใน IDE บางตัว หากคุณต้องการและแทนที่รหัสของฉันด้วยรหัสของคุณ เพียงกดปุ่มที่คุณต้องการใช้สำหรับแต่ละการกระทำทีละรายการ เพียงคัดลอกรหัสที่ปรากฏในเทอร์มินัลแล้ววางลงในซอร์สโค้ดไปยังสถานที่ที่มีการดำเนินการที่เกี่ยวข้อง
เมื่อคุณทำเสร็จแล้วให้ยุติโปรแกรมและคอมไพล์รหัสใหม่ด้วยคำสั่ง gcc -o remotePC remotePC.c เรียกใช้โปรแกรมอีกครั้งและโปรแกรมจะตอบสนองต่อรีโมทคอนโทรลของคุณนับจากนี้เป็นต้นไป
ฉันใช้วิธีนี้กับการดำเนินการแบบฮาร์ดโค้ดในโปรแกรม เนื่องจากฉันพบว่าไม่มีความหมายที่จะเสียเวลาไปกับการพัฒนาโปรเจ็กต์ให้อยู่ในสถานะเดิม เมื่อสามารถเพิ่ม/เปลี่ยนรหัส/การดำเนินการในสภาพแวดล้อมกราฟิกที่เป็นมิตรกับผู้ใช้ได้ เป็นต้น แต่ถ้าคุณต้องการทำสิ่งนี้หรือมากกว่านั้นคุณสามารถทำได้
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน

การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน

การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน

วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน

การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน

เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง