เครื่องออกกำลังกาย USB Game Controller: 8 ขั้นตอน (พร้อมรูปภาพ)
เครื่องออกกำลังกาย USB Game Controller: 8 ขั้นตอน (พร้อมรูปภาพ)
Anonim
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller
เครื่องออกกำลังกาย USB Game Controller

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

ฮาร์ดแวร์หลักคือบอร์ดพัฒนา STM32F103C8 "เม็ดสีดำ" ราคา $2 ที่มีแกน stm32duino Arduino และไลบรารี USB HID ที่ฉันพัฒนาโดยใช้แกนแยกหลักของ libarra111 STM32F1 นั้นเร็วและราคาถูก และรองรับ USB ความเร็วสูง จึงเหมาะอย่างยิ่งสำหรับโปรเจ็กต์นี้

ในการใช้งาน คุณต้องแตะเซ็นเซอร์การหมุนของจักรยานทรงวงรีหรือจักรยานออกกำลังกาย (หากเซ็นเซอร์การหมุนของคุณทำงานแตกต่างจากเซ็นเซอร์ในเครื่องของเรา - ประมาณ 3v แอ็คทีฟต่ำ - คุณอาจต้องแก้ไขวงจรและ/หรือรหัส).

ความเร็วในการหมุนวงรี/จักรยานจะควบคุมตัวเลื่อนตัวควบคุม นอกจากนี้ คุณเสียบคอนโทรลเลอร์ Wii Nunchuck หรือ Gamecube มาตรฐานเข้ากับอะแดปเตอร์สำหรับการเคลื่อนไหวของจอยสติ๊ก ปุ่ม ฯลฯ มีโหมดการควบคุมที่แตกต่างกันมากมาย ตัวอย่างเช่น เด็กเล็กอาจต้องเพิ่มความเร็วเล็กน้อย และบางเกมอาจใช้รูปแบบการควบคุมที่ต่างออกไป มีแผนการควบคุมในตัวจำนวนมากในซอฟต์แวร์ และส่วนอื่นๆ สามารถเพิ่มลงในโค้ดได้อย่างง่ายดาย อุปกรณ์สามารถจำลองตัวควบคุมเกม USB, คีย์บอร์ด, เมาส์, คอนโทรลเลอร์ XBox 360 หรือการรวมกันของสามตัวแรก

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

อะแดปเตอร์ทำงานเป็นคอนโทรลเลอร์ USB มาตรฐาน คุณจึงใช้กับ Windows, Linux, OS X, Android เป็นต้น

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

ค่าใช้จ่ายต่ำกว่า 10 เหรียญบวกกับเคส (ฉันมีการออกแบบที่พิมพ์ได้ 3 มิติ) สายไฟและตัวประสาน อะไหล่:

  • คณะกรรมการพัฒนา "Black Pill" stm32f103c8 ($ 2 ใน Aliexpress)
  • ซ็อกเก็ต Gamecube ($ 1.60 ใน Aliexpress สำหรับสายต่อ Gamecube ที่สามารถตัดได้)
  • กระดานฝ่าวงล้อม Nunchuck ($ 0.51 ใน Aliexpress; ค้นหา Wiichuck)
  • สวิตช์สลับสองตำแหน่งขนาดเล็ก (ต่ำกว่า $1 ใน Aliexpress)
  • ตัวเลือกคอนเนคเตอร์ตัวผู้และตัวเมียแบบสองตัวนำที่คุณเลือก (ประมาณ 1 ดอลลาร์ใน Aliexpress หากคุณใช้คอนเนคเตอร์แบบบาร์เรลขนาด 5.5 มม.); คุณต้องมีขั้วต่อตัวเมียหนึ่งตัวต่อเครื่องออกกำลังกาย
  • สวิตช์สัมผัส 2 อัน (ต่ำกว่า $0.50 ใน Aliexpress)
  • ไฟ LED สีแดง 4 ดวง (ต่ำกว่า $0.50 ใน Aliexpress คุณสามารถใช้หน้าจอ LCD ขนาดเล็กของ Nokia ได้)
  • ตัวเก็บประจุ: อิเล็กโทรไลต์ 10uF และตัวเลือก 100nF
  • ตัวต้านทาน: 1 x 100K, 2 x 10K, 1 x 1K, 4 x 220ohm
  • บอร์ดโปรโตขนาดเล็ก (ต่ำกว่า $1 ใน Aliexpress)

