ช่วงกักตัวโควิด-19 นี่มันชิลล์เกิน เลยคิดว่า... ต้องสร้างอะไรซักอย่าง! ก็เลยตัดสินใจทำเมาส์ที่ควบคุมด้วยการหมุนมือของเราเอง
วิดีโอ:
มุมมองของโปรเจกต์
โปรเจกต์ Gyro-mouse นี้คือ Human Interface Device (HID) ระดับเทพ ที่ให้เราควบคุมเคอร์เซอร์เมาส์ของคอมพิวเตอร์ได้ด้วยการเอียงหรือขยับบอร์ด Arduino ไปมา โปรเจกต์นี้เหมาะมากสำหรับงานด้านการช่วยเหลือ (Accessibility), ตัวควบคุม VR หรือจะเป็นอุปกรณ์เกมสุดล้ำก็จัดไปวัยรุ่น
ฮาร์ดแวร์หลัก
- Arduino Leonardo / Micro: บอร์ดสองตัวนี้จำเป็นมากเพราะใช้ไมโครคอนโทรลเลอร์ ATmega32U4 ที่มีระบบสื่อสาร USB ในตัว ทำให้คอมพิวเตอร์มอง Arduino เป็นเมาส์ HID มาตรฐานได้เลย
- เซ็นเซอร์ MPU6050: อุปกรณ์ตรวจจับการเคลื่อนไหว 6 แกน ที่รวมทั้งไจโรสโคป 3 แกนและแอคเซอโรมิเตอร์ 3 แกนไว้ด้วยกัน มันตรวจจับแม้แต่การเอียงหรือหมุนที่เบามากๆ
ทฤษฎีการทำงาน
MPU6050 จะสื่อสารกับ Arduino ผ่าน โปรโตคอล I2C (ใช้พิน 2/SDA และพิน 3/SCL บน Leonardo) จากนั้น Arduino ก็จะอ่านข้อมูลดิบจากไจโร (แกน X และ Y) อย่างต่อเนื่อง
- การเคลื่อนไหวสู่พิกเซล: Arduino จะ "แมป" ความเร็วเชิงมุม (การหมุน) จากไจโรสโคปให้กลายเป็นพิกเซลบนหน้าจอ
- การทำให้ลื่น: เนื่องจากข้อมูลดิบจากไจโรอาจมีสัญญาณรบกวน โค้ดมักจะใช้ฟิลเตอร์ง่ายๆ หรือตั้งค่า Threshold เพื่อป้องกันไม่ให้เคอร์เซอร์ "ลอย" เมื่อเมาส์อยู่นิ่ง
- การส่งข้อมูล: โดยใช้ ไลบรารี
MouseArduino จะส่งแพ็กเก็ตการเคลื่อนไหวไปยัง PC:
Mouse.move(x_val, y_val, 0);
การต่อสายที่ต้องรู้
- VCC/GND: ต่อกับ 5V และ Ground
- SCL/SDA: ต่อกับพิน SCL และ SDA ที่กำหนดไว้บน Arduino ของคุณ (I2C)
- INT: เป็นตัวเลือก มักใช้สำหรับ Interrupt ระดับฮาร์ดแวร์เมื่อข้อมูลพร้อม
แนวทางต่อยอดในอนาคต
- เพิ่มปุ่มกด: เอา Push Button มาต่อกับ Arduino เพื่อใช้เป็นคลิกซ้าย-ขวาของเมาส์
- เลื่อนด้วยแกน Z: ใช้แกน Z ของไจโรมาควบคุมลูกล้อเลื่อน (Scroll Wheel)
- ไร้สายสมบูรณ์แบบ: ใช้โมดูล Bluetooth ส่งข้อมูล HID แบบไร้สาย เพื่อประสบการณ์เมาส์ไร้สายจริงๆ
การสร้าง Gyro-mouse ของตัวเองเป็นวิธีที่เลิศมากในการเข้าใจ การสื่อสาร HID และ การผสานเซ็นเซอร์หลายแกน สู้งานนะน้อง ห้ามช็อตนะตัวนี้!