ก่อนอื่นขอโทษด้วยถ้ามีข้อความผิดพลาดนะ (พี่ไม่ใช่เจ้าของภาษา)
จุดเริ่มต้น
ในโปรเจคนี้ พี่ตั้งใจจะสร้าง Cappy จากเกม Super Mario Odyssey ขึ้นมา พี่คิดว่านี่น่าจะเป็นโปรเจคแรกที่ทั้งง่ายและสนุกไอเดียหลักของพี่คือ ถ้าเราผูกเชือกเข้ากับมอเตอร์ และอีกข้างผูกกับหมวก พอเปิดมอเตอร์หมวกก็จะหมุนรอบตัวมันเอง ดังนั้น ถ้าพี่สามารถติดตั้งกลไกนี้ไว้บนหัวได้ หมวกก็จะหมุนรอบตัวพี่เหมือนในเกมเลย
หลังจากทดลองไปหลายรอบ นี่คือผลลัพธ์สุดท้าย (อยากดูวิดีโออื่นๆ ลองไปหาดูในช่องของพี่ได้นะ):
หลักการทำงาน
สุดท้ายมันต้องใช้มอเตอร์ถึง สองตัว ตัวหนึ่งรับผิดชอบเรื่อง การหมุน และอีกตัวสำหรับ รอกดึง เมื่อทำงานร่วมกัน มันทำให้พี่ทำท่าทาง โจมตีแบบหมุน และ โจมตีปกติ ได้ เพื่อตรวจจับว่าหมวกอยู่บนหัวหรือไม่ พี่ใช้ เซ็นเซอร์รับแสงอินฟราเรด (IR light sensor) ร่วมกับพื้นผิวสีขาวที่ติดไว้ใต้หมวก (วิธีนี้ทำให้มีปัญหาตามมาทีหลังนิดหน่อย) พี่เริ่มต้นด้วยการทำต้นแบบบน Arduino UNO แต่ก็เปลี่ยนมาใช้ Arduino Nano เพื่อลดน้ำหนักและขนาดลง พี่ก็เริ่มต้นใช้ แบตเตอรี่ 9v ซึ่งก็ต้องอัพเกรดในภายหลังเหมือนกัน เพื่อติดตั้งทั้งหมดบนหัว พี่ซื้อหมวกกันน็อกมาแล้วแกะส่วนในออกจากเปลือกพลาสติก (ส่วนนี้ก็มีประโยชน์มากทีเดียว)

ท่าโจมตีแบบหมุน
ท่าตอนนี้หมวกจะเริ่มหมุนรอบตัวคุณ จากนั้นรอกจะยืดออกเพื่อให้หมวกห่างจากตัวคุณมากขึ้น แล้วก็ดึงกลับมา สุดท้ายมอเตอร์อีกตัวก็หยุดหมุน นี่คือฟีเจอร์หลักของสิ่งประดิษฐ์ชิ้นนี้ และกลายเป็นส่วนที่ซับซ้อนที่สุดด้วย ปัญหาแรกเกิดขึ้นทันทีที่พี่ผูกหมวกเข้ากับเชือก มอเตอร์ซึ่งอาจจะเล็กเกินไปสำหรับงานนี้ หมุนหมวกจริงๆ หรือแม้แต่หมวกกระดาษไม่ได้ พี่เลยเพิ่ม แบตเตอรี่อีกสองก้อน (AA, 1.2v ต่อก้อน) ซึ่งเป็นการดันขีดจำกัด 6v ของมอเตอร์เต็มที่เลยทีเดียว พี่ก็เปลี่ยนจาก Arduino UNO มาเป็น Arduino Nano เพื่อลดน้ำหนักลงนิดหน่อยและเพิ่มพื้นที่สำหรับแบตเตอรี่เพิ่มเติม หลังจากนั้นและผ่านการทดสอบมาเป็นร้อยรอบ มันก็ finally ทำงานได้! พี่ก็ไปต่อกับฟีเจอร์ต่อไป

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