Nunchuck นั้นดีสำหรับการใช้งานด้วยมือเดียวกับเครื่องเดินวงรี บนจักรยานออกกำลังกาย คุณสามารถใช้อะแดปเตอร์แบบสองมือเช่น Gamecube ได้ หากคุณต้องการใช้ตัวเลือกการควบคุมอย่างใดอย่างหนึ่งจากสองตัวเลือกนี้ คุณสามารถใช้การเชื่อมต่อน้อยลงได้

คุณต้องใช้คอมพิวเตอร์ หัวแร้ง และมัลติมิเตอร์ คุณจะต้องใช้บริดจ์ UART-to-USB (ฉันใช้ Arduino Mega ที่ฉันมีสำหรับโปรเจ็กต์อื่น หรือคุณสามารถซื้อโมดูล CP2102 ใน Aliexpress ในราคาหนึ่งดอลลาร์) เพื่อติดตั้ง bootloader บนเม็ดยาสีดำของคุณเพื่อใช้กับ สภาพแวดล้อม Arduino หรืออย่างอื่นคุณสามารถใช้จ่ายเพิ่มอีกสองสามเหรียญและรับบอร์ดพัฒนาของ RobotDyn ที่มี Arduino bootloader ที่โหลดไว้ล่วงหน้า

ให้ฉันเสริมว่าฉันกำลังเข้าร่วมการแข่งขัน Wheels เพราะเป็นวิธีการเชื่อมโยงล้อเสมือนจริงในเกมแข่งรถบนคอมพิวเตอร์กับล้อทางกายภาพของจักรยานออกกำลังกายและวงรี

ขั้นตอนที่ 1: แตะเข้าไปใน Rotation Sensor

แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน
แตะที่เซ็นเซอร์การหมุน

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

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

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

หากคุณคิดว่ามีโอกาสที่สายไฟใดๆ ในคอนโซลที่คุณกำลังติดต่อกับเป็นไฟฟ้ากระแสสลับ ผมขอแนะนำให้หยุดเว้นเสียแต่ว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่จริงๆ โชคดีที่จักรยานออกกำลังกายของเราใช้พลังงานจากแบตเตอรี่และเสียบปลั๊กรูปไข่ของเราเข้ากับหูดที่ผนัง ดังนั้นจึงมี DC ประมาณ 12V รอบคอนโซลเท่านั้น

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

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

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

เคล็ดลับอื่น คุณอาจสามารถระบุตำแหน่งในการหมุนแป้นเหยียบที่เซ็นเซอร์การหมุนทริกเกอร์ได้ ตัวอย่างเช่น เครื่องของคุณอาจกะพริบบางอย่างบนหน้าจอ หรืออัปเดตการแสดงความเร็ว หรือเปิดใช้งานจากโหมดสลีป หรือมีเสียงบี๊บ หากเป็นเช่นนั้น ให้เลื่อนแป้นเหยียบออกไปประมาณ 1/3 ของการหมุน จากนั้นมองหาสายไฟที่มีระหว่างกัน 3-5V และทดสอบสายไฟเหล่านั้นโดยเลื่อนแป้นเหยียบไปยังตำแหน่งที่เซ็นเซอร์ทำงาน

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

เมื่อคุณระบุสายไฟได้แล้ว ให้จดบันทึกไว้ ตรวจสอบให้แน่ใจว่าคุณทราบ:

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

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

ขั้นตอนที่ 2: เตรียมคณะกรรมการพัฒนา

เตรียมคณะกรรมการพัฒนา
เตรียมคณะกรรมการพัฒนา
เตรียมคณะกรรมการพัฒนา
เตรียมคณะกรรมการพัฒนา
เตรียมคณะกรรมการพัฒนา
เตรียมคณะกรรมการพัฒนา

