KerbalController: แผงควบคุมแบบกำหนดเองสำหรับเกม Rocket โปรแกรม Kerbal Space: 11 ขั้นตอน (พร้อมรูปภาพ)

KerbalController: แผงควบคุมแบบกำหนดเองสำหรับเกม Rocket โปรแกรม Kerbal Space: 11 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

ทำไมต้องสร้าง KerbalController

ก็เพราะการกดปุ่มและการขว้างสวิตช์ทางกายภาพให้ความรู้สึกที่สำคัญกว่าการคลิกเมาส์ โดยเฉพาะอย่างยิ่งเมื่อมันเป็นสวิตช์ความปลอดภัยสีแดงขนาดใหญ่ที่คุณต้องเปิดฝาก่อนสะบัดสวิทช์เพื่อแขนจรวดของคุณเริ่มต้นนับถอยหลังและ 3.. 2.. 1.. เราได้ยกออก!

KerbalController คืออะไร

KerbalController หรือที่เรียกว่า Control Panel, Simpit (ส่วนควบคุมการจำลอง), DSKY (แป้นพิมพ์หน้าจอ) หรือจอยสติ๊กแบบกำหนดเองเป็นอุปกรณ์อินพุตที่กำหนดเองสำหรับการควบคุมการสร้างจรวดยอดนิยมและการบินและหวังว่าจะไม่ระเบิด เกมโปรแกรม Kerbal Space รวมกับเอาท์พุทเสริมจากเกมเช่นไฟแสดงสถานะ, การแสดง telemetry และ / หรือมาตรวัดน้ำมันเชื้อเพลิง

โครงสร้างเฉพาะนี้ประกอบด้วยอินพุตเช่นการควบคุมการหมุนและการแปลผ่านจอยสติ๊กตัวเลื่อนแบบปีกผีเสื้อโหลดของปุ่มที่มีไฟแสดงสถานะมาตรวัดน้ำมันเชื้อเพลิง LED และหน้าจอ LCD telemetry ที่มีหลายโหมด

คู่มือนี้จะรวมทุกสิ่งที่คุณต้องการในการสร้างสำเนาที่เหมือนกันหรือทำการปรับเปลี่ยนและปรับปรุงตามวิธีที่คุณเห็นว่าเหมาะสม รวมถึง:

  • รายการชิ้นส่วน
  • ภาพวาดการออกแบบดิจิทัลพร้อมสำหรับเลเซอร์
  • คำแนะนำการเดินสายไฟ
  • รหัส Arduino
  • รหัสสำหรับปลั๊กอินเสริม KSP
  • รูปภาพจำนวนมาก

พร้อมสำหรับการบินขึ้นหรือยัง ไปกันเถอะ!

วัสดุ:

ขั้นตอนที่ 1: เครื่องมือ

เครื่องมือที่สำคัญที่สุดที่คุณต้องมีในงานสร้างนี้คือหัวแร้ง นั่นรวมถึงบัดกรีบางส่วนฟองน้ำทำความสะอาดโลหะเพื่อทำความสะอาดปลายหัวแร้งและ "มือที่สาม"

เครื่องมืออื่น ๆ ได้แก่ เครื่องปอกสายไฟเครื่องตัดลวดแหนบและไขควงขนาดเล็ก

ขั้นตอนที่ 2: ส่วนประกอบและเค้าโครงพื้นฐาน

ทำให้ตัวควบคุมที่ดีที่สุดสำหรับ คุณ หมายถึงการเลือกปุ่มและสวิตช์ที่คุณต้องการใช้อย่างแท้จริง เพราะทุกคนเล่นเกมต่างกัน บางคนบินเครื่องบินและสร้างของ SSTO (single-stage-to-orbit) ส่วนคนอื่น ๆ ชื่นชอบ rovers ของสถานีอวกาศ และบางคนก็ต้องการที่จะระเบิดอย่างน่าทึ่ง!

ช่วยในการวาดชิ้นส่วนทั้งหมดในขนาดโดยประมาณและลากไปมาในโปรแกรมวาดภาพเวกเตอร์ (เช่น Affinity Designer หรือ Inkscape) หรือโปรแกรมวาดภาพ 3 มิติ (เช่น SketchUp)

หากคุณต้องการโครงสร้างที่ง่ายขึ้นคุณสามารถคัดลอกคอนโทรลเลอร์ของฉันและรับชิ้นส่วนที่อยู่ในรายการ แนบมาด้วย ส่วนรายการ.

ขั้นตอนที่ 3: สร้างต้นแบบ (ไม่บังคับ)

หากคุณกำลังคัดลอกตัวควบคุมของฉันคุณสามารถข้ามขั้นตอนนี้

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

ขั้นตอนที่ 4: เคล็ดลับในการเดินสาย

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