รายละเอียดเทคนิคการลงมือทำ
สมองของโปรเจคนี้คือ Arduino Nano นั่นเองจ้า ตัวโปรเจคนี้ใช้มอเตอร์กับเซ็นเซอร์ IR (อินฟราเรด) ในการขยับและตรวจจับ แต่จริงๆแล้วเราสามารถทำระบบอินเทอร์แอคทีฟแบบนี้ด้วยเซ็นเซอร์ตรวจจับการเคลื่อนไหวได้เหมือนกันนะ ตัวอย่างเช่น เอา MPU6050 6-Axis Gyro/Accelerometer มาติดไว้บนหมวกเพื่อตรวจจับทิศทางและการเคลื่อนไหวของหมวกเลย จากนั้นก็ใช้ข้อมูลจากเซ็นเซอร์นี้เป็นตัวสั่งงานมอเตอร์แทน สร้างประสบการณ์ควบคุมด้วยท่าทางที่ลื่นไหลกว่า โค้ด Arduino ก็จะอ่านค่าจากไจโรและแอคเซลเลอโรมิเตอร์เพื่อตรวจจับท่าทางเฉพาะ เช่น การพุ่งไปข้างหน้าอย่างรวดเร็วแทนการ "ขว้าง" หรือการหมุนตัวเร็วๆแทนการ "หมุนเหวี่ยง" แล้วก็สั่งให้มอเตอร์ทำงานตามนั้น งานนี้จะได้อารมณ์เหมือนเล่นเกมเลยล่ะ
โปรแกรมสุดท้าย
ปิดท้ายโปรเจคนี้ พี่เขียนโปรแกรมให้ทำงานเป็นลำดับ โดยให้การโจมตีทั้งสองแบบถูกกระตุ้นด้วยเซ็นเซอร์แสง IR (ง่ายๆคือเป็น State Machine 4 สถานะ) ลำดับการทำงานเป็นแบบนี้จ้า:
- ยืดรอกออกมา
- รอจนกว่าน้องจะสวมหมวก
- รอจนกว่าน้องจะถอดหมวก
- โจมตีปกติ
- รอจนกว่าน้องจะสวมหมวกอีกครั้ง
- รอจนกว่าน้องจะถอดหมวกอีกครั้ง
- โจมตีแบบหมุนเหวี่ยง
- เริ่มต้นใหม่ทั้งหมดอีกครั้ง
มีปัญหานิดนึงเกี่ยวกับเซ็นเซอร์ IR นะ มันตรวจจับค่าได้ต่างกันไปขึ้นอยู่กับระดับแสงแวดล้อม (แสงในห้อง vs กลางแจ้ง) ดังนั้นค่าตั้งต้นในโปรแกรมและส่วนล่างของหมวกอาจต้องปรับเปลี่ยนตามสถานที่ พี่ไม่ได้แก้ปัญหานี้ให้สมบูรณ์นะ ณ จุดนั้นพี่แค่อยากให้โปรเจคมันเสร็จสักที ฮ่าๆ (รู้สึกกันบ้างมั้ย)
ไอเดียสำหรับการพัฒนาต่อ
โปรเจคนี้ยังมีที่ให้พัฒนาได้อีกเพียบเลยจ้า เพื่อแก้ปัญหาเรื่องแสงแวดล้อม เราอาจใช้เซ็นเซอร์ตรวจจับระยะ (Proximity Sensor) ที่แม่นยำกว่า หรือใช้วิธีตรวจจับการเคลื่อนไหวแบบที่บอกไปข้างต้นก็ได้ ส่วนอัพเกรดอื่นๆ ที่น่าสนใจมีดังนี้:
- Feedback จากการสั่น: เพิ่มมอเตอร์สั่น (Haptic Motor) เข้าไปในหมวก เพื่อให้รู้สึกได้ทางสัมผัสเมื่อมีการโจมตีเกิดขึ้น งานนี้จัดไปวัยรุ่น!
- ระบบไร้สาย: ใส่โมดูล Bluetooth เข้าไป ทำให้หมวกทำงานแบบไร้สายหมดเลย ไม่ต้องมีสายไฟลากตามตัวอีกต่อไป สะดวกขึ้นเป็นกอง
- ตรวจจับการเคลื่อนไหวที่ล้ำขึ้น: การใช้ MPU6050 จริงจังจะทำให้เราควบคุมด้วยท่าทางที่ซับซ้อนและแม่นยำขึ้นได้ แยกความแตกต่างระหว่างแรงขว้างหรือทิศทางการหมุนได้อีกด้วย
หวังว่าน้องๆ จะสนุกกับเนื้อหานี้นะ สู้งานต่อไปนะน้อง! ห้ามช็อตนะตัวนี้