กลับไปหน้ารวมไฟล์
gesture-controlled-robotic-arm-e9da31.md

ภาพรวมโปรเจค

โปรเจคนี้เกิดจากไอเดียผสมผสานเทคโนโลยี 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)

ตรรกะการทำงาน:

  1. การรับข้อมูล: ST SensorTile ตรวจจับความเร่ง (Accelerometer) และความเร็วเชิงมุม (Gyroscope)
  2. การรวมข้อมูลเซ็นเซอร์: อัลกอริธึมภายใน SensorTile จะประมวลผลข้อมูลดิบให้เป็นค่า Quaternion หรือมุมออยเลอร์ (Yaw, Pitch, Roll)
  3. การแมปข้อมูล: ค่ามุมจากเซ็นเซอร์จะถูกส่งผ่าน 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 ตัว แบ่งเป็น:

  1. ไหล่ (Shoulder)
  2. แขนท่อนบน (Arm)
  3. แขนท่อนล่าง (Forearm)
  4. กริปเปอร์ (Gripper)

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

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "Teddy99"
category: "Motors & Robotics"
components:
  - "1x ST Bluenrg-132"
  - "1x ST Sensor Tile"
  - "1x Arduino Nano R3"
description: "แขนหุ่นยนต์ตัวนี้ลอกเลียนแบบการเคลื่อนไหวของมนุษย์ได้ชิ้น! ใช้เซนเซอร์ MEMS กับ e-compass ตรวจจับท่าทาง แล้วส่งสัญญาณผ่าน Bluetooth ไปสั่งมอเตอร์ให้ขยับตามแบบตึงๆ งานนี้ทั้งเทพและวัยรุ่นสุดๆ จัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/5ae1ffbb-cdfa-489e-8940-0d317876124f.h"
  - "https://projects.arduinocontent.cc/5ae1ffbb-cdfa-489e-8940-0d317876124f.h"
encryptedPayload: "U2FsdGVkX186kTz9BpmWWwk/Jggnr/afr8A4Jbjey09GRR2hITmGRi8zMWVR0VAdJzRzs6RIqVc29byVBzQvIY2lzZBE2+EKkjYXDecNGsg="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/gesture-controlled-robotic-arm-e9da31_cover.jpg"
lang: "en"
likes: 8
passwordHash: "dd1d1e3c18720d5a6e7d03b3f67c8adf943a54f9d57b657076436965e8b6d87d"
price: 2450
seoDescription: "Gesture Controlled Robotic Arm mimicking human arm movement using MEMS and e-compass via Bluetooth."
tags:
  - "remote control"
  - "robots"
title: "แขนหุ่นยนต์สั่งการด้วยท่าทาง งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/KNsIQForp9A"
  - "https://www.youtube.com/embed/rLkIezAgzzw"
views: 11857