เมื่อเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ทั้งหมดเข้ากับแผ่นปิดหน้าสุดท้ายคุณสามารถลดความยุ่งเหยิงได้โดยสร้างลูปสำหรับ 5V และกราวด์ คุณไม่ได้เชื่อมต่อพินกราวด์ทั้งหมดโดยตรงกับ Arduino แต่เชื่อมต่อกราวด์บนปุ่มเดียวเพื่อกราวด์บนปุ่มถัดไปและวนลูปไปรอบ ๆ ในที่สุดคุณเชื่อมต่อกับ Arduino

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

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

ขั้นตอนที่ 5: รับแผ่นหน้ากาก Lasercut

การได้ภาพลักษณ์ที่ดูสะอาดและเป็นมืออาชีพนั้นยากมากเมื่อทำการเลื่อยและวาดด้วยมือ โชคดีที่การตัดด้วยเลเซอร์ไม่ได้แพงมากอีกต่อไป ช่วยให้มีความแม่นยำสูงตราบใดที่การออกแบบของคุณถูกต้อง

สิ่งที่แนบมาคือการออกแบบหน้ากากของฉันในรูปแบบที่เหมาะสมสำหรับ Affinity Designer และโปรแกรมวาดภาพเวกเตอร์อื่น ๆ เช่น InkScape ฟรี

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

สิ่งสำคัญที่ควรทราบ:

  • ทุกอย่างต้องเป็นแบบเวกเตอร์ นั่นเป็นเหตุผลที่โลโก้ในการออกแบบแผ่นหน้าของฉันไม่ได้สลัก หมายเหตุนี่คือ ไม่ แก้ไขในการออกแบบที่แนบมา
  • แม้กระทั่งข้อความก็เป็นแบบเวกเตอร์ ดังนั้นแปลงตัวอักษรเหล่านั้นเป็นเส้นโค้ง!
  • วัด. วัด. วัด. ฉันไม่ได้คำนึงถึงขนาดที่จำเป็นสำหรับการติดจอยสติ๊กและต้องแฮ็คมัน กลับกลายเป็นว่าโชคดี จดบันทึกสิ่งนี้ คือ แก้ไขในการออกแบบที่แนบมา

หลังจากตรวจสอบทุกสิ่งอย่างละเอียดแล้วส่งไปที่ร้านเลเซอร์ คาดว่าจะจ่าย 40-50 ยูโรในเนเธอร์แลนด์และรับผลลัพธ์ที่สวยงามทางไปรษณีย์ในวันถัดไป!

ขั้นตอนที่ 6: เชื่อมต่อปุ่มและสวิตช์

สวิตช์และปุ่มส่วนใหญ่มีตัวเชื่อมต่อที่ระบุว่า C, NO, NC, +, - ต่อไปนี้เป็นวิธีเชื่อมต่อพวกเขาเข้ากับ Arduino

สวิทช์หรือปุ่มกดง่าย ๆ:

  • พื้นดิน -> C (ทั่วไป)
  • Arduino ดิจิตอลพิน -> NO (ปกติเปิด)

เราจะกำหนดค่าพินดิจิตอลเป็น INPUT_PULLUP ซึ่งหมายความว่า Arduino จะเก็บพินที่ 5V และตรวจจับเมื่อพินได้รับการต่อสายดินและถือว่าเป็นอินพุท ขั้วต่อ NO บนสวิตช์หรือปุ่มเปิดตามปกติดังนั้นจึงไม่ได้เชื่อมต่อวงจร เมื่อคุณกดปุ่มหรือสลับสวิตช์วงจรจะถูกปิดและหมุดจะต่อลงดิน

ปุ่มกดพร้อมไฟ LED:

ส่วนของปุ่มเหมือนกันกับด้านบน สำหรับ LED คุณต่อสายเพิ่มเติม:

  • พื้นดิน -> - (เชิงลบ)
  • Arduino ดิจิตอลพิน -> + (บวก)

ส่วนนี้ค่อนข้างตรงไปตรงมา เราจะใช้ขา Arduino ในโหมดเอาท์พุทปกติ

สวิทช์ด้านความปลอดภัยพร้อมไฟ LED:

เหล่านี้แตกต่างกันเล็กน้อยและไม่อนุญาตให้ควบคุม LED ที่เป็นอิสระจากตำแหน่งสวิตช์ ไฟ LED จะสว่างขึ้นเสมอเมื่อเปิดสวิตช์ พวกเขามีขั้วต่อ +, - และสัญญาณ

  • พื้นดิน -> - (เชิงลบ)
  • 5V -> + (บวก)
  • Arduino ดิจิตอลพิน -> S (สัญญาณ)

เราจะใช้ Arduino pin ในโหมด INPUT เมื่อสวิตช์เปิดใช้งาน LED จะติดขึ้นและขาสัญญาณจะสูง

ขั้นตอนที่ 7: เชื่อมต่อก้านควบคุมและจอ LCD

จอแอลซีดี

LCD นั้นง่ายมาก มันแค่ต้องการพลังงานพื้นดินและอนุกรม

  • 5V -> VDD
  • กราวด์ -> GND
  • Arduino Tx PIN -> RX

คุณสามารถใช้ขั้วต่อ JST หรือบัดกรีสายไฟเข้ากับบอร์ดได้โดยตรง

จอยสติ๊ก

ก้านควบคุมอาจดูน่ากลัวในตอนแรก แต่มันค่อนข้างง่ายในการเชื่อมต่อ มีสามแกนที่เชื่อมต่อในลักษณะเดียวกัน สองตัวใช้ขั้วต่อที่ด้านล่างของจอยสติ๊ก สายที่สามใช้สายไฟบางเส้น

  • พื้น
  • ที่ปัดน้ำฝน -> Arduino ขาอินพุตอะนาล็อก
  • 5V

สามารถเชื่อมต่อตัวเชื่อมต่อตามลำดับนี้ได้ ไม่ต้องกังวลกับการถอยหลังมันที่ปัดน้ำฝนจะอยู่ตรงกลางเสมอ หากสลับพลังงานและกราวด์เราสามารถพลิกแกนรอบในโค้ด Arduino ในภายหลัง

สายไฟอาจมีชุดรูปแบบสีที่แตกต่างกันบนจอยสติกของคุณ แต่โดยทั่วไป: สายสองเส้นที่มีสีเหมือนกันใช้สำหรับปุ่มที่อยู่ด้านบน แดงหรือส้มคือ 5V, ดำหรือน้ำตาลคือกราวด์ ลวดที่เหลือคือที่ปัดน้ำฝน

ขั้นตอนที่ 8: มาตรวัดเชื้อเพลิงบาร์ LED

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

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

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

ไปยังแผน 2: ลงทะเบียนกะ คุณจะได้ทำงานกับสิ่งเหล่านี้ในทุกชุดเริ่มต้นของ Arduino และคุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับพวกเขาได้ที่นี่:

แผนคือการแปลงระดับเชื้อเพลิงเป็นสตริงที่เหมาะสมของบิตที่จะแสดงระดับน้ำมันเชื้อเพลิงบนแถบ LED ด้วยมาตรวัดเชื้อเพลิง 5 ระดับเชื้อเพลิงทั้งหมดที่เติมจะต้องเป็น 100000000010000000001000000000100000000010000000000000000 หากไม่มี monopropellant ว่างเปล่ามันจะกลายเป็น: 100000000010000000001000000000100000000000000000000001

ฟังดูง่ายพอสมควร มีภาวะแทรกซ้อนบางอย่าง รีจิสเตอร์การเปลี่ยนมี 8 พินในขณะที่ LED บาร์มีไฟ LED 10 ดวง ฉันใช้ register shift 7 ตัวเพื่อรับ 56 outputs เมื่อเดินสายพวกเขาในฉันข้าม IC pin ที่ไหนสักแห่ง (เราจะใส่ในรหัส) และฉันเดินสายไฟแท่ง LED หนึ่งแท่งโดยเริ่มต้นที่ปลายอีกด้านหนึ่ง (เราจะแก้ไขด้วยรหัส) โอ้และคณิตศาสตร์ Arduino ที่บางครั้งเราจำเป็นต้องใช้เลขทศนิยมซึ่งทำให้เกิดข้อผิดพลาดในการปัดเศษ (เราจะแก้ไขในรหัส) โปรดทราบว่าฉันแบ่งปันรหัสในขั้นตอนต่อมา

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

LED ทุกตัวต้องการตัวต้านทานของมันเอง ลองใช้ค่าที่แตกต่างกันเพื่อให้ตรงกับความสว่าง สีเขียวจะสว่างกว่าสีแดงมากโดยมีตัวต้านทานเดียวกันดังนั้นจึงช่วยปรับสมดุล

ผลลัพธ์สุดท้าย: แทนที่จะต้องใช้พินดิจิตอล 50 อันในการจ่ายไฟให้กับแถบ LED 5 ดวงซึ่งจะลดลงเหลือ 3: สัญญาณนาฬิกาสัญญาณสลักและสัญญาณข้อมูล

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

ได้เวลาแก้แค้นโลโก้ของฉันแล้ว!

ฉันแปลงโลโก้เป็นภาพวาดเวกเตอร์ที่เหมาะสมดังนั้นพวกเขาจึงสามารถแกะสลักได้ดี คราวนี้ฉันมีปัญหาอื่น รูสกรูไม่อยู่ในตำแหน่งที่ถูกต้องสำหรับประกอบกล่องอย่างเหมาะสม ฉันใช้ 6mm MDF สำหรับกล่อง น่าเสียดายที่การตอกตะปูที่ขอบทำให้พวกเขาแตกหัก ฉันแฮ็คมันพร้อมกับเศษไม้และกาวเพิ่มเติม ล็อตของกาว

สำหรับบรรดาของคุณที่ดีกว่าด้วยไม้กาวและ / หรือเล็บฉันได้แนบรุ่นของการออกแบบโดยไม่มีรูสกรูทั้งหมด

แม้จะมีความยากลำบากผลลัพธ์ที่ได้คือค่อนข้างเรียบ

ขั้นตอนที่ 10: ซอฟต์แวร์และการทดสอบ

ดาวน์โหลดซอฟต์แวร์ต่อไปนี้เพื่อให้คอนโทรลเลอร์ทำงานกับ Kerbal Space Program:

ปลั๊กอิน KSP:

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

รหัส Arduino:

ใช้ Arduino IDE เพื่ออัพโหลดรหัสไปยัง Arduino Mega ในคอนโทรลเลอร์ของคุณ

ดูที่ด้านล่างขวาของ Arduino IDE เพื่อดูว่าพอร์ตอนุกรมใดที่คอนโทรลเลอร์เปิดอยู่ (เช่น /dev/cu.usbmodem1421) เปิดไฟล์ config.xml จากไดเรกทอรีปลั๊กอินและตรวจสอบให้แน่ใจว่าพอร์ตของคุณเต็มแล้วตอนนี้คุณก็พร้อมแล้ว!

คุณสามารถใช้โหมดแก้ไขข้อบกพร่องโดยใส่สวิตช์เปิด / ปิดขนาดเล็กด้านซ้ายไว้ในตำแหน่ง ON จอ LCD ควรแสดงตัวอักษรจำนวนหนึ่ง ตัวอักษรแต่ละตัวแทนปุ่มหรือสวิตช์และสลับระหว่างตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อคุณกดปุ่มหรือสลับสวิตช์ การตั้งค่าสวิตช์ xyz เป็น Xyz (เปิด / ปิด / ปิด) จะแสดงค่าตัวเลื่อนเค้น xYz แสดงค่าจอยสติ๊กสำหรับจอยสติ๊กการแปล (ซ้าย) xyZ สำหรับจอยสติ๊กการหมุน (ขวา)

โหมด LCD

สามารถเลือกโหมดการแสดงผลต่อไปนี้สำหรับการแสดงผลบน LCD โดยใช้สวิตช์ x, y และ z

โหมด TakeOff: Suface Velocity / Acceleration (G)

โหมด Orbit: Apoapsis + Time to Apoapsis / Periapsis + Time ถึง Periapsis

โหมดการซ้อมรบ: ใช้เวลาในการซ้อมรบต่อไป / เหลือ Delta-V สำหรับโหนดถัดไป

โหมด Rendezvous: ระยะทางไปยังเป้าหมาย / ความเร็วเทียบกับเป้าหมาย

โหมดป้อนข้อมูลซ้ำ: เปอร์เซ็นต์ความร้อนสูงเกินไป (สูงสุด) / การลดความเร็ว (G)

โหมดการบิน: ระดับความสูง / มัค

โหมดการลงจอด: เรดาร์ระดับความสูง / ความเร็วแนวตั้ง

โหมดพิเศษ: ยังไม่ได้ใช้งาน (ยัง)

หากต้องการดูโหมดการทำงานที่แตกต่างกันให้ดูวิดีโอที่ส่วนท้ายของคำแนะนำ

ขั้นตอนที่ 11: ไปยังดวงจันทร์!

ดับไฟ KSP โหลดเรือที่คุณชื่นชอบหรือสร้างขึ้นมาใหม่และออกไป!

เคล็ดลับ:

  • ใช้กลุ่มการกระทำที่กำหนดเอง 5 สำหรับบันไดของคุณ
  • ใช้กลุ่มปฏิบัติการที่กำหนดเอง 6 สำหรับแผงโซลาร์เซลล์ของคุณ
  • ใช้กลุ่มแอ็คชั่นที่กำหนดเอง 7 สำหรับการกระโดดร่มหรือตกราง
  • กำหนดระบบเรียกใช้การเรียกใช้งานและตัวถอดรหัสที่เหมาะสมให้กับกลุ่มแอ็คชัน Abort
  • อย่าลืมว่าคุณจำเป็นต้องวางแขนปุ่ม

รองชนะเลิศอันดับที่ใน

การประกวด Arduino 2017

รองชนะเลิศอันดับที่ใน

การประกวดผู้เขียนครั้งแรก 2018