ภาพรวมโปรเจค
โปรเจคนี้เกิดจากไอเดียผสมผสานเทคโนโลยี Wearable IoT เข้ากับระบบหุ่นยนต์ พี่เลือกใช้ ST SensorTile เป็นหัวใจหลักในการตรวจจับการเคลื่อนไหว ตัวบอร์ดจิ๋วแต่แจ๋วนี้มาพร้อมเซ็นเซอร์ MEMS ประสิทธิภาพสูงที่สามารถคำนวณจลนศาสตร์แบบเรียลไทม์ได้เลย ฟีเจอร์ที่พี่หยิบมาใช้คือความสามารถในการส่งค่ามุม 3 มิติ: Yaw (หมุนซ้ายขวา), Pitch (เงยก้ม), และ Roll (เอียงซ้ายขวา) เพื่อควบคุมแขนกลให้ขยับตามมือเรา
สำหรับน้องๆ ที่สนใจรายละเอียดของเจ้า Development Kit ตัวนี้ สามารถไปหาข้อมูลเพิ่มเติมได้ตามแหล่งต่างๆ นะครับ
ขั้นตอนที่ 1: ออกแบบโครงสร้างและควบคุมเบื้องต้น
พี่เริ่มต้นด้วยการสร้างชิ้นส่วนกลไก โดยดาวน์โหลดไฟล์สำหรับพิมพ์ 3 มิติจากแหล่งต่างๆ
ในโปรเจคนี้ พี่ตัดสินใจลด Degree of Freedom (DOF) ลงหนึ่งระดับ เพื่อให้เหมาะกับการควบคุมผ่านเซ็นเซอร์ MEMS ที่ออกแบบไว้ สำหรับระบบขับเคลื่อน พี่เลือกใช้เซอร์โวมอเตอร์รุ่น MG90s ซึ่งเป็น Metal Gear Micro Servo ที่คุ้มค่าเงินมาก มีเกียร์โลหะทนทาน เหนือกว่าเวอร์ชันพลาสติกทั่วไป และให้แรงบิด (Torque) เพียงพอสำหรับโครงสร้างแขนกลขนาดเล็ก
การควบคุมเฟิร์มแวร์:
พี่เลือก Arduino Nano เป็นไมโครคอนโทรลเลอร์หลัก เพราะขนาดเล็กและมีพอร์ต I/O เพียงพอที่จะขับเซอร์โวมอเตอร์หลายตัวพร้อมกัน พี่ใช้ Servo Library ของ Arduino ในการจัดการสัญญาณ PWM (Pulse Width Modulation) เพื่อควบคุมตำแหน่งของแขนกล
เริ่มแรก พี่เขียนโค้ดเพื่อสร้างอินเทอร์เฟซคำสั่งผ่าน UART (Universal Asynchronous Receiver-Transmitter) ซึ่งทำให้เราสามารถส่งคำสั่งตัวเลขผ่าน Serial Monitor เพื่อทดสอบการเคลื่อนไหวพื้นฐานแบบแม่นยำ (Pick-and-place) ก่อนจะไปต่อกับระบบไร้สายในขั้นตอนต่อไป ใช้เวลาแค่ชั่วโมงเดียวในการเขียนโค้ดให้รับอินพุตจาก UART เพื่อรับคำสั่งจากพอร์ตอนุกรม ซึ่งเตรียมไว้ให้โมดูลบลูทูธใช้สื่อสารในภายหลัง
ขั้นตอนที่ 2: พัฒนาอินเทอร์เฟซผู้ใช้จากเซ็นเซอร์
เมื่อระบบพื้นฐานทำงานได้มั่นคงแล้ว ความท้าทายต่อไปคือทำให้หุ่นยนต์ "เลียนแบบ" การเคลื่อนไหวของมนุษย์ แทนที่จะต้องพิมพ์คำสั่งผ่านคีย์บอร์ด พี่ติดตั้ง ST SensorTile ให้ทำหน้าที่เป็น IMU (Inertial Measurement Unit)
ตรรกะการทำงาน:
- การรับข้อมูล: ST SensorTile ตรวจจับความเร่ง (Accelerometer) และความเร็วเชิงมุม (Gyroscope)
- การรวมข้อมูลเซ็นเซอร์: อัลกอริธึมภายใน SensorTile จะประมวลผลข้อมูลดิบให้เป็นค่า Quaternion หรือมุมออยเลอร์ (Yaw, Pitch, Roll)
- การแมปข้อมูล: ค่ามุมจากเซ็นเซอร์จะถูกส่งผ่าน Bluetooth LE และแปลงเป็นช่วงองศา (0-180 องศา) ที่เซอร์โวมอเตอร์แต่ละตัวเข้าใจ
เพื่อให้แขนกลเคลื่อนไหวได้เป็นธรรมชาติ จำเป็นต้องทำ การปรับเทียบ (Calibration) เพื่อหาจุดศูนย์กลาง (Offset) ของเซ็นเซอร์ และทำให้ค่าตอบสนองเรียบขึ้นมากที่สุด เพื่อลดการสั่นกระตุก (Jitter) ของมอเตอร์ ผลลัพธ์ที่ได้คือแขนกลที่ตอบสนองต่อการเคลื่อนไหวข้อมือของเราอย่างแม่นยำ
กล่องพลาสติกเล็กๆ (นาฬิกาป่ะ?) นั่นแหละคือ ST SensorTile มันส่งค่า yaw, pitch ปัจจุบันไปยังโมดูล BT LE ของพี่ ซึ่งจะส่งคำสั่งต่อไปยัง Arduino Nano เพื่อควบคุมเซอร์โวมอเตอร์ต่อ
Step 3: ระบบสื่อสารไร้สาย Bluetooth Low Energy (BLE)
แกนหลักของการส่งข้อมูลในโปรเจคนี้คือเทคโนโลยี Bluetooth LE นะน้อง ซึ่งมันคนละเรื่องกับบลูทูธธรรมดาเลย ในระบบนี้พี่กำหนดบทบาทของอุปกรณ์ไว้แบบนี้:
- ST SensorTile (โหมด Server/Peripheral): ทำหน้าที่เป็นตัวส่งข้อมูล (คล้ายๆ อุปกรณ์ Wearable ทั่วไป) คอยประกาศข้อมูลทิศทางออกไป
- โมดูล BT LE - BlueNRG-1 (โหมด Client/Central): พี่ใช้โมดูลที่มีชิป ST BlueNRG-1 อยู่ข้างใน ซึ่งเจ้านี่สามารถตั้งค่าให้เป็น "Client" เพื่อไปดึงข้อมูลจาก SensorTile มาได้ แล้วก็ส่งข้อมูลนั้นต่อไปให้ Arduino Nano ผ่านโปรโตคอล Serial อีกที
ข้อจำกัดและแผนพัฒนาต่อ: ตอนนี้แขนกลตัวนี้ใช้เซอร์โวมอเตอร์ 4 ตัว แบ่งเป็น:
- ไหล่ (Shoulder)
- แขนท่อนบน (Arm)
- แขนท่อนล่าง (Forearm)
- กริปเปอร์ (Gripper)
ถึงแม้ว่า SensorTile จะส่งข้อมูลมาได้ครบ 3 แกนก็ตาม แต่เพราะโครงสร้างแขนกลปัจจุบันยังไม่มีเซอร์โวที่ข้อมือ (Wrist) ข้อมูลจากแกนที่สามเลยยังไม่ได้ใช้ประโยชน์เต็มที่ แผนของพี่ต่อไปคือจะพัฒนา แอปพลิเคชันบน Android ขึ้นมาให้เป็นตัวกลางที่ฉลาดขึ้น จะได้เอาแกนการเคลื่อนไหวอื่นๆ มาใช้เพิ่ม และใส่ฟีเจอร์โปรแกรมลำดับการเคลื่อนไหวซับซ้อนผ่านหน้าจอสมาร์ทโฟนได้เลย งานนี้จัดไปวัยรุ่น!