สารบัญ:

เทคโนโลยีสำหรับคุณปู่: 13 ขั้นตอน (พร้อมรูปภาพ)
เทคโนโลยีสำหรับคุณปู่: 13 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เทคโนโลยีสำหรับคุณปู่: 13 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เทคโนโลยีสำหรับคุณปู่: 13 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: 11 การทดลองสุดแปลกและเหลือเชื่อที่นักวิทยาศาสตร์เคยทำ! (เพื่อ?) 2024, พฤศจิกายน
Anonim
Image
Image

กี่ครั้งแล้วที่คุณไปที่บ้านปู่ย่าตายายเพื่อช่วย "ปัญหาด้านเทคโนโลยี" ที่ลงเอยด้วยการเป็นสายไฟที่ไม่ได้เสียบปลั๊ก แบตเตอรีรีโมตเสีย หรือไม่สามารถเปลี่ยนแหล่งที่มาบนทีวีได้ ฉันรู้ว่าสำหรับฉัน สิ่งนี้เกิดขึ้นค่อนข้างบ่อย ในขณะที่ปัญหาส่วนใหญ่สามารถแก้ไขได้โดยเพียงแค่วิ่งไปที่ร้านค้าเพื่อหา AA ใหม่บางตัว แต่บางครั้งพวกเขาก็อาจได้รับประโยชน์จากโซลูชันที่ปรับแต่งเองมากขึ้น

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

ขั้นตอนที่ 1: วัสดุ

  • PhidgetIR
  • PhidgetSBC4 (หรือคอมพิวเตอร์บอร์ดเดียวเช่น Raspberry Pi)
  • หัวแร้ง
  • เครื่องตัดด้านข้าง
  • เครื่องปอกสายไฟ
  • สายจัมเปอร์
  • สาย USB
  • พิดเจ็ต เคเบิ้ล
  • สิ่งที่ส่งมาด้วย
  • ส่วนหัวทะลุ
  • ท่อหดความร้อน

ขั้นตอนที่ 2: การวางแผน

พิมพ์ 3 มิติ
พิมพ์ 3 มิติ

ในการสร้างรีโมท ฉันต้องการความสามารถในการส่งคำสั่งอินฟราเรดสำหรับผู้บริโภค (CIR) ไปยังโทรทัศน์ ฉันตัดสินใจใช้ PhigetIR สำหรับงานนี้ PhidgetIR เป็นอุปกรณ์ควบคุม USB ที่มีความสามารถในการส่งและรับคำสั่ง CIR ฉันเลือกสิ่งนี้ด้วยเหตุผลบางประการ:

  • ฉันต้องการทำโปรเจ็กต์นี้ให้เสร็จโดยเร็วที่สุดและนำไปใช้งาน ดังนั้นความคิดที่จะแยกออสซิลโลสโคปและเขียงหั่นขนมของฉันออกจึงไม่น่าสนใจ นอกจากนี้ เป็นไปได้มากน้อยเพียงใดที่วงจรที่บัดกรีด้วยมือของฉันจะยังคงใช้งานได้ในอีกหนึ่งปีหรือสองปี?
  • PhidgetIR มีความสามารถใน "เรียนรู้" คำสั่ง CIR ทำให้การพัฒนาง่ายมาก
  • คุณสามารถใช้ภาษาโปรแกรมหลักเกือบทุกภาษากับ PhidgetIR ซึ่งหมายความว่าฉันสามารถใช้ Java และทำสิ่งต่างๆ ให้เสร็จได้อย่างรวดเร็ว
  • สุดท้าย ฉันทำงานให้กับ Phidgets ดังนั้นฉันจึงพอใจกับ API และมีอุปกรณ์สำรองอยู่เสมอ

เนื่องจากฉันเลือกใช้ PhidgetIR ฉันจึงต้องการคอมพิวเตอร์เพื่อใช้งาน ฉันต้องการให้โปรเจ็กต์นี้เป็นแอปพลิเคชันแบบสแตนด์อโลน เหมือนกับรีโมตทั่วไป ดังนั้นเดสก์ท็อปหรือแล็ปท็อปจึงหยุดทำงาน ฉันเลือกใช้ PhidgetSBC4 (คอมพิวเตอร์บอร์ดเดียวที่ใช้ Debian Linux) เพราะอนุญาตให้ฉันเชื่อมต่อกับปุ่มกดทั้งสองโดยไม่ต้องใช้ฮาร์ดแวร์เพิ่มเติม พวกเขาสามารถต่อสายโดยตรงกับ VINT Hub ในตัว หมายเหตุ: คุณสามารถใช้ Raspberry Pi สำหรับโครงการนี้ได้ สุดท้าย นอกจากจะใช้งานได้ดีแล้ว ฉันยังต้องการให้โปรเจ็กต์นี้ดูดี ดังนั้นฉันจึงตัดสินใจว่าจำเป็นต้องใช้กล่องหุ้มที่พิมพ์ 3 มิติ

ขั้นตอนที่ 3: 3D Print

พิมพ์ 3 มิติ
พิมพ์ 3 มิติ
พิมพ์ 3 มิติ
พิมพ์ 3 มิติ

สำหรับโครงการนี้ Geomagic ถูกใช้เพื่อสร้างแบบจำลองสิ่งที่แนบมา มีไฟล์ขั้นตอน 3 มิติสำหรับทั้ง PhidgetIR และ PhidgetSBC4 ซึ่งทำให้กระบวนการง่ายขึ้น มีการตัดสินใจบางอย่างในระหว่างขั้นตอนนี้เกี่ยวกับขนาดและการทำงานของกล่องหุ้ม:

  • PhidgetIR มีไฟ LED IR สองดวงที่ต้องชี้ไปที่ทีวีเพื่อส่งคำสั่ง แทนที่จะออกแบบกล่องหุ้มรอบๆ บอร์ด PhidgetIR IR LED อาจถูกถอดออกและติดกาวเข้าไปในรูที่ด้านข้างของตัวเครื่อง จากนั้นจึงสามารถติดตั้งบอร์ด PhidgetIR ให้ห่างจาก LED ได้ โดยใช้พื้นที่ว่าง
  • ตัวเชื่อมต่อ VINT Hub บน PhidgetSBC4 สามารถงอขึ้นได้ ซึ่งยังคงอนุญาตให้เข้าถึงสำหรับการเชื่อมต่อด้วยปุ่มกด และจะป้องกันไม่ให้ต้องสร้างกล่องหุ้มที่ใหญ่ขึ้น

ฉันยังตัดสินใจเพิ่มป้ายกำกับสำหรับปุ่มและป้ายกำกับที่ระบุทิศทางที่ควรหันเข้าหาเพื่อให้ไฟ LED ของ IR ชี้ไปในทิศทางที่ถูกต้อง ฉันพิมพ์บริเวณตัวเครื่องด้วยพลาสติก ABS สีดำ

ขั้นตอนที่ 4: การประกอบ - ถอด LEDs

การประกอบ - ถอด LEDs
การประกอบ - ถอด LEDs
การประกอบ - ถอด LEDs
การประกอบ - ถอด LEDs
การประกอบ - ถอด LEDs
การประกอบ - ถอด LEDs

ในที่สุดไฟ LED IR จะติดกาวเข้าไปในรูที่ด้านข้างของตัวเครื่อง ซึ่งหมายความว่าพวกเขาจะต้องถูกปลดออกก่อน

ขั้นตอนที่ 5: การประกอบ - เพิ่มส่วนหัวทะลุ

การประกอบ - เพิ่มส่วนหัวทะลุ
การประกอบ - เพิ่มส่วนหัวทะลุ
การประกอบ - เพิ่มส่วนหัวทะลุ
การประกอบ - เพิ่มส่วนหัวทะลุ

ถัดไป มีการเพิ่มส่วนหัวของรูเจาะเข้าไปในบริเวณที่ไฟ LED เคยเป็น ซึ่งทำให้ง่ายต่อการเชื่อมต่อโดยใช้สายจัมเปอร์ 4 พิน ใช้ท่อหดความร้อนเพื่อป้องกันการสัมผัสโดยไม่ได้ตั้งใจ

ขั้นตอนที่ 6: การประกอบ - แนบ LEDs

การประกอบ - ติด LEDs
การประกอบ - ติด LEDs
การประกอบ - ติด LEDs
การประกอบ - ติด LEDs

กาว LED ที่ด้านข้างของตัวเครื่อง

ขั้นตอนที่ 7: การประกอบ - แนบ PhidgetIR

การประกอบ - แนบ PhidgetIR
การประกอบ - แนบ PhidgetIR
การประกอบ - แนบ PhidgetIR
การประกอบ - แนบ PhidgetIR
การประกอบ - แนบ PhidgetIR
การประกอบ - แนบ PhidgetIR

แนบ PhidgetIR เข้ากับกล่องหุ้ม และเชื่อมต่อ LED

ขั้นตอนที่ 8: การประกอบ - การเพิ่มปุ่ม

การประกอบ - การเพิ่มปุ่ม
การประกอบ - การเพิ่มปุ่ม
การประกอบ - การเพิ่มปุ่ม
การประกอบ - การเพิ่มปุ่ม
การประกอบ - การเพิ่มปุ่ม
การประกอบ - การเพิ่มปุ่ม

ปุ่มกดต้องเชื่อมต่อกับ VINT Hub ในตัวบน PhidgetSBC ดังนั้นฉันจึงตัด Phidget Cable ลงครึ่งหนึ่งแล้วบัดกรีปลายปุ่มต่างๆ โปรดทราบว่าจำเป็นต้องใช้เฉพาะสายสีขาว (สัญญาณ) และสีดำ (พื้น)

ขั้นตอนที่ 9: การประกอบ - รวมทุกอย่างเข้าด้วยกัน

การประกอบ - รวมทุกอย่างเข้าด้วยกัน
การประกอบ - รวมทุกอย่างเข้าด้วยกัน
การประกอบ - รวมทุกอย่างเข้าด้วยกัน
การประกอบ - รวมทุกอย่างเข้าด้วยกัน

จำเป็นต้องมีการจัดการสายเคเบิลเพื่อรวมทุกอย่างเข้าด้วยกัน อย่างไรก็ตาม กล่องหุ้มทำงานได้ดี

ขั้นตอนที่ 10: ซอฟต์แวร์ - รหัส

มีเพียงไฟล์ Java เดียวที่จำเป็นสำหรับโปรเจ็กต์นี้ ซึ่งคุณสามารถหาได้ที่นี่ โปรแกรมใช้หนึ่งอ็อบเจ็กต์ PhidgetIR และสองอ็อบเจ็กต์ DigitalInput คุณสามารถสร้างวัตถุเหล่านี้ได้ดังนี้:

PhidgetIR ir = ใหม่ PhidgetIR();

DigitalInput tvButton = DigitalInput ใหม่ (); DigitalInput otherButton=ใหม่ DigitalInput();

ออบเจ็กต์อินพุตดิจิทัลถูกแมปกับปุ่มกดจริงบน VINT Hub แนบ แยกออก เกิดข้อผิดพลาด และเหตุการณ์การเปลี่ยนแปลงสถานะยังสมัครรับข้อมูลจาก:

tv.setIsHubPortDevice(จริง);

tvButton.setHubPort(4); tvButton.addAttachListener (onAttachListener); tvButton.addDetachListener (onDetachListener); tvButton.addErrorListener (onErrorListener); tvButton.addStateChangeListener (onStateChangeListener); tvButton.open(); otherButton.setIsHubPortDevice(จริง); อื่นๆButton.setHubPort(5); otherButton.addAttachListener (onAttachListener); otherButton.addDetachListener (onDetachListener); otherButton.addErrorListener (onErrorListener); OtherButton.addStateChangeListener (onStateChangeListener); otherButton.open();

ผู้ฟังการเปลี่ยนแปลงสถานะที่อ้างถึงข้างต้นมีลักษณะดังนี้:

privatestatic DigitalInputStateChangeListener onStateChangeListener = ใหม่ DigitalInputStateChangeListener (){@OverridepublicvoidonStateChange (แผ่นดิสก์ DigitalInputStateChangeEvent){

DigitalInput ch =(DigitalInput) disce.getSource();try{if(ch.getHubPort()==4&& disce.getState()==true){ tvButtonActivated =true;}if(ch.getHubPort()==5&& disce.getState()==true){ otherButtonActivated =true;}}catch(PhidgetException ex){ System.out.println("Error: "+ ex.getDescription());}}};

เมื่อเปิดใช้งานปุ่ม รหัสเหตุการณ์จะดำเนินการและตั้งค่าสถานะ แฟล็กเหล่านี้จะถูกอ้างอิงและรีเซ็ตในลูปหลัก ลูปหลักเพียงแค่รอการเปลี่ยนแปลงในสถานะปุ่ม แล้วส่งคำสั่ง IR โดยใช้ฟังก์ชันส่งซึ่งมีให้จาก PhidgetIR API

ในขณะที่ (จริง){ถ้า (tvButtonActivated){

tvButtonActivated = false; Log.log(LogLevel. INFO, "กำลังเปลี่ยนแหล่งที่มา - ทีวี"); ir.transmit (sourceButtonString, codeInfo); เธรดการนอนหลับ (500); ir.transmit (rightButtonString, codeInfo); เธรดการนอนหลับ (500); ir.transmit (enterButtonString, codeInfo);}if (otherButtonActivated) { otherButtonActivated = false; Log.log(LogLevel. INFO, "กำลังเปลี่ยนแหล่งข้อมูล - ดีวีดี"); ir.transmit (sourceButtonString, codeInfo); เธรดการนอนหลับ (500); ir.transmit (leftButtonString, codeInfo); เธรดการนอนหลับ (500); ir.transmit(enterButtonString, codeInfo);} Thread.sleep(250);}

ขั้นตอนที่ 11: ซอฟต์แวร์ - คำสั่ง CIR

ซอฟต์แวร์ - คำสั่ง CIR
ซอฟต์แวร์ - คำสั่ง CIR

นี่คือตัวอย่างวิธีการสร้างคำสั่ง (คำสั่งเพิ่มระดับเสียงในกรณีนี้):

//รหัส IR

IRCodeInfo sourceButtonCI = IRCodeInfo ใหม่ (); String volumeUp ="77e1d0f0";// ตั้งค่าปุ่มแหล่งที่มา sourceButtonCI.bitCount=32; sourceButtonCI.encoding= IRCodeEncoding. SPACE; sourceButtonCI.gap=108921; sourceButtonCI.trail=549; sourceButtonCI.zero=newint[2]; sourceButtonCI.zero[0]=549; sourceButtonCI.zero[1]=627; sourceButtonCI.one=newint[2]; sourceButtonCI.one[0]=549; sourceButtonCI.one[1]=1755; sourceButtonCI.header=newint[2]; sourceButtonCI.header[0]=9084; sourceButtonCI.header[1]=4600; sourceButtonCI.repeat=newint[3]; sourceButtonCI.repeat[0]=9084; sourceButtonCI.repeat[1]=2308; sourceButtonCI.repeat[2]=549; sourceButtonCI.length= IRCodeLength. CONSTANT;

เพื่อให้ได้ข้อมูลสำหรับคำสั่งนี้ ฉันเพียงแค่ใช้ตัวอย่าง PhidgetIR ที่มาพร้อมกับไลบรารี Phidget หลังจากชี้รีโมตไปที่ PhidgetIR และกดปุ่มเพิ่มระดับเสียงค้างไว้ IR จะ "เรียนรู้" รหัสและเติมตัวอย่าง จากนั้น ข้อมูลนี้สามารถคัดลอกลงในโค้ดได้อย่างง่ายดาย

ขั้นตอนที่ 12: การเรียกใช้โปรแกรม

ไฟล์ Java สามารถเขียนและคอมไพล์บนคอมพิวเตอร์ภายนอกได้ วาง PhidgetRemote.java และ phidget22.jar ในโฟลเดอร์เดียวกันและเรียกใช้คำสั่งต่อไปนี้:

Windowsjavac -classpath.;phidget22.jar PhidgetRemote.java

macOS/Linuxjavac -classpath.:phidget22.jar PhidgetRemote.java

หลังจากคอมไพล์แล้ว ให้คัดลอกไฟล์คลาสที่สร้างไปยัง PhidgetSBC4 และกำหนดค่าให้รันขณะบู๊ต

ขั้นตอนที่ 13: ผลลัพธ์

เมื่อฉันมอบรีโมทให้กับคุณปู่ของแฟนสาวและแสดงวิธีใช้ให้ เขาประหลาดใจกับความเรียบง่ายของมัน ดูวิดีโอเพื่อดูการใช้งานจริง!

การประกวดการควบคุมระยะไกล 2017
การประกวดการควบคุมระยะไกล 2017
การประกวดการควบคุมระยะไกล 2017
การประกวดการควบคุมระยะไกล 2017

รางวัลที่สามในการประกวดการควบคุมระยะไกล 2017

แนะนำ: