สารบัญ:

คอมพิวเตอร์ควบคุมระยะไกล IR: 4 ขั้นตอน
คอมพิวเตอร์ควบคุมระยะไกล IR: 4 ขั้นตอน

วีดีโอ: คอมพิวเตอร์ควบคุมระยะไกล IR: 4 ขั้นตอน

วีดีโอ: คอมพิวเตอร์ควบคุมระยะไกล IR: 4 ขั้นตอน
วีดีโอ: สอน วิธี ใช้งาน Arduino รีโมท IR Infrared Arduino Remote 2024, มิถุนายน
Anonim
คอมพิวเตอร์ IR รีโมท คอนโทรล
คอมพิวเตอร์ IR รีโมท คอนโทรล

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

โครงการประกอบด้วยหลายส่วน:

  1. รีโมท
  2. ซอฟต์แวร์พีซี
  3. โมดูลรับสัญญาณ 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
โมดูลรับสัญญาณ IR
โมดูลรับสัญญาณ IR
โมดูลรับสัญญาณ IR
โมดูลรับสัญญาณ IR
โมดูลรับสัญญาณ 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 ตามที่เห็นในภาพ:

  1. เชื่อมต่อหัวต่อ USB เข้ากับช่องเสียบ USB ภายในบนเมนบอร์ดภายในเคสพีซีด้วยสายเคเบิล 4 สายที่เหมาะสม หรือภายนอกกับช่องเสียบ USB ด้วยสาย USB มาตรฐาน ในกรณีที่สอง คุณต้องช่วยตัวเองบ้างเช่น ดังที่เห็นในรูปที่ 3 เพื่อเป็นแรงบันดาลใจ
  2. ต่อสายไฟ 5 V จากแหล่งพลังงานภายในเคส PC เข้ากับหัวต่อ 4 พิน หรือจ่ายไฟให้กับโมดูลในลักษณะอื่นในกรณีของการใช้งานภายนอก

ค้นหาคำอธิบายหมุดซ็อกเก็ต USB ของเมนบอร์ด ฉันไม่แน่ใจว่าการเดินสายไฟเป็นไปตามมาตรฐานหรือไม่ ดังนั้นควรตรวจสอบให้แน่ใจ ในกรณีของฉันมีพินสองแถวที่มี 5 พินในแถวบนและ 4 พินที่ด้านล่าง จากซ้ายไปขวา หมุดคือ + 5 V, D-, D+, Gnd ไม่ได้เชื่อมต่อพินที่ 5 ในแถวแรก ฉันแนบสายเคเบิลตามที่เห็นในภาพที่สอง

ซอฟต์แวร์

เรียกใช้โปรแกรมในเทอร์มินัล หากทุกอย่างถูกต้อง ข้อความสุดท้ายของโปรแกรมคือ "กำลังรอข้อมูล…" ตอนนี้เมื่อคุณกดปุ่มบนรีโมทคอนโทรล รหัสที่ได้รับจะปรากฏในเครื่องเทอร์มินัล วิธีนี้คุณจะรู้ว่าปุ่มใดส่งรหัสใดออกมา

ตอนนี้มีการเขียนโปรแกรมบางอย่างรอคุณอยู่ แต่ไม่ต้องกังวล ต้องเปลี่ยนบางสิ่งในซอร์สโค้ดของโปรแกรมเพื่อให้โปรแกรมตอบสนองต่อรีโมทคอนโทรลของคุณ เปิดไฟล์ remotePC.c ในโปรแกรมแก้ไขข้อความหรือใน IDE บางตัว หากคุณต้องการและแทนที่รหัสของฉันด้วยรหัสของคุณ เพียงกดปุ่มที่คุณต้องการใช้สำหรับแต่ละการกระทำทีละรายการ เพียงคัดลอกรหัสที่ปรากฏในเทอร์มินัลแล้ววางลงในซอร์สโค้ดไปยังสถานที่ที่มีการดำเนินการที่เกี่ยวข้อง

เมื่อคุณทำเสร็จแล้วให้ยุติโปรแกรมและคอมไพล์รหัสใหม่ด้วยคำสั่ง gcc -o remotePC remotePC.c เรียกใช้โปรแกรมอีกครั้งและโปรแกรมจะตอบสนองต่อรีโมทคอนโทรลของคุณนับจากนี้เป็นต้นไป

ฉันใช้วิธีนี้กับการดำเนินการแบบฮาร์ดโค้ดในโปรแกรม เนื่องจากฉันพบว่าไม่มีความหมายที่จะเสียเวลาไปกับการพัฒนาโปรเจ็กต์ให้อยู่ในสถานะเดิม เมื่อสามารถเพิ่ม/เปลี่ยนรหัส/การดำเนินการในสภาพแวดล้อมกราฟิกที่เป็นมิตรกับผู้ใช้ได้ เป็นต้น แต่ถ้าคุณต้องการทำสิ่งนี้หรือมากกว่านั้นคุณสามารถทำได้

แนะนำ: