สารบัญ:

Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej: 8 ขั้นตอน
Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej: 8 ขั้นตอน

วีดีโอ: Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej: 8 ขั้นตอน

วีดีโอ: Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej: 8 ขั้นตอน
วีดีโอ: #184 Make an Arduino USB Volume Control - Ideal Beginner's Project 2024, กรกฎาคม
Anonim
Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej
Arduino Keyboard Joystick Extender Box และ Sound Controller Thing โดยใช้ Deej

โครงการทิงเกอร์แคด »

ทำไม

ฉันต้องการเพิ่มจอยสติ๊กขนาดเล็กบนแป้นพิมพ์ของฉันมาระยะหนึ่งแล้วเพื่อควบคุมองค์ประกอบอินเทอร์เฟซ หรืองานขนาดเล็กอื่นๆ ในเกมและเครื่องจำลอง (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons เป็นต้น)

นอกจากนี้ สำหรับ Elite: Dangerous ฉันยังประสบปัญหาในการมิกซ์ระดับเสียงจากเสียงภายนอก (เพลงในตัวในขณะที่ดี แต่กลับซ้ำซากหลังจากผ่านไปหลายชั่วโมงในสีดำ) เสียงในเกม และการสนับสนุนแพ็คเสียงภายนอก

ตัวผสมแหล่งที่มาในตัวของ Windows นั้น 'ใช้ได้' แต่การสลับหน้าจอและตัวเลื่อนการควบคุมเมาส์ระหว่างเกมนั้นลำบาก การมีกล่องควบคุมคีย์บอร์ดแบบขยายดูเหมือนจะเป็นหนทางที่ดี Deej เป็นทางออกที่ฉันพบ

ยังไง

ฉันเพิ่งได้เรียนรู้เกี่ยวกับ Arduino และได้เจอโปรเจ็กต์ deej บน reddit ดูเหมือนว่าจะแก้ปัญหาทั้งสองนี้ได้ในแพ็คเกจเดียว และมันจะให้ฉันออกแบบและพิมพ์เคส 3 มิติที่สวยงาม

เดชคืออะไร

(จากเว็บไซต์) deej เป็น **ตัวผสมปริมาณฮาร์ดแวร์โอเพ่นซอร์ส** สำหรับพีซี Windows และ Linux ช่วยให้คุณใช้แถบเลื่อนในชีวิตจริง (เช่น ดีเจ!) เพื่อ **ควบคุมระดับเสียงของแอปต่างๆ ได้อย่างราบรื่น** (เช่น เครื่องเล่นเพลง เกมที่คุณกำลังเล่น และเซสชันการแชทด้วยเสียง) โดยไม่ต้องหยุด คุณกำลังทำ.

เวอร์ชั่นของฉัน

เพื่อให้กล่องมีขนาดเล็กลง ฉันเลือกใช้ลูกบิด (โพเทนชิออมิเตอร์เชิงเส้นแบบหมุน (pots = ตัวต้านทาน)) มากกว่าตัวเลื่อน ฟังก์ชันการทำงานเหมือนกัน การออกแบบ deej ในปัจจุบันและเป็นที่นิยมไม่มีจอยสติ๊ก ดังนั้นนี่จะเป็นการออกแบบที่ผสมผสานกันเล็กน้อย มิฉะนั้นจะเป็นการสร้างที่ค่อนข้างตรงไปตรงมา

Deej จะทำงานร่วมกับ Arduino Nano, Pro Micro หรือ Uno แต่ Nano และ Pro Micro ได้รับการ 'แนะนำอย่างเป็นทางการ' โดยนักพัฒนา ฉันเลือก Arduino Pro Micro เพราะฉันต้องการจอยสติ๊ก และ Arduino Joystick Library ก็รองรับ ฉันอาจใช้ Arduino Keyboard Library เมื่อฉันต้องการใช้ฟังก์ชันปิดเสียงแป้นพิมพ์สื่อ (แทนที่จะเป็น 'ปิดเสียงแบบนุ่มนวล') ด้วยปุ่มจอยสติ๊ก แต่นั่นก็อยู่ไกลออกไป

ขั้นตอนที่ 1: วัสดุสิ้นเปลือง

เสบียง
เสบียง
เสบียง
เสบียง
เสบียง
เสบียง

กล่อง

ดาวน์โหลดไฟล์ STL (ออกแบบใน Tinkercad):

  • ไฟล์แนบที่ Prusa (https://www.prusaprinters.org/)
  • Thingiverse (เร็วๆนี้)

ฮาร์ดแวร์ (หน่วยการผลิต)

  • 1x Arduino Pro Micro
  • 4x 10k โพเทนชิโอมิเตอร์แบบหมุน (ลูกบิด) (ไม่ใช่ตัวควบคุมแบบโรตารี่ ใช้หม้อ)
  • 1x Arduino KY-023 จอยสติ๊ก
  • สายเคเบิลเครือข่าย cat5 เศษ 5 ฟุต
  • 1x สายเคเบิลไมโคร USB A ถึง USB B (USB A เป็นตัวเชื่อมต่อสี่เหลี่ยมขนาดใหญ่, USB B micro คือสิ่งที่อยู่ใน Arduino Pro Micro)
  • LED สีแดง 1x 5 มม
  • ตัวต้านทาน 1x220 โอห์ม

ฉันมีชิ้นส่วนพิเศษอยู่รอบๆ ดังนั้นฉันจึงคิดว่าจะสร้างหน่วยพัฒนาเพื่อทดสอบสิ่งต่างๆ เพียงแค่เชื่อมต่อสิ่งต่าง ๆ เข้ากับเขียงหั่นขนมทำให้ง่ายต่อการมองเห็นสิ่งสุดท้าย

  • 1x Arduino Pro Micro
  • 4x 10k โพเทนชิโอมิเตอร์แบบหมุน (ลูกบิด) (ไม่ใช่ตัวควบคุมแบบโรตารี่ ใช้หม้อ)
  • 1x สวิตช์ปุ่มกดชั่วขณะ (สวิตช์ฮาร์ดรีเซ็ต)
  • 1x สายเคเบิลไมโคร USB A ถึง USB B (USB A คือตัวเชื่อมต่อสี่เหลี่ยมขนาดใหญ่, USB B micro คือสิ่งที่อยู่ใน Arduino Pro Micro)
  • สายจัมเปอร์สารพัน
  • เขียงหั่นขนม
  • LED สีแดง 1x 5 มม
  • ตัวต้านทาน 1x220 โอห์ม

ขั้นตอนที่ 2: สิ่งที่แนบมา

สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา
สิ่งที่แนบมา

การออกแบบ

ฉันชอบการออกแบบอื่นๆ ที่ทำโปรไฟล์ในแกลเลอรีชุมชน deej ดังนั้นตามคุณสมบัติที่ฉันชอบ:

  • ง่ายต่อการออกแบบและพิมพ์
  • ไม่รบกวนอุปกรณ์ต่อพ่วงเดสก์ท็อปอื่นๆ ของฉัน
  • ห้ามใช้สกรูหรือตัวยึดเพื่อยึดกล่องหุ้ม
  • การออกแบบที่คล้ายคลึงกันกับความสวยงามของคีย์บอร์ด

ฉันออกแบบและพิมพ์ต้นแบบสองชิ้นก่อนที่จะตกลงกับการออกแบบขั้นสุดท้ายนี้ ฉันชอบที่จะมีเวอร์ชันจริงให้เล่นในพื้นที่ที่ฉันใช้ เพราะมันทำให้ฉันเข้าใจได้ดีขึ้นว่าวัตถุสุดท้ายจะทำงานอย่างไร

ฉันเริ่มออกแบบใน Fusion360 สั้น ๆ แต่ไม่รู้ว่ามันเหมือนกับ Tinkercad เลย เลยเปลี่ยนและทำงานที่นั่น

เนื่องจากฉันต้องการการออกแบบที่ไม่มีสกรู ฉันจึงสร้างกล่องซ้อนขึ้น ต้นแบบแรกมีฝาปิดบางและกล่องลึกสำหรับทุกสิ่ง การออกแบบที่สองเปลี่ยนด้วยฝาปิดที่ลึกและกล่องด้านล่างที่ตื้น ต้องถือ Arduino Pro Mini เท่านั้นจึงไม่จำเป็นต้องมีขนาดใหญ่ รวมไอคอนนูนด้วย

การออกแบบที่สามถูกปรับขนาดให้พอดีกับพื้นที่ข้างแป้นพิมพ์ของฉัน

การพิมพ์

ฉันพิมพ์กล่องใน PLA โดยตั้งโปรแกรมการสลับเส้นใย / เลเยอร์จากสีดำเป็นสีแดงสำหรับฝาที่ไอคอนเพิ่งจะเริ่มมองเห็นได้ และกลับมาเป็นสีดำอีกครั้งสำหรับส่วนที่เหลือของฝา

ปัญหา

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

ขั้นตอนที่ 3: วงจร

The Circuit
The Circuit
The Circuit
The Circuit
The Circuit
The Circuit

งานเดินสายไฟที่แย่ที่สุดที่เคยมีมา

ตกลง นี่เป็นโครงการ Arduino เต็มรูปแบบครั้งแรกของฉัน ใช่ ฉันเคยทำสิ่งต่าง ๆ บนเขียงหั่นขนมมาก่อนและกำลังใช้อันหนึ่งเพื่อสร้างเวอร์ชันพัฒนาของสิ่งนี้ แต่สำหรับการประดิษฐ์และประกอบจริง ๆ นี่เป็นครั้งแรกของฉัน ดังนั้นสายไฟของฉันจึงดูเหมือนอึ นั่นมันออกไปให้พ้นทาง:)

อัปเดต: ฉันได้สร้างอีกอันแล้วและการเดินสายนั้นดีกว่ามากที่นั่น ดูภาพ:)

หน่วยการผลิต -- กำลังจะไปไหน

Arduino Pro Micro เป็นบอร์ดขนาดเล็ก และจะพอดีกับส่วนแม่พิมพ์ในฐาน ลูกบิดและจอยสติ๊กจะพอดีกับรูที่ฝาปิดตามลำดับ แต่อย่าติดตั้งอะไรเลยจนกว่าคุณจะได้งานบัดกรี

การเดินสายไฟ

ฉันไม่มีสายวงจรที่เหมาะสม แต่มีสายเคเบิลเครือข่าย cat5 แบบ solid-core เหลืออยู่ นั่นคือสิ่งที่ฉันใช้ มันแข็งกว่าเล็กน้อยและอาจเปราะมากกว่าลวดวงจรควั่น แต่ใช้งานได้

การจัดวางส่วนประกอบให้ใกล้เคียงกับตำแหน่งการติดตั้งขั้นสุดท้าย ฉันประมาณระยะห่างสำหรับลวดแต่ละเส้น เพิ่มอีกเล็กน้อยเพื่อความหย่อน ฯลฯ จากนั้นจึงตัดและเล็มลวด ฉันปล่อยให้หย่อนมาก

จากแผนภาพการเดินสายไฟ ฉันใช้กราวด์ทั่วไป (สีดำ) และ VCC (สีแดง) ไปที่ปุ่มและจอยสติ๊กตามที่ระบุไว้ เนื่องจากสายเคเบิลเครือข่ายไม่มีสีเหล่านี้ ฉันจึงเลือกสีและเก็บสายไฟให้สอดคล้องกับฟังก์ชัน

หม้อแต่ละใบ. สายแอนะล็อก (สีเหลือง) วิ่งไปที่หมุด A0 - A3 สายจอยสติ๊ก (สีส้ม) ซึ่งเป็นแอนะล็อก วิ่งไปที่พิน I/O 8 และ 9 ซึ่งจะต้องกำหนดเป็นอะนาล็อกในโค้ด Arduino เป็น A8 และ A9

หมุดสวิตช์จอยสติ๊ก (สีน้ำเงิน) วิ่งไปที่พิน 7 ซึ่งจะเป็นพินดิจิทัลในรหัส

ฉนวนกันความร้อน

เนื่องจากลวดแข็งนี้จะถูกยัดเข้าไปในพื้นที่เล็กๆ ฉันจึงเลือกที่จะป้องกันจุดเชื่อมของฉันด้วยกาวร้อนละลายที่แข็งแรง จากนั้นเก็บทุกอย่างเข้าที่ แล้วทำการทดสอบง่ายๆ บนบอร์ดและหม้อโดยใช้โค้ด Arduino Example AnalogInput เวอร์ชัน ซึ่งแก้ไขเพื่ออ่านพ็อตทั้งหมด

รุ่นที่สอง

สองภาพสุดท้ายด้านบนแสดงกล่องถัดไปที่ฉันกำลังสร้าง ปุ่มนี้จะมีปุ่ม 5 ปุ่มและปุ่มปิดเสียงชั่วขณะหนึ่งปุ่ม ไม่มีจอยสติ๊ก กล่องขนาดเดียวกัน.

ขั้นตอนที่ 4: เสร็จสิ้นฮาร์ดแวร์

จบฮาร์ดแวร์
จบฮาร์ดแวร์

เมื่อฉันติดตั้งจอยสติ๊ก ฉันก็รู้ว่าไม่มีช่องว่างระหว่างบอร์ดกับส่วนหัวของพินที่เหลืออยู่ใน Pro Micro มากนัก

หลังจากการดัดส่วนหัวของพินอย่างระมัดระวังและทากาวร้อนละลายซ้ำ (เพื่อเป็นฉนวน) กล่องหุ้มก็ปิดสนิท

การติดตั้งหม้อดำเนินไปโดยไม่มีปัญหา

อีกครั้งกับสายไฟ

สายไฟที่เป็นของแข็งจะมีความแข็งเล็กน้อย และอาจเปราะได้หากงอหลายครั้งเกินไป ดังนั้นควรพับเก็บอย่างระมัดระวัง (โดยไม่มีมุมแหลมคม) เข้าไปในพื้นที่ว่าง ของฉันบางอันยาวเกินไปและต้องพับเพิ่มเล็กน้อย

เมื่อทุกอย่างเข้าที่แล้ว เพียงแค่ใส่ฐานลงไปด้านบน และคุณควรจะเสร็จสิ้นด้วยฮาร์ดแวร์….

แต่เดี๋ยวก่อนยังมีอีกมาก

แน่นอน หลังจากใช้งานไปสองสามสัปดาห์ ฉันตัดสินใจว่าฉันต้องการตัวบ่งชี้เพื่อแจ้งให้เราทราบว่าสถานะของฟังก์ชัน MUTE แบบซอฟต์โค้ดคืออะไร

หลังจากแก้ไขโค้ดเพื่อเพิ่มในฟังก์ชัน LED (ดูหัวข้อถัดไป) ฉันก็บัดกรี LED / สายไฟ / ตัวต้านทานอย่างรวดเร็วและเชื่อมต่อเข้ากับบอร์ด

ฉันใช้เวลามากขึ้นในการเจาะรูผ่านส่วนบนของเคส เนื่องจากฉันไม่ต้องการทำลายผิวด้านบน ฉันทำเครื่องหมายจุดศูนย์กลาง เว้าแหว่ง จากนั้นใช้มือหมุนดอกสว่านเพื่อทำรู

การยื่นอย่างระมัดระวังเพิ่มเติมช่วยทำความสะอาดรูและทำให้มั่นใจว่ามีการกดพอดีเพื่อให้แน่ใจว่าไฟ LED จะไม่ยื่นออกมาเหนือพื้นผิวด้านบนมากเกินไป

ขั้นตอนที่ 5: ซอฟต์แวร์

ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์

ภาพรวม

ดังนั้น นี่เป็นกระบวนการสองส่วน

  1. รับและทำความเข้าใจวิธีการทำงานของ Deej และแก้ไขไฟล์ Config.yaml
  2. แก้ไขโค้ด Arduino ให้ตรงกับฮาร์ดแวร์และคุณสมบัติที่ต้องการ
  3. รับไลบรารี Arduino Joystick

ในกรณีของฉัน ฉันต้องการคุณสมบัติเหล่านี้:

  • ลูกบิดที่ควบคุมระดับ (ไมค์และเอาต์พุต)
  • สวิตช์ปิดเสียง
  • จอยสติ๊ก 2 แกนที่ Windows รู้จักสำหรับการใช้งานแอปพลิเคชัน

ระดับ

Deej ค่อนข้างจะดูแลจุดแรกเมื่อมันมาถึง ฉันไม่ได้ปรับแต่งฟังก์ชันนี้

สวิตช์ปิดเสียง

ฉันตั้งใจไว้แต่เนิ่นๆ ว่าฉันจะใช้การกด/สวิตช์ในจอยสติ๊กเป็นปุ่มปิดเสียงที่ใช้งานได้

เมื่อคุณตรวจสอบโค้ด คุณจะเห็นว่าฉันได้เลือก (ในตอนแรก) เพื่อใช้การปิดเสียง 'soft' - เมื่อกดปุ่ม ระดับเสียง MIC จะลดลงเหลือศูนย์ (และไฟ LED จะติดสว่าง) เมื่อกดอีกครั้ง ระดับเสียง MIC จะกลับไปเป็นการตั้งค่าก่อนหน้าและไฟ LED จะดับลง

ในที่สุดฉันจะดูการใช้ไลบรารีคีย์บอร์ด Arduino เพื่อสลับสถานะปิดเสียงผ่านชุดโค้ดคีย์บอร์ดสื่อแบบขยาย

การใช้งานจอยสติ๊ก

ต้องใช้ไลบรารี Arduino Joystick เพื่อให้แน่ใจว่าจอยสติ๊กได้รับการยอมรับว่าเป็นอุปกรณ์ HID โดย Windows และด้วยเหตุนี้เกม/แอปพลิเคชันใดๆ

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

ทั้งหมดที่ฉันต้องทำคือระบุหมุด X/Y อ่านสถานะและส่งไปที่ไลบรารีจอยสติ๊ก Arduino ปรากฏเป็น Leonardo กับ Windows และได้รับการกำหนดค่าอย่างเหมาะสมเป็นอุปกรณ์จอยสติ๊ก

ฉันสามารถตั้งค่าใน Elite Dangerous ควบคู่ไปกับการตั้งค่า HOTAS ที่มีอยู่ของฉัน และให้จอยสติ๊กควบคุมสิ่งต่างๆ ได้อย่างถูกต้องและไม่ขัดแย้งกับ HOTAS มันยังใช้งานได้ดีใน Star Wars: Squadrons -- ฉันได้ตั้งไว้เพื่อเป็นการสลับอย่างรวดเร็วเพื่อตั้งเกราะป้องกันขณะต่อสู้

ไฟล์ที่ใช้งานได้กับการตั้งค่าจอยสติ๊กของฉัน

ฉันได้อัปโหลดไฟล์ปัจจุบัน (ต.ค. 2020) ไปยัง Codepile แล้ว

  • รหัส Arduino (ไฟล์.ino)
  • Deej config.yaml

ขั้นตอนที่ 6: สิ้นสุด

จบ
จบ

เท่านี้ก็เสร็จเรียบร้อย มันใช้งานได้และฉันค่อนข้างพอใจกับวิธีการที่มันมารวมกัน และฉันได้เรียนรู้เพิ่มเติมเล็กน้อยเกี่ยวกับการออกแบบฮาร์ดแวร์ การบูรณาการ และการเขียนโปรแกรม Arduino

ขั้นตอนที่ 7: ภาคผนวก..dum..dum

ภาคผนวก..ดัม..ดัม
ภาคผนวก..ดัม..ดัม

VLC -- เครื่องเล่นเสียงและวิดีโอที่ยอดเยี่ยมนั้นมีความแปลกประหลาดเล็กน้อย โดยที่ระดับเสียงเมื่อควบคุมจากภายนอก จะกระโดดจาก 0% เป็น 27%ish สิ่งนี้จะไม่เกิดขึ้นเมื่อปรับระดับโดยใช้การควบคุมระดับเสียงของอินเทอร์เฟซในแอพ เฉพาะกับการควบคุมภายนอกเช่น Deej

นักพัฒนา Deej พบวิธีแก้ปัญหาใน VLC ที่ใช้งานได้อย่างรวดเร็ว ดูภาพด้านบน:

"… ถ้าคุณต้องการปิดการใช้งาน "การติดตาม" นี้ คุณสามารถทำได้โดยเปลี่ยนโมดูลเอาต์พุตเสียงของ VLC ฉันใช้ DirectX ในความพยายามของฉันที่นี่ คุณจะต้องรีสตาร์ท VLC เพื่อให้การเปลี่ยนแปลงมีผล (คุณยังคง มีเซสชันเสียงของ windows และสามารถควบคุมผ่าน deej ได้ ซึ่งจะป้องกันไม่ให้แถบระดับเสียง VLC เคลื่อนที่ไปด้วย)"

ขั้นตอนที่ 8: แหล่งข้อมูลเพิ่มเติม

แหล่งข้อมูลเพิ่มเติม
แหล่งข้อมูลเพิ่มเติม

พบผ่าน Goog อันยิ่งใหญ่ซึ่งไม่เรียงลำดับโดยเฉพาะ…

  • Arduino Joystick Library (v2) - จำเป็นในการรวมจอยสติ๊ก
  • คู่มือการเชื่อมต่อ Sparkfun Pro Micro - แหล่งข้อมูลที่ดีเกี่ยวกับ Arduino
  • deej - ซอฟต์แวร์ที่ขับเคลื่อนลูกบิด
  • ประเภทตัวเชื่อมต่อ USB - ใครจะรู้ว่ามีตัวแปรมากมาย
  • Arduino Pro Micro Analog Pinouts
  • Arduino Leonardo Gaming Joystick - Leonardo คล้ายกับ Pro Micro ใหญ่กว่าเท่านั้น
  • ตรวจไม่พบพอร์ต Arduino Pro Micro (โคลน) (โซลูชัน) - เมื่อคุณสร้าง Pro Micro ของคุณ (ฉันทำ)
  • Arduino Leonardo/Micro เป็นตัวควบคุมเกม/จอยสติ๊ก
  • ตัวอย่างการใช้ปุ่มมัลติมีเดียเพื่อปิดเสียง - การใช้ไลบรารี HID Project
  • รหัสตัวอย่างไลบรารีโครงการ HID เพื่อหยุดชั่วคราว / เล่นสื่อ
  • ตัวอย่างโค้ดอื่นที่แสดงตัวควบคุม gamepad
  • ArduinoGamingController_updated - คำอธิบายโค้ดที่ดีของการใช้งานไลบรารีจอยสติ๊ก
  • เครื่องคิดเลข LED Resistor - เพื่อค้นหาว่าคุณต้องการตัวต้านทานขนาดใหญ่แค่ไหนในโครงการของคุณ
  • คลังไอคอน - flaticon.com - แหล่งที่มาของรูปภาพที่ใช้เหนือปุ่ม
  • ตัวถอดรหัสสีตัวต้านทานอื่น - คลิกที่สีและวิโอลา!

แนะนำ: