USBcycle ... มันคืออะไรวะ?

USBcycle คือการแฮกจักรยานให้กลายเป็นเกมคอนโทรลเลอร์ USB ไอเดียคือให้เราปั่นจักรยานไปพร้อมกับเล่นเกมเปิดโลกสองแบบ:
(A) เกมที่ใช้จอยสติ๊กหลายแกน พวกที่ควบคุมพวงมาลัย คันเร่ง และเบรกได้ (เช่น GTA, Euro Truck Simulator 2 หรือเกมจำลองการบิน) บวกกับอินพุตจากคีย์บอร์ดเพิ่มเติม
(B) เกมแนว FPS ที่เดินด้วย WASD เช่น Portal, Talos Principle, Half Life, Dear Esther เป็นต้น
(มีวิดีโอแบบยาวให้ดูด้วยนะ). โปรเจคนี้เน้นไปที่ซอฟต์แวร์มากกว่าฮาร์ดแวร์จ้า พี่ไม่ได้ออกแบบวงจรอิเล็กทรอนิกส์ใหม่ขึ้นมาเลย แค่เอาชิ้นส่วนสำเร็จรูปที่มีขายทั่วไปมาต่อๆ กัน แล้วก็เขียนโค้ด Arduino ให้มันแปลงร่างเป็นเกมคอนโทรลเลอร์ USB ที่ขับเคลื่อนด้วยจักรยาน ความฉลาดทั้งหมดอยู่ที่โค้ดและการดัดแปลงจักรยานนิดหน่อย (ซึ่งก็ดิบๆ หน่อยแหละ)
ในบทความนี้ พี่จะใช้รูปแบบคำพูด (แบบด้านล่างนี่เลย) สำหรับข้อความเสริม, ข้อจำกัดความรับผิดชอบ, และโน๊ตเกี่ยวกับเกมเฉพาะ แทนที่จะใช้สำหรับอ้างอิงคนอื่น เพราะ Project Hub มันให้อิสระในการจัดรูปแบบไม่มาก เลยต้องใช้ให้เต็มที่กับที่มี
ข้อจำกัดความรับผิดชอบ: ตอนที่พี่เขียนบทความนี้ใกล้จะเสร็จแล้ว (ช้าไปหน่อย) ก็คิดได้ว่าควรจะค้นดูซักหน่อยว่ามีใครใช้ชื่อเดียวกันกับโปรเจคที่คล้ายๆ กันมั้ย แล้วก็เจอโปรเจค "USB Cycle" เข้าให้ ซึ่งโลโก้ของเขาก็คล้ายกับของพี่จนน่าอายเชียวล่ะ -- คิดกันไปในทางเดียวกันสินะ โอ้ย -- แต่พี่ไม่รู้ว่าโปรเจคเขาทำอะไร เพราะอ่านภาษาดัตช์ไม่ออก โปรเจคนั้นอยู่ที่เนเธอร์แลนด์ ดูเป็นงานวิชาการ มีพาวเวอร์พอยท์ประกอบ และดูเหมือนจะไม่มีกิจกรรมบนทวิตเตอร์ตั้งแต่ต้นปี 2014 พี่เลยหวังว่าโปรเจคนั้นจะหยุดไปแล้วหรือเสร็จสมบูรณ์แล้ว และทีมงานชาวดัตช์คงไม่รู้สึกว่าพี่มาแย่งภาพลักษณ์หรือความน่าเชื่อถือของเขา พี่แค่อยากจะบอกไว้ตรงนี้ว่า พี่ไม่มีส่วนเกี่ยวข้องกับโปรเจคอื่นที่ชื่อคล้ายกันนี้เลย ไม่เคยรู้มาก่อนเลยตอนที่กำลังสร้าง USBcycle ของพี่ และเพิ่งมาเจอโปรเจคนั้น *หลังจาก* ที่พี่ทำโปรเจคของตัวเองเสร็จและตั้งชื่อแล้ว โปรเจคของดัตช์ดูเหมือนจะใช้ชื่อ *USB Cycle* (มีช่องว่าง) ส่วนของพี่ชื่อ *USBcycle* (ไม่มีช่องว่าง) ถ้าทีมงาน *USB Cycle* มีปัญหากับการที่พี่ใช้ชื่อนี้ หรือโลโก้ของพี่ พี่ยินดีให้พวกเขาติดต่อมาคุยกัน พี่ยินดีที่จะใช้ชื่อสำรองที่พี่คิดไว้ (แม้ว่ามันจะไม่ค่อยดีเท่า) เพื่อความสุภาพ (แต่พี่ก็หวังว่าเขาจะไม่ติดต่อมานะ!)
USBcycle ... ทำไปทำไม?
ปัญหาของแถบชายฝั่ง BC (ที่พี่อยู่) ก็คือหน้าหนาวมันยาว มืด และชื้นมาก... ไม่เหมาะกับการออกกำลังกายกลางแจ้งเลย พี่เลยเฟิร์มหลุดทุกทีหน้าหนาว พี่เคยเป็นคนปั่นจักรยานบ่อยๆ นะ แต่สภาพอากาศบวกกับภูมิประเทศแถวนี้ที่ไม่ค่อยเป็นมิตรกับจักรยาน ทำให้พี่กลายเป็นมันฝรั่งที่นั่งติดโซฟาตลอดหน้าหนาว เออ ที่จริงคือมันฝรั่งติดคอมมากกว่า เพราะพี่ใช้เวลาเล่นเกมหรือเขียนโค้ดมากกว่าดูทีวีอีก
ก็ไม่เห็นจะมีปัญหาอะไรเนอะ? ไปซื้อจักรยานออกกำลังกายมาเลยสิ! ออกกำลังกายในร่ม แรงกระแทกต่ำ ไม่มีฝน ไม่มีโคลน ไม่มีรถติด จะง่ายไปไหน?
ปัญหาของจักรยานออกกำลังกายก็คือมัน *น่าเบื่อ*. คือ น่าเบื่อสุดๆ ไปเลย (สำหรับพี่นะ) มันยากที่จะมีแรงจูงใจมาทำอะไรที่น่าเบื่อขนาดนี้ แม้แค่ 10 นาที ก็ยังยาก แล้วจะให้ทำเป็นชั่วโมงได้ยังไง แต่พี่เล่นเกมคอมพิวเตอร์ที่ดึงดูดความสนใจได้เป็นชั่วโมงๆ โดยไม่เบื่อเลย อืมมม...
ทางออกที่เห็นชัดเจน: ติดจอวิดีโอให้จักรยานออกกำลังกาย แล้วเชื่อมมันกับซอฟต์แวร์เกมที่น่าสนใจซักอย่าง. มันเป็นทางออกที่ชัดเจนมากจนตอนนี้มีคนทำกันหลายกลุ่มแล้ว โปรเจคพวกนี้มีตั้งแต่แพ็คเกจฝึกซ้อมหรือออกกำลังกายลิขสิทธิ์ที่ดูสวยงาม ไปจนถึงผลงาน DIY จากในโรงรถของนักสร้าง พี่แบ่งคร่าวๆ ได้เป็นสามแบบ:
- เครื่องจำลองและขาตั้งสำหรับฝึกซ้อมจักรยานระดับสูง (แบบที่นักแข่งมืออาชีพใช้) จะมีระบบจำลองเส้นทางแข่ง (ของสนามจริงที่นักปั่นกำลังเตรียมตัว) พร้อมกับความต้านทานที่ปรับได้ตามความชันผ่านแอป บางขาตั้งเทรนเนอร์ไฮเทคก็มีจุดยึดที่ยืดหยุ่นได้ ทำให้จักรยานเอียงได้นิดหน่อย รู้สึกเป็นธรรมชาติมากขึ้น เท่มากเลย แต่ว่าจำนวนเส้นทางมีจำกัด, ซอฟต์แวร์เป็นแบบลิขสิทธิ์เฉพาะ, และฮาร์ดแวร์ก็แพงหูฉี่.
- ในโลกของวิชาการและงานต้นแบบ มีคนเก่งๆ เชื่อมจักรยานกับ Google Earth; มีโปรเจคขี่จักรยานเสมือนข้ามประเทศแคนาดาแบบเรียลไทม์ กำลังทำอยู่ โคตรเท่เลย แต่ดูเหมือนจะทำตามที่บ้านยากหน่อย แล้วก็พูดตรงๆ นะ Google Street View (จากที่พี่เคยใช้) มันดูเหมือนสไลด์โชว์มากกว่าการ์ตูนเคลื่อนไหว
- ในตลาดระดับล่าง โปรเจค "จักรยานเกมคอนโทรลเลอร์ USB"เริ่มปรากฏตัวแล้ว; นักสร้างจอมคิดทั้งหลายได้สร้างโปรเจคจักรยาน/เกมคอนโทรลเลอร์ฟรีหรือเชิงพาณิชย์ ขึ้นมา (ปั่นผ่าน Mario Kart สิ! ปั่นผ่านภูมิประเทศที่สร้างขึ้นมาไม่รู้จบ!). นอกจากนี้ยังมีโปรแกรมจักรยานออกกำลังกายสำหรับ iThing/คอมพิวเตอร์ ที่มีเส้นทาง/สนามเสมือนความซับซ้อนต่างๆ กัน. และมีบริษัทหนึ่งกำลังตลาดเกมคอนโทรลเลอร์รูปทรงจักรยาน USB พร้อมเกมง่ายๆ. แต่มันไม่ใช่ของทั่วไป (มันผูกกับอินเตอร์เฟซฮาร์ดแวร์เฉพาะทางและ/หรือเกมลิขสิทธิ์จากผู้ขาย) และมันก็ราคาแพงมากด้วย
ในขณะเดียวกัน พี่มีจักรยานเสือภูเขาเก่าๆ ดีๆ คันหนึ่งที่ไม่ได้ใช้บ่อยแล้ว (เริ่มแก่แล้ว คิดว่าการขี่จักรยานท่ามกลางฝนและความหนาวของหน้าหนาวที่ BC นั้นไม่สนุกอีกต่อไป) และ พี่ก็มีคอมพิวเตอร์เกมมิ่งที่แรงพอตัว (Hackintosh ตระกูล i7 การ์ดจอ GTX 970 พอใช้ได้ถ้ายังอยู่แค่ระดับ 1080p) และ พี่ก็จ่ายค่าลิขสิทธิ์ให้กับเกมจำลองการขับขี่เปิดโลกที่โคตรดีตัวหนึ่ง -- เกมที่สนุกและน่าเล่นจนพี่ใช้เวลาไปแล้วกว่า 300 ชั่วโมง การนั่งติดเก้าอี้ทั้งหน้าหนาว ขับรถบรรทุกเสมือนทั่วยุโรป มันไม่ช่วยให้พี่เฟิร์มขึ้นเลย... แต่แน่นอนว่าเราน่าจะรวมทรัพยากรสามอย่างนี้เข้าด้วยกันเป็นชุดจำลองการขี่จักรยานได้ โดยใช้งบประมาณที่สมเหตุสมผล?
ดังนั้น ตอนต้นปี 2017 พี่เลยตัดสินใจลองดูว่าจะเปลี่ยนจักรยานธรรมดาทั่วไปให้กลายเป็นเกมคอนโทรลเลอร์ USB ได้มั้ย ซึ่งจะทำให้พี่สามารถ *ขี่จักรยาน* แทนที่จะขับรถ ไปบนถนนเสมือนยาวกว่า 45,000 กม. ทั่วยุโรปในเกมจำลองเปิดโลกโปรดของพี่ มันใช้เวลาประมาณ 4 เดือนเพราะพี่เริ่มจากศูนย์จริงๆ (ไม่เคยสร้างอิเล็กทรอนิกส์ DIY มาก่อนเลย นอกจากการประกอบคอมจากชิ้นส่วน, แค่รู้คร่าวๆ ว่า Arduino คืออะไร) แต่สุดท้ายก็สำเร็จ -- และหวังว่าคนอื่นจะตัดสินใจทำแบบเดียวกันจากประสบการณ์ของพี่บ้าง
ผลลัพธ์สุดท้าย: ตัวควบคุมจากจักรยานไปจอยสติ๊กแบบทั่วไป (USBcycle) พร้อมแผงควบคุมผู้ใช้ที่ติดตั้งบนแฮนด์จักรยาน แผงควบคุมผู้ใช้นี้มีปุ่มให้กดเพียบ (36 ปุ่มตอนนับล่าสุด!) พี่ได้ปรับแต่งคอนโทรลเลอร์ของพี่โดยแมปปุ่มต่างๆ กับคำสั่งเฉพาะสำหรับ ETS2 และผลลัพธ์สุดท้ายคือประสบการณ์การท่องเที่ยวด้วยจักรยานเสมือนที่พี่ชอบมาก ซึ่งน่าจะกระตุ้นให้พี่ออกกำลังกายเป็นประจำมากขึ้นในช่วงหน้าหนาวที่ยาวนานของ BC.... และพี่เรียกมันว่า...

Euro Bike Simulator: ส่วนผสมและสูตรการทำ
รายการส่วนผสมทั้งหมด
โลกเปิดให้ปั่นผ่าน:
- เกมจำลองการขับขี่จาก SCS 1 ชุด, Euro Truck Simulator 2 (หรือ American Truck Simulator) เกมนี้มีให้บน OSX, SteamOS และ Linux รวมถึง Windows หาได้ผ่าน Steam เกมหลักราคาแค่ $22 CAD แต่คุณน่าจะอยากได้ DLC ด้วย; ชุด "เต็มอิ่ม" จาก SCS จะราคาประมาณ $60 และคุณสามารถขยายโลกเปิดได้ฟรีด้วยมอดแผนที่จากชุมชน
- บวกกับ: มอดง่ายๆ เพื่อทำให้มุมมองของผู้เล่นเหมือนมุมมองของคนขี่จักรยานบนถนนมากขึ้น พี่สามารถให้มอดนี้กับคุณได้
ฮาร์ดแวร์สำหรับรันโลกเปิดและปั่นผ่านมัน:
- คอมพิวเตอร์เกมมิ่ง 1 เครื่อง ที่สามารถรัน ETS2 หรือ ATS ในระดับคุณภาพกราฟิกที่ทำให้คุณพอใจได้
- จักรยานหรืออุปกรณ์ออกกำลังกาย 1 ชิ้น: จักรยานถนนธรรมดา, จักรยานเสือภูเขา, จักรยานนอน หรืออะไรก็ได้ที่คุณมีอยู่ ซึ่งมีล้อขับเคลื่อนอย่างน้อย 1 ล้อ, อุปกรณ์บังคับเลี้ยว, และคันเบรก ถ้าอุปกรณ์จักรยานของคุณเป็นจักรยานจริง คุณจะต้องมีขาตั้งฝึก (ไม่ต้องหรูมาก พี่ซื้อของถูกจาก Ebay) คุณอาจใช้ขาตั้งแบบโรลเลอร์, แต่พี่คิดว่าคุณจะเสียความสามารถในการบังคับเลี้ยวโดยใช้แฮนด์จักรยานไป -- พี่คิดว่าการบิดแฮนด์ตอนอยู่บนขาตั้งโรลเลอร์น่าจะทำให้ล้มได้ แม้ว่าพี่จะยังไม่ได้ลองด้วยตัวเอง
- ตัวควบคุม 1 ชุด เพื่อเปลี่ยนจักรยานให้เป็น USBcycle:
ตัวควบคุม USBcycle:
- Arduino Leo 2 ตัว
- ฮาร์ดแวร์ที่ประกอบขึ้นมาเพื่อติดตั้งเซ็นเซอร์บนจักรยานให้เหมาะสม; เพราะไม่มีเครื่องพิมพ์ 3D พี่ชอบสร้างของจากโฟมบอร์ด, ไม้อัดบาง, ไม้อัด 1/4 นิ้ว, ไม้เศษ, กาวร้อน, โฟมบรรจุภัณฑ์แบบปิดเซล, ตีนตุ๊กแก, เทปพันสายไฟ ฯลฯ
- สาย USB ยาวๆ, สาย HDMI ยาว, สายเสียงยาว ฯลฯ สำหรับส่งสัญญาณระหว่างคอมพิวเตอร์กับจักรยาน คุณสามารถใช้อุปกรณ์ที่มีแหล่งจ่ายไฟเพื่อขยายความยาวได้เกิน 100 ฟุตถ้าจำเป็น พี่แค่จอดจักรยานไว้ใกล้คอมฯ :-)
- ชิ้นส่วนอิเล็กทรอนิกส์เฉพาะทาง (และราคาแพงกว่า) บางชิ้น: เซ็นเซอร์วัดมุมแบบ Hall (ams 5601 Hall rotary encoder) บนบอร์ด breakout I2C 1 ตัว, แป้นกด Adafruit Trellis (I2C เช่นกัน), ตัวแสดงผล 7 segment พร้อม backpack I2C ของ Adafruit, WiiChuck (อันนี้ก็ I2C) สำหรับเวอร์ชั่น WASD
- ชิ้นส่วนอิเล็กทรอนิกส์ทั่วไป (ราคาถูก) เล็กๆ น้อยๆ หนึ่งถัง -- ตัวต้านทาน (Resistor), ไฟ LED, ตัวเก็บประจุ (Capacitor), ตัวแสดงผล 7 segment, โพเทนชิโอมิเตอร์แบบเส้น (linear pot), ลูกบิด, สวิตช์สไลด์, รีดสวิตช์, เซ็นเซอร์วัดระยะแบบ Hall (linear encoder หรือ proximity sensor), ปุ่มกด, บอร์ดทดลองวงจรแบบไม่ต้องบัดกรี, บอร์ด PCB เล็กสำหรับทำต้นแบบ, สายจัมเปอร์, ขั้วต่อและสาย RJ45 ฯลฯ
- กล่องโปรเจคที่มีแผงควบคุมผู้ใช้ สำหรับติดตั้งบนแฮนด์จักรยาน สร้างขึ้นมาใหม่หรือดัดแปลงจากกล่อง