โครงการนี้เริ่มต้นเมื่อฉันตัดสินใจที่จะอัปเดตพวงมาลัยของฉันเพื่อให้เหมาะกับข้อกำหนดการขับขี่ซิมส่วนตัวของฉันสิ่งที่แสดงถึงประสบการณ์การขับขี่ด้วย ความสมจริง และ ไม่มีความหรูหรา
แต่ต้องบอกว่ามันควรจะทำงานกับ ฐาน thrustmaster และคอนโซลที่เข้ากันได้ใด ๆ เนื่องจากมันเลียนแบบพวงมาลัย F1
ฉันตั้งเป้าหมายสูงและทำรายการสิ่งที่ฉันต้องการให้พวงมาลัยพวงมาลัย
ล้อ Steerig ควรมีปุ่มทั้งหมดที่มีอยู่ในคอนโทรลเลอร์ PlayStation DualShock 4
ฉันต้องการรวมการแสดงผลสำหรับการตั้งค่าที่เกี่ยวข้องกับพวงมาลัย (และอาจอัปเดตในอนาคต)
ตัวเข้ารหัสแบบโรตารี่สำหรับการเข้าถึงฟังก์ชั่นการขับขี่ที่จำเป็นอย่างรวดเร็ว (ดุลเบรก, ABS & Traction Control)
ฉันต้องการรวมปุ่มแอ็คชั่นแบบรวม (CAB) ที่กำหนดเองซึ่งจะช่วยให้ฉันสามารถเพิ่มหรือลดลง - ด้วยการคลิกเพียงครั้งเดียว - ฟังก์ชั่นใด ๆ ข้างต้นจำนวนครั้ง x
เนื่องจากฉันไม่สามารถเข้าถึงเครื่องพิมพ์ 3D หรือเครื่องซีเอ็นซีได้ทันทีฉันจึงตัดสินใจไปกับหนึ่งใน 3Drap.it ของการออกแบบ ด้วยความช่วยเหลือของอันโตนิโอเราได้ออกแบบล้อรุ่นใหม่ที่พวกเขามีในสต็อกและอีกอันที่ตรงกับการออกแบบของฉันด้านล่าง
ดู การสาธิตวิดีโอ อย่างรวดเร็วเกี่ยวกับการดำเนินการของล้อ
สติกเกอร์ถูกพิมพ์โดยใช้อิงค์เจ็ทมาตรฐานบนแผ่นสติกเกอร์ A4 จากนั้นปกคลุมด้วยเทปบรรจุโปร่งใส
ดาวน์โหลด แผ่นสติกเกอร์ที่นี่ (PDF)
สิ่งที่สำคัญที่สุดที่ต้องจดจำด้วยฮาร์ดแวร์คือฐาน Thrustmaster ทำให้พวงมาลัยของคุณมีพลัง ~ 3,5V ทุกสิ่งที่คุณใช้ควรจะสามารถทำงานกับแรงดันไฟฟ้านั้นได้
จากจุดเริ่มต้นความคิดคือการสร้างสิ่งนี้รอบ ๆ บอร์ด Arduino Nano ฉันเคยมีประสบการณ์ก่อนหน้านี้กับแพลตฟอร์มนี้และความจริงที่ว่าฉันพบจุดเริ่มต้นบางอย่างบนอินเทอร์เน็ตทำให้การตัดสินใจครั้งนี้เป็นเรื่องง่าย
ถัดไปคือจอแสดงผล ฉันแค่ต้องการให้จอแสดงผลเป็นวิธีการสำหรับฉันในการดูและแก้ไขการตั้งค่าบนล้อ itlef ไม่ใช่เพื่อเชื่อมต่อหรือดู telemetry ดังนั้น LCD Backlit 16x2 ที่เรียบง่ายจะพอเพียง เพื่อให้ GPIO มี จำกัด ฉันยังได้เพิ่มกระเป๋าเป้สะพายหลัง I 2 C
ตัวเข้ารหัสแบบหมุนมีปัญหาเล็กน้อยเนื่องจาก Arduono Nano ไม่รองรับ GPIO จำนวนมาก ในตอนท้ายของวันฉันไปกับสาม Duppanet I 2 C rotary encoder mini v2.1 บอร์ด พวกเขาทำงานได้ดีไม่เคยพลาดการโจมตีและต้องการเพียง 3 GPIO ทั้งหมด
ในที่สุดสำหรับสวิตช์โรตารี่ฉันใช้สวิตช์โรตารี่ขนาดเล็ก 8-way สองอันแต่ละอันขับ GPIO แบบอะนาล็อกเดียวลด GPIO ที่ต้องการมากยิ่งขึ้น ความคิดนั้นค่อนข้างง่ายและคุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่
ฉันต้องการปุ่ม 22 ปุ่มเพื่อดำเนินการทั้งหมดของ Funcitons ที่ฉันวางแผนไว้ ฉันจัดหาพวกเขาจากผู้ขายออนไลน์หลายรายโดยไม่มีใครพูดถึง ปุ่มส่วนใหญ่เป็นสวิตช์ชั่วคราว (ON) ที่ง่าย (เปิด) ยกเว้นการสลับ (ON) -OFF- (เปิด) สำหรับ Paddle Shifters 3drap.it จัดหาไมโครสวิทช์หนักที่พอดีกับสิ่งที่ติดอยู่ในคอก
- นี่คือ รายการที่สมบูรณ์ของฮาร์ดแวร์ ที่ฉันใช้
นี่คือที่ที่ฉันได้รับความช่วยเหลือมากมายจาก ชุมชน (โปรดดูเครดิตด้านล่าง) ฉันทำการวิจัยและพบว่าหลายคนกำลังทำสิ่งที่คล้ายกัน แต่ไม่มีวิธีที่ฉันต้องการให้พวงมาลัยพวงมาลัยทำงาน ดังนั้นฉันจึงติดต่อพวกเขาสองสามคนได้รับข้อมูลเชิงลึกและเริ่มสร้างเวอร์ชันของตัวเอง
จุดเริ่มต้นของฉันคือโพสต์นี้โดย Taras ซึ่งฉันได้รับคู่มือการเชื่อมต่อฮาร์ดแวร์และซอฟต์แวร์พื้นฐานไปยัง T300 นี่เป็นโพสต์แรกที่ฉันอ่านที่นำฉันไปสู่การเดินทางครั้งนี้ Taras ได้รับความช่วยเหลืออย่างมากเนื่องจากเขาตอบคำถามทางเทคนิคทั้งหมดของฉัน
หลังจากนั้นฉันพบ Bits Wheel F1 Bits & Bytes ที่ได้รับการออกแบบทางวิศวกรรมแบบย้อนกลับในโครงการโดย Bram Harmsen ซึ่งรวมถึงปุ่ม L3 & R3 ซึ่งโดยทั่วไปจะไม่สามารถใช้งานได้บนพวงมาลัยอื่น ๆ มีข้อมูลทั้งหมดที่จำเป็นในการทำซ้ำการกระทำทั้งหมดฉันเริ่มรวบรวมทั้งหมดเข้าด้วยกัน
ฉันจะไม่ได้รับรายละเอียดมากเกินไปเกี่ยวกับรหัสนั้นที่นี่ แต่คุณสามารถดูได้ใน repo ฉันได้เพิ่มความคิดเห็นให้ได้มากที่สุด
- ดู ไฟล์ Sketch Arduino
ล้อมีพฤติกรรมเหมือนล้ออื่น ๆ ในตลาด มันเลียนแบบปุ่มคอนโทรลเลอร์ PlayStation Dualshock 4 ทั้งหมด ความแตกต่างที่สำคัญคือ เมทริกซ์ปุ่ม , เมนูแสดงผล , เครื่องเข้ารหัสแบบโรตารี่ และ สวิตช์โรตารี่ (ฟังก์ชั่น CAB)
ในชื่อของการบันทึก GPIO บนนาโนฉันสร้างเมทริกซ์ปุ่ม 5x5 เพื่อรองรับปุ่ม 22 ปุ่มที่ฉันต้องการสำหรับการออกแบบของฉัน (ใช่ฉันมี 3 ให้สำรอง!)
? ️นี่คือ เมทริกซ์ปุ่ม
มีเหตุผลสองสามข้อที่ฉันต้องการแสดง ก่อนอื่น ฉันต้องการวิธีการเปลี่ยนการตั้งค่าล้อโดยไม่จำเป็นต้องเชื่อมต่อกับคอมพิวเตอร์ ประการที่สอง ฉันก็คิดว่ามันดีที่มีนาฬิกาเพื่อแสดงเวลาและวันที่จริง ประการที่สาม การแสดงผลสามารถใช้ในการอัปเดตในอนาคตเพื่อแสดง telemetry ... (แต่ยังไม่มีการวางแผน) และในที่สุด มันก็ดูเท่
จอแสดงผลถูกควบคุมโดยปุ่มแสดงสามปุ่ม:
เมนู: เปิด/ปิดเมนูล้อ
ถัดไป: เลื่อนดูเมนู
เลือก: เลือกตัวเลือก
ตัวเลือกเมนูแสดง:
โหมดล้อ: ตั้งค่าโหมดล้อขึ้นอยู่กับแพลตฟอร์มที่คุณเล่นบน:
โหมด PS - PlayStation (PS)
พีซี - โหมดขั้นสูง (PC)
กำจัด โหมด: ตั้งค่าโหมดของการแสดงผลเมื่อเปิดคีย์พายุ ทุกครั้งที่คุณกดปุ่มจะแสดงฟังก์ชั่น 'ของมัน:
PS - กดปุ่มใด ๆ แสดงฟังก์ชั่นปุ่ม PlayStation (Cross, Triangle, L2, R2, ... ฯลฯ )
GT - กดปุ่มใด ๆ แสดงการแมปปุ่มจำลองตามการตั้งค่าส่วนบุคคลของฉัน (Pit Limiter, HUD, ที่ปัดน้ำฝน, ... ฯลฯ )
KeyPress: แสดงปุ่มคีย์กดบนจอแสดงผล
วันที่/เวลา: แสดงหรือซ่อนวันที่และเวลาบนหน้าจอหลัก
Buzzer - เปิดหรือปิดเสียงออด
Hour Chirp - ใช่มันสามารถส่งเสียงบี๊บทุกชั่วโมงเพื่อติดตามเวลาที่คุณใช้กับ simuator
Display Off - ปิดการแสดงผล (ปุ่มแสดงผลใด ๆ จะเปิดกลับอีกครั้ง)
รันไทม์ - แสดงเวลานับตั้งแต่พวงมาลัยบูตดังนั้นคุณจะรู้ว่ามันทำงานนานแค่ไหน
ตัวเข้ารหัสแบบโรตารี่อนุญาตให้เข้าถึงการปรับ สมดุลเบรก ABS และการปรับ การควบคุมแรงฉุด ขณะขับรถได้อย่างรวดเร็ว ตัวเข้ารหัสแบบโรตารี่นั้นเจ๋งเพราะคุณสามารถปรับแต่งการตั้งค่าได้อย่างรวดเร็วโดยไม่จำเป็นต้องเบี่ยงเบนความสนใจของตัวเองบนเมนูหน้าจอ ฯลฯ
ตัวเข้ารหัสโรตารี่ได้รับการแมปดังนี้:
คำอธิบาย | เน่าซ้าย - | เน่าขวา - |
---|---|---|
ดุลเบรก (BB) | d-pad ลง | d-pad ขึ้น |
ระบบเบรก Antilock (ABS) | L3 | R3 |
การควบคุมแรงฉุด (TC) | d-pad ซ้าย | D-Pad Right |
คำอธิบาย | เน่าซ้าย - | เน่าขวา - |
---|---|---|
ดุลเบรก (BB) | ลง | ขึ้น |
ระบบเบรก Antilock (ABS) | 20 | 21 |
การควบคุมแรงฉุด (TC) | ซ้าย | ขวา |
- นี่คือแผนที่ของ การเชื่อมโยงการควบคุม ที่ฉันใช้ใน Assetto Corsa Competizione สำหรับทั้งสองแพลตฟอร์ม
นี่คือสิ่งที่ฉันคิดในขณะที่ดูวิดีโอที่ Nico Rosberg อธิบายว่าคุณต้องเปลี่ยนสมดุลเบรกจากด้านหน้าไปทางด้านหลังและกลับหลายครั้งบนตักเดียวเพื่อเพิ่มประสิทธิภาพการขับขี่ของคุณ แน่นอนว่าคุณสามารถใช้เครื่องเข้ารหัสแบบโรตารี่ได้ แต่คุณไม่สามารถแม่นยำได้โดยเฉพาะอย่างยิ่งเมื่อความคิดเห็นของแรงเตะบนล้อของคุณ
แนวคิดคือการสร้างปุ่มชุดที่สามารถทำซ้ำการคลิก mutliple ขึ้นอยู่กับการตั้งค่าของคุณ การใช้สวิตช์โรตารี่คุณสามารถตั้งค่าพารามิเตอร์ได้อย่างรวดเร็ว:
โหมด CAB: เลือกฟังก์ชั่นที่คุณต้องการทำซ้ำ (BB, ABS, TC)
ขั้นตอน CAB: เลือกจำนวนครั้งที่คุณต้องการกดปุ่ม (1x-8x)
CAB -/+: เมื่อเลือกปุ่ม CAB -/+ มันจะดำเนินการตามการตั้งค่าที่คุณเลือก
ฉันต้องการให้สิ่งต่าง ๆ มีขนาดกะทัดรัดที่สุดเท่าที่จะเป็นไปได้ดังนั้นจึงจำเป็นต้องมีบอร์ดที่กำหนดเอง ฉันยังต้องการให้สิ่งต่าง ๆ สามารถถอดออกได้และใช้แทนกันได้ในกรณีที่มีความล้มเหลวในอนาคต ความตั้งใจของฉันคือการสร้าง PCB ที่พิมพ์แบบกำหนดเอง แต่มันไม่สมเหตุสมผลในเวลานี้ (อาจจะอยู่ในการอัปเดต?) บอร์ดสุดท้ายประกอบด้วยบอร์ด 5x7 ซม. และฉันใช้ลวดคอร์ทึบเพื่อทำการเชื่อมต่อ
แม้ว่าความพยายามครั้งแรกของฉัน (v1) ทำหน้าที่ได้อย่างสมบูรณ์แบบ แต่ก็ไม่ได้กะทัดรัดเท่าที่ฉันต้องการ ในความเป็นจริงมันไม่พอดีกับตู้พวงมาลัยเลย ฉันออกแบบแทร็กใหม่และสร้างรุ่นที่สอง (V2) ใหม่โดยใช้ตัวเชื่อมต่อ Dupont Male ที่ทำมุมประหยัดพื้นที่จำนวนมากเนื่องจากความสูงที่ จำกัด
- ดู รูปแบบไดอะแกรมสุดท้ายและบอร์ด
หากคุณมีทุกอย่างที่มีสายและเชื่อมต่อเป็นแผนภาพแสดงคุณอาจพร้อมที่จะใช้พวงมาลัย
ในการรวบรวมภาพร่าง Arduino คุณจะต้องติดตั้งไลบรารีเหล่านี้:
eeprom.h - ห้องสมุด EEPROM สำหรับการจัดเก็บการตั้งค่า
LiquidCrystal_I2C.H - Liquid Crystal Display i 2 C Library
i2CenCoderminilib.h - Rotery Encoder I 2 C Library
Timelib.h - Time Library
DS1307RTC.H - DS1307 RTC Library
ทำตามคำแนะนำของไลบรารีเกี่ยวกับวิธีการตั้งค่าเวลาปัจจุบันบน RTC
ทำตามคำแนะนำของห้องสมุดเกี่ยวกับวิธีการเปลี่ยนที่อยู่ของกระดานเข้ารหัสแบบหมุนแต่ละอัน ฉันตั้งไว้ดังนี้:
BB (สมดุลเบรก): 0x20
ABS (ระบบเบรก Antilock): 0x21
TC (การควบคุมแรงฉุด): 0x22
สิ่งหนึ่งที่ อาจต้องใช้การปรับแต่ง คือค่าสวิตช์โรตารี่เนื่องจากค่าที่ส่งคืนนั้นขึ้นอยู่กับแรงดันไฟฟ้าที่ให้มา ตั้งค่า DEBUG_ROTARY_SWITCHES
เป็น true
และ LCD จะแสดงค่าปัจจุบันของสวิตช์ทั้งสอง จดบันทึกตัวเลขเหล่านั้นและอัปเดตในไฟล์ Sketch t300_functions
ภายใต้ฟังก์ชั่น getCABMode()
& getCABSteps()
ฉันได้เพิ่มจอภาพประสิทธิภาพในตัว คุณจะต้องตั้ง DEBUG_LATENCY
เป็น true
และเปิดมอนิเตอร์อนุกรม (115200 baud) เมื่ออัปโหลดแล้วคุณจะดูรายงานแบบเรียลไทม์เกี่ยวกับ Loop Latency ปัจจุบัน
ซอฟต์แวร์รุ่นแรกมีปัญหาค่อนข้างน้อยโดยเวลาแฝงเป็นรุ่นที่ใหญ่ที่สุด ทุกครั้งที่คลิกปุ่มจะพลาดซึ่งในระหว่างการแข่งขันนี่หมายถึงความผิดพลาดในการเปลี่ยนเกียร์หรือการเลื่อนลง สิ่งนี้สร้างขึ้นเพื่อประสิทธิภาพที่ไม่ดี
หลังจากผ่านการทดสอบฉันค้นพบว่ามีการวนซ้ำครั้งเดียววิ่งที่ประมาณ 2800ms พร้อมอาการสะอึกในที่สุดทุกวินาทีที่ประมาณ 106000ms เป็นเรื่องน่าประหลาดใจที่มีบางอย่างที่ทำให้เกิดความล่าช้าบางประเภท ในที่สุดฉันก็ปรับรหัสสำหรับตัวเข้ารหัสโรตารี่และนาฬิกา (RTC)
เนื่องจากจอแสดงผลไม่ได้เพิ่มประสบการณ์การขับขี่มากนักคุณสามารถเลือกที่จะปิดขณะขับรถโดยการกดสวิตช์โรตารี่ ABS ที่ยาวนาน
เวอร์ชันปัจจุบันทำงานได้อย่างราบรื่นและฉันไม่ได้สังเกตเห็นความผิดพลาดระหว่างการแข่ง
พื้นที่เล็ก ๆ สำหรับรับทราบงานที่ทำก่อนหน้านี้โดยผู้อื่น
Taras Ivaniukovich https://rr-m.org/blog/ - สำหรับงานที่เขาแบ่งปันในบล็อกของเขาและความช่วยเหลือที่เขามอบให้ตลอดทาง
Bram Harmsen https://www.thingiverse.com/thing:2813599 - สำหรับย้อนกลับ engineeirng พวงมาลัย F1
MRFID72 - สำหรับวิดีโอ YouTube ที่ยอดเยี่ยมเพื่ออธิบายสวิตช์โรตารี่แบบอะนาล็อก
Danny van den Brande - สำหรับรหัสที่ฉันพบทางออนไลน์ที่ช่วยฉันตั้งค่าเมทริกซ์ปุ่ม
Antonio de Stefano https://3drap.it - สำหรับกล่องพวงมาลัยที่ยอดเยี่ยม
GNU ทั่วไปใบอนุญาตสาธารณะ v3.0 หรือใหม่กว่า