ประสานหมุดจัมเปอร์กลางหกตัวเข้ากับเม็ดสีดำของคุณ

หากคุณมีบอร์ด RobotDyn ที่มี Arduino bootloader ให้เชื่อมต่อ B0- และ B1- กับหมุดตรงกลาง เท่านี้คุณก็เสร็จสิ้นขั้นตอนแล้ว

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

หากคุณมี Uno หรือ Mega ให้ใส่สายจัมเปอร์ระหว่าง RESET และ GROUND สิ่งนี้จะเปลี่ยน Arduino ให้เป็นบริดจ์ UART เฉพาะกับ USB ยกเว้นว่าพิน TX / RX นั้นตรงกันข้ามกับวิธีที่มักจะอยู่บนตัวเชื่อมต่อ

ดาวน์โหลดไบนารี bootloader คุณต้องการ generic_boot20_pb12.bin บน Windows ให้ติดตั้ง Flash Loader Demonstrator ของ ST บน Linux (และอาจเป็น OS X และแม้แต่ Windows หากคุณต้องการเครื่องมือ commandline) ให้ใช้สคริปต์ python นี้แทน แต่คำแนะนำของฉันจะใช้สำหรับ Windows

ทำการเชื่อมต่อต่อไปนี้:

  • PA9 ถึง UART bridge RX ("TX" หากคุณใช้เคล็ดลับ Arduino)
  • PA10 ถึง UART bridge TX ("RX" หากคุณใช้เคล็ดลับ Arduino)
  • G ไปยังพื้นสะพาน UART

ฉันชอบใช้เคล็ดลับโพรบลอจิกเพื่อทำการเชื่อมต่อที่ด้าน STM32 แต่คุณยังสามารถบัดกรีในสายบางเส้นที่คุณสามารถตัดออกได้ในภายหลัง (หรือยกเลิกการบัดกรีหากคุณต้องการให้เรียบร้อย)

เชื่อมต่อบริดจ์ UART กับคอมพิวเตอร์ของคุณ เพิ่มพลังให้กับ Black Pill ผ่านพอร์ต USB (จะดีที่สุดถ้าคุณเชื่อมต่อกับเครื่องชาร์จมากกว่าที่คอมพิวเตอร์ เนื่องจากคอมพิวเตอร์มักจะบ่นเกี่ยวกับอุปกรณ์ USB ที่ไม่รู้จัก) เริ่มตัวสาธิต Flash Loader เลือกพอร์ต COM สำหรับบริดจ์ UART ของคุณ เลือก "ลบการป้องกัน" หากมี เลือกรุ่นแฟลช 64kb แทนที่จะเป็นรุ่นแฟลช 128kb และอัปโหลดไบนารี bootloader

เปิดเครื่องทุกอย่างแล้วย้ายจัมเปอร์จาก B0+/center เป็น B0-/center ตอนนี้คุณมี bootloader ที่สามารถใช้กับ Arduino IDE ได้แล้ว

ขั้นตอนที่ 3: เตรียม Stm32duino ใน Arduino IDE

เตรียม Stm32duino ใน Arduino IDE
เตรียม Stm32duino ใน Arduino IDE
เตรียม Stm32duino ใน Arduino IDE
เตรียม Stm32duino ใน Arduino IDE

ฉันถือว่าคุณติดตั้ง Arduino IDE ล่าสุดแล้ว

ในเครื่องมือ | บอร์ด | Boards Manager ติดตั้งการสนับสนุนสำหรับ Arduino Zero (เพียงแค่ใส่ Zero ในการค้นหา คลิกที่รายการที่พบ แล้วจึงติดตั้ง) ใช่ คุณไม่ได้ใช้งาน Zero แต่จะติดตั้งคอมไพเลอร์ gcc ที่ถูกต้อง

ถัดไป ดาวน์โหลด stm32duino core ใน Windows ฉันแนะนำให้ดาวน์โหลดไฟล์ zip เนื่องจากเมื่อฉันเช็คเอาท์ไฟล์ (เป็นที่ยอมรับด้วย svn) ฉันมีปัญหาเกี่ยวกับการอนุญาตบางอย่างกับไฟล์ในไดเร็กทอรีเครื่องมือ Windows ที่ต้องแก้ไข ใส่สาขาใน Arduino/Hardware/Arduino_STM32 (เพื่อให้คุณมีโฟลเดอร์เช่น Arduino/Hardware/Arduino_STM32/STM32F1 เป็นต้น) บน Windows ให้ติดตั้งไดรเวอร์โดยเรียกใช้ drivers\win\install_drivers.bat

ติดตั้งไลบรารี USBHID ของฉัน: ไปที่ Sketch | รวมห้องสมุด | จัดการไลบรารี และค้นหา USBHID คลิกที่มันและคลิกที่ติดตั้ง

ติดตั้งไลบรารี GameControllersSTM32 ของฉัน: ไปที่ Sketch | รวมห้องสมุด | จัดการไลบรารี และค้นหา GameControllers คลิกที่มันและคลิกที่ติดตั้ง

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

วงจร
วงจร
วงจร
วงจร
วงจร
วงจร
วงจร
วงจร

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

นอกจากนี้ยังมีอินพุต I2C จาก Nunchuck และตัวเชื่อมต่อไปยังคอนโทรลเลอร์ Gamecube หากคุณต้องการสนับสนุนเพียงหนึ่งในสองสิ่งนี้ คุณสามารถแก้ไข gamecube.h ในแบบร่างและช่วยตัวเองในการบัดกรี

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

ตัดสาย Gamecube คุณต้องการทำงานกับด้านซ็อกเก็ต อันที่คอนโทรลเลอร์ของคุณจะเสียบเข้าไป ปอกสายเคเบิลสำหรับเชื่อมต่อ

ตอนนี้ทำการเชื่อมต่อเหล่านี้ตามแผนภาพวงจร:

  • ตัวเก็บประจุ 10uF ระหว่าง 3.3v กับกราวด์ (ด้านลบของอิเล็กโทรไลต์ใดๆ ที่กราวด์) สิ่งนี้ควรอยู่ใกล้กับชิปมากที่สุด ดังนั้นฉันจึงบัดกรีมันบนบอร์ดพัฒนาแทนที่จะใช้โปรโตบอร์ด สำหรับการวัดที่ดี คุณสามารถเพิ่ม 100nF ได้เหมือนที่ฉันทำ แต่ฉันไม่แน่ใจว่าจำเป็น
  • ซ็อกเก็ต Gamecube #2 -- A6 บนบอร์ด stm32
  • ตัวต้านทาน 1Kohm ระหว่างซ็อกเก็ต Gamecube #2 และ 3.3V บนบอร์ด stm32 (หรือบนโปรโตบอร์ด)
  • ซ็อกเก็ต Gamecube #3 และ #4 - กราวด์บนบอร์ด stm32
  • ซ็อกเก็ต Gamecube #6 -- 3.3V บนบอร์ด stm32 (หรือบนโปรโตบอร์ด)
  • LED ในซีรีย์ที่มีตัวต้านทาน 220ohm (หรือใหญ่กว่า) ระหว่าง A0 บนบอร์ด stm32 และ 3.3V (ปลายลบ (แบน) ถึง PA0; ขั้วบวกถึง 3.3V)
  • ทำซ้ำด้วย LED + ตัวต้านทานระหว่าง A1 และ 3.3V, A2 และ 3.3V และ A3 และ 3.3V
  • สลับชั่วขณะระหว่าง A5 บนบอร์ด stm32 (โหมดเพิ่มขึ้น) และ 3.3V และอีกโหมดหนึ่งระหว่าง A4 และ 3.3V (โหมดลดระดับ); สวิตช์นี้จะเพิ่มจำนวนโหมด
  • สลับสวิตช์ระหว่าง A8 และ 3.3V
  • กราวด์เครื่องออกกำลังกาย -- stm32 กราวด์
  • สัญญาณบวกของเครื่องออกกำลังกาย -- stm32 board A7 (โปรดทราบว่า A7 นั้นดีสำหรับ 3.3V เท่านั้น หากเครื่องออกกำลังกายของคุณคือ 5V ให้ใช้ A9 และแก้ไข gamecube.h)
  • กราวด์ Nunchuck (ติดฉลาก - บนบอร์ดอะแดปเตอร์ของฉัน) -- stm32 กราวด์
  • Nunchuck +3.3V (ติดฉลาก +) -- stm32 3.3V
  • Nunchuck SDA (ป้ายกำกับ D) -- stm32 B7
  • Nunchuck SCL (ติดฉลาก C) -- stm32 B6
  • ตัวต้านทาน 10Kohm ระหว่าง Nunchuck SDA และ 3.3V บนบอร์ด stm32
  • ตัวต้านทาน 10Kohm ระหว่าง Nunchuck SCL และ 3.3V บนบอร์ด stm32

ขั้นตอนที่ 5: ติดตั้ง Sketch

ติดตั้ง Sketch
ติดตั้ง Sketch
ติดตั้ง Sketch
ติดตั้ง Sketch

ดาวน์โหลดร่าง Gamecube USB Adapter ของฉันแล้วโหลดลงใน Arduino IDE มีตัวเลือกบางอย่างในการควบคุมใน gamecubecontroller.h:

  • ลบ // ข้างหน้า #define ENABLE_EXERCISE_MACHINE (ทุกคนต้องทำสิ่งนี้)
  • หากคุณต้องการย้ายการเชื่อมต่อเครื่องออกกำลังกายไปที่ A9 ให้เปลี่ยน PA7 เป็น PA9 ในบรรทัด const uint32_t rotationDetector = PA7
  • หากชีพจรการตรวจจับการหมุนของเครื่องออกกำลังกายของคุณสูง ให้เปลี่ยน #define ROTATION_DETECTOR_CHANGE_TO_MONITOR FALLING เป็น #define ROTATION_DETECTOR_CHANGE_TO_MONITOR RISING
  • หากคุณไม่ต้องการใช้ Nunchuck ให้วาง // ไว้ข้างหน้า #define ENABLE_NUNCHUCK
  • หากคุณไม่ต้องการใช้คอนโทรลเลอร์ Gamecube ให้วาง // ไว้ข้างหน้า #define ENABLE_GAMECUBE

ใน Arduino IDE ให้เลือก Tools | คณะกรรมการ | ซีรี่ส์ STM32F103C ทั่วไป

กดปุ่มอัพโหลดลูกศรขวา โปรดทราบว่าคุณอาจต้องกดปุ่มรีเซ็ต (หรือถอดปลั๊ก/เสียบปลั๊ก) บอร์ดในเวลาที่เหมาะสม หากคุณได้รับข้อความว่าไม่รู้จักบอร์ด

ขั้นตอนที่ 6: การเชื่อมต่อเครื่องออกกำลังกาย

การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย
การเชื่อมต่อเครื่องออกกำลังกาย

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

ขั้นตอนที่ 7: กรณีโครงการ

กรณีโครงการ
กรณีโครงการ
กรณีโครงการ
กรณีโครงการ
กรณีโครงการ
กรณีโครงการ
กรณีโครงการ
กรณีโครงการ

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

เท้าได้รับการออกแบบเพื่อกาว (งาน superglue) ที่ด้านล่าง และมียางเหนียวติดอยู่ในนั้น

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

ขั้นตอนที่ 8: ใช้

ใช้
ใช้
ใช้
ใช้
ใช้
ใช้
ใช้
ใช้

ปุ่มสองปุ่มสามารถสลับไปมาระหว่างโหมดการจำลองที่แตกต่างกันได้ถึง 16 โหมด (จริงๆ แล้วคุณสามารถมีได้มากกว่านั้น แต่ในโปรเจ็กต์มีไฟ LED เพียงสี่ดวงเพื่อแสดงหมายเลขโหมด) โหมดการจำลองถูกกำหนดไว้ใน gamecubecontroller.h ในแบบร่าง สำหรับเกมส่วนใหญ่ คุณสามารถใช้โหมด 1 จอยสติ๊กตัวเลื่อนแบบรวมที่ความเร็ว 100% จอยสติ๊กที่จำลองมีตัวเลื่อน (อันที่จริงมีตัวเลื่อนสองตัว แต่ทั้งคู่ทำในสิ่งเดียวกัน) ที่ควบคุมโดยการหมุนเครื่องออกกำลังกาย ปุ่มและจอยสติ๊กควบคุมโดยตัวควบคุม Gamecube หรือ Nunchuck บน Windows บางเกมรองรับคอนโทรลเลอร์ XBox 360 แต่ไม่รองรับจอยสติ๊ก USB สำหรับผู้ที่ใช้โหมด 13 (กดปุ่มลงจากโหมด 1)

โหมด 9 และ 10 ช่วยให้คุณเหยียบช้าลงและยังคงมีอาการกดทับแบบเลื่อนได้เต็มที่ ซึ่งดีสำหรับเด็ก ๆ หรือสำหรับเครื่องออกกำลังกายที่ตั้งไว้สำหรับแรงต้านที่สูงขึ้น คุณยังสามารถปรับความเร็วได้ใน exercisemachine.ino

มีโหมดการจำลองอื่น ๆ อีกมากมาย ข้อมูลอ้างอิงสำหรับพิมพ์รวมอยู่ใน modelist.pdf พร้อมภาพร่าง

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

หากต้องการย้อนกลับ ให้พลิกสวิตช์สลับทิศทางบนกล่องอะแดปเตอร์

บน Windows ให้เรียกใช้ joy.cpl เพื่อปรับเทียบและดูว่าสิ่งต่างๆ ทำงานอย่างไร เนื่องจากการปรับเทียบจอยสติ๊กที่จำลองนั้นเป็นเรื่องน่ารำคาญที่ต้องเหยียบให้เร็ว จึงมีวิธีโกงการสอบเทียบ บนตัวควบคุม Gamecube หากคุณอยู่นิ่งประมาณ 10 วินาที คุณสามารถเริ่มใช้ปุ่มไหล่เพื่อควบคุมแถบเลื่อนจอยสติ๊กที่จำลองได้ ด้วย Nunchuck ในขณะที่คุณกดปุ่มโหมดลบค้างไว้ คุณสามารถใช้จอยสติ๊กขึ้น/ลงเพื่อควบคุมแถบเลื่อนจำลองแทนได้

หากคุณต้องการ GUI สำหรับการสลับโหมดการจำลอง บน Windows สเก็ตช์จะมี mode.py ซึ่งเป็นสคริปต์หลามที่มี GUI สำหรับสลับโหมด คุณยังสามารถเรียกใช้ mode.py ในแบตช์ไฟล์ที่เปิดเกมได้

สองเกมที่ฉันพบว่าทำงานได้ดีกับเครื่องออกกำลังกายคือ Toybox Turbos และ SuperTuxCart (ฟรี)

อแด็ปเตอร์ยังมีฟีเจอร์การจำลองอื่นๆ มากมาย ตัวอย่างเช่น คุณสามารถใช้เป็นอะแดปเตอร์ Nunchuck หรือ Gamecube Controller ตรงไปตรงมา จำลองจอยสติ๊ก แป้นพิมพ์ (เช่น ลูกศร/WASD) และ/หรือเมาส์ มีโหมดมากมายอยู่ใน gamecubecontroller.h คุณยังสามารถเสียบแพดที่เข้ากันได้กับ Dance Dance Revolution Gamecube/Wii และใช้สิ่งนั้นเพื่อเล่นเกมที่ไม่ได้ออกแบบมาสำหรับมัน เช่น Tetris เพื่อความสนุกสนานและการออกกำลังกายเพิ่มเติม