การควบคุมรถบังคับด้วยท่าทางมือโดยใช้ Arduino, OpenCV และ MediaPipe เป็นโครงการที่น่าสนใจซึ่งผสมผสานเทคโนโลยีหลายด้านเข้าด้วยกัน ตั้งแต่การประมวลผลภาพ การตรวจจับท่าทางมือ ไปจนถึงการควบคุมมอเตอร์ในรถบังคับ ต่อไปนี้คือหลักการทำงานของระบบนี้

1. การตรวจจับท่าทางมือด้วย MediaPipe

MediaPipe เป็นไลบรารีจาก Google ที่สามารถตรวจจับและติดตามตำแหน่งของมือได้อย่างมีประสิทธิภาพ โดย MediaPipe จะทำการประมวลผลภาพจากกล้อง (เช่น เว็บแคม) เพื่อระบุตำแหน่งของมือและนิ้วมือในแบบเรียลไทม์

  • เมื่อเปิดใช้งานกล้อง เว็บแคมจะทำการจับภาพที่มีมือของผู้ควบคุมอยู่ในเฟรม
  • MediaPipe จะตรวจจับตำแหน่งของจุดต่างๆ บนมือ (เช่น ปลายนิ้ว ข้อมือ) และติดตามการเคลื่อนไหวของมือและนิ้ว
  • ข้อมูลท่าทางมือจะถูกประมวลผลเพื่อระบุคำสั่งที่ต้องการ เช่น ไปข้างหน้า ถอยหลัง เลี้ยวซ้าย หรือเลี้ยวขวา

2. การประมวลผลข้อมูลด้วย OpenCV และ Python

OpenCV เป็นไลบรารีที่ใช้สำหรับการประมวลผลภาพและวิดีโอ ด้วยการใช้ OpenCV ร่วมกับ MediaPipe เราสามารถเขียนโปรแกรม Python เพื่อแปลท่าทางมือที่ตรวจจับได้เป็นคำสั่งควบคุม

  • ข้อมูลท่าทางมือที่ได้รับจาก MediaPipe จะถูกประมวลผลและเปรียบเทียบกับรูปแบบที่กำหนดไว้ล่วงหน้า เช่น การยกนิ้วขึ้น หมายถึงการเดินหน้า การหมุนมือซ้ายหรือขวา หมายถึงการเลี้ยว
  • เมื่อท่าทางมือสอดคล้องกับคำสั่งที่กำหนด โปรแกรมจะสร้างสัญญาณควบคุมและส่งข้อมูลนี้ไปยัง Arduino ผ่านทาง Bluetooth หรือ Serial Communication

3. การควบคุมรถบังคับด้วย Arduino

Arduino จะรับข้อมูลจากโปรแกรม Python ที่ประมวลผลแล้ว และใช้ข้อมูลนี้ในการควบคุมการทำงานของมอเตอร์และทิศทางของรถบังคับ

  • Arduino จะรับสัญญาณคำสั่งจากคอมพิวเตอร์ที่ส่งผ่าน Bluetooth หรือ Serial Communication
  • คำสั่งที่ได้รับจะถูกแปลเป็นการกระทำของมอเตอร์ เช่น หมุนมอเตอร์เพื่อไปข้างหน้า ถอยหลัง หรือเลี้ยว
  • ด้วยการควบคุมมอเตอร์ด้วย Driver มอเตอร์ (เช่น L298N) Arduino จะทำการควบคุมการเคลื่อนที่ของรถบังคับตามคำสั่งที่ได้รับ

สรุป

ระบบนี้ใช้การผสมผสานระหว่าง MediaPipe, OpenCV และ Arduino เพื่อสร้างรถบังคับที่สามารถควบคุมด้วยท่าทางมือ โดยข้อมูลการตรวจจับท่าทางมือจาก MediaPipe จะถูกส่งไปยัง Arduino ผ่าน OpenCV และ Python เพื่อควบคุมการทำงานของรถบังคับได้อย่างสมบูรณ์

โปรเจกต์นี้เหมาะสำหรับผู้ที่สนใจในการผสมผสานเทคโนโลยีทั้งฮาร์ดแวร์และซอฟต์แวร์ และยังเป็นพื้นฐานที่ดีสำหรับการพัฒนาโปรเจกต์ที่ซับซ้อนมากขึ้นในอนาคต

อุปกรณ์ที่ใช้

1. RB-0001 Arduino UNO R3

2. RB-0002 Sensor Shield V 5.0

3. RB-0003 Motor Driver Module L298N

4. RB-0015 Jumper (F2M) 20cm Female to Male

5. RB-0017 Jumper (F2F) 20cm Female to Female

6. RB-0019 รางถ่าน 18650 – 2 ก้อน

7. RB-0021 ถ่านชาร์จ 18650 NCR18650B 3.7v 3400mAh 2 ก้อน

8. RB-0023 2WD Smart Robot Car Chassis Kits

9. RB-0025 เสารองแผ่นพีซีบีโลหะแบบเหลี่ยม 8 mm

10. HC-06 Slave Bluetooth 3.0 JDY-31


การสร้าง รถบังคับ Arduino ผ่าน Bluetooth


1.ประกอบหุ่นยนต์และเชื่อมต่อวงจร


ใช้สว่านเจาะรู เพื่อยึดเสารองแผ่นพีซีบี สำหรับ Arduino UNO เข้ากับ โครงหุ่นยนต์



ยึด Arduino UNO เข้ากับเสารองแผ่นพีซีบี



เสียบ Sensor Shield เข้ากับ บอร์ด Arduino R3



ยึดเสารองแผ่นพีซีบี สำหรับ Motor Driver เข้ากับ โครงหุ่นยนต์



ยึด Motor Driver เข้ากับเสารองแผ่นพีซีบี



ใช้กาวร้อน ยึดรางถ่าน เข้ากับ โครงหุ่นยนต์



การต่อวงจร


  • สายสีแดงของรางถ่าน 7.4 โวลต์ เชื่อมต่อเข้ากับสวิตช์ปิดเปิด
  • สายสีดำของรางถ่าน 7.4 โวลต์ เชื่อมต่อกับ Jumper (F2M) ผู้-เมีย สีดำ (ตัดขั้วด้านผู้ออก) แล้วจึงเชื่อมต่อเข้ากับ กราวด์ (GND) ของ Sensor Shield


  • ใช้สาย Jumper (F2M) ผู้-เมีย สีแดง (ตัดขั้วด้านเมียออก) เชื่อมต่อจากสวิตช์ปิดเปิดอีกด้าน ไปยัง Power Supply ของ Motor Driver


  • ใช้สาย Jumper (F2M) ผู้-เมีย สีดำ เชื่อมต่อระหว่าง กราวด์ (GND) ของ Motor Driver กับ GND หรือ G ของ Sensor Shield
  • ใช้สาย Jumper (F2M) ผู้-เมีย สีน้ำตาล เชื่อมต่อจากการจ่ายไฟ 5 โวลต์ ของ Motor Driver ไปยัง 5 โวลต์ หรือ V ของ Sensor Shield



จากนั้น ใช้สาย Jumper (F2F) เมีย-เมีย สีอะไรก็ได้ เชื่อมต่อวงจร ระหว่าง Sensor Shield กับ Motor Driver ตามรูป



ใส่ถ่าน เข้าไปที่รางถ่าน เมื่อ เปิดสวิตช์ ต้องมีไฟเข้า โดยสังเกตไฟ LED สีแดง ที่ Sensor Shield และ ไฟ LED สีแดงที่ Motor Driver จะมีไฟติด


เชื่อมต่อสายสีแดง – ดำ เข้ากับมอเตอร์ ทั้ง 2 ตัว โดยให้สายสีแดงอยู่ด้านบน และ สายสีดำอยู่ด้านล่าง



ยึดมอเตอร์ ทั้ง 2 ตัว เข้ากับ โครงหุ่นยนต์



ยึด ล้อหน้า เข้ากับ โครงหุ่นยนต์



ใส่ ล้อ เข้าไปที่มอเตอร์



เชื่อมต่อ สายมอเตอร์ทั้ง 2 ด้าน เข้ากับ Motor Driver (ตรวจสอบสีของสายไฟให้ถูกต้องตามรูป)


2.ติดตั้ง Arduino IDE


สิ่งแรกคือการติดตั้ง Arduino IDE เพื่อให้คุณสามารถค้นหา Arduino IDE ใน Google

จากนั้นคุณมีสองทางเลือก

หนึ่งคือการติดตั้งเวอร์ชัน1 หรือเพื่อติดตั้งเวอร์ชัน 2

เราจะติดตั้งเวอร์ชัน 2 เพราะมีคุณสมบัติเพิ่มเติมบางอย่าง แต่ไม่ว่าคุณจะเลือกอะไรมันจะทำงานเช่นกัน ดังนั้นคุณสามารถเลือกอย่างใดอย่างหนึ่ง

ดาวน์โหลด Arduino IDE จากที่นี่

https://www.arduino.cc/en/software

This image has an empty alt attribute; its file name is e1-1024x573.png


3. ทดสอบ การเคลื่อนที่ของหุ่นยนต์


การทดสอบนี้ เป็นการตรวจสอบการต่อสายต่างๆ เช่น การเชื่อมต่อสายของมอเตอร์ ทั้ง 2 ตัว รวมทั้งสายอื่นๆ ของหุ่นยนต์ที่เราสร้าง ว่าถูกต้องหรือไม่ ถ้าถูกต้องหุ่นยนต์จะดำเนินการดังนี้

คือ เดินหน้า -> ถอยหลัง -> เลี้ยวซ้าย -> เลี้ยวขวา


และนี่คือโค้ดที่ใช้ทดสอบ


int MA1 = 6;     // Motor A1
int MA2 =  7;     // Motor A2

int MB1 =  8;     // Motor B1
int MB2 =  9;     // Motor B2



void setup() {

  //Setup Channel A
  pinMode(MA1, OUTPUT); //Motor A1
  pinMode(MA2, OUTPUT); //Motor A2
 

  //Setup Channel B
  pinMode(MB1, OUTPUT);  //Motor B1
  pinMode(MB2, OUTPUT);  //Motor B2
 
}

void loop() {


  Stop(2000);
  Forward(600);
  Stop(200);
  Backward(600);
  Stop(200);
  turnLeft(400);
  Stop(200);
  turnRight(400);


}

void Backward(int time)
{
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, HIGH);
  
  digitalWrite(MB1, HIGH);
  digitalWrite(MB2, LOW);
 
  delay(time);
}

void Forward (int time)
{
  digitalWrite(MA1, HIGH);
  digitalWrite(MA2, LOW);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, HIGH);

  delay(time);
}

void turnLeft(int time)
{
  digitalWrite(MA1, HIGH);
  digitalWrite(MA2, LOW);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, LOW);
  

  delay(time);
}

void turnRight(int time)
{
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, LOW);
  

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, HIGH);
  

  delay(time);
}

void Stop(int time)
{
  digitalWrite(MA1, LOW);
  digitalWrite(MA2, LOW);

  digitalWrite(MB1, LOW);
  digitalWrite(MB2, LOW);

  delay(time);

}


ลิงค์โค้ด : https://lungmaker.com/code/test-motor-arduino2.ino


เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ Arduino UNO


ตรวจสอบ Port ของบอร์ด Arduino โดย คลิกที่ Device Manager



ที่ Ports (COM & LPT) จะพบ Port ของบอร์ด Arduino ในตัวอย่างเป็น Arduino Uno (COM19)



ไปที่ Tools -> Board -> Arduino AVR Boards -> Arduino Uno



เลือก Port โดยไปที่ Tools -> Port -> COM19
(โดย COM19 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)



คลิกที่ Upload



รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว



วิดีโอผลลัพธ์การทำงาน การเคลื่อนที่ของหุ่นยนต์ Arduino

ถ้ายังทำงานไม่ถูกต้อง คือ เดินหน้า -> ถอยหลัง -> เลี้ยวซ้าย -> เลี้ยวขวา ให้กลับไปแก้ไขการต่อวงจร การต่อสายต่างๆ เช่น การต่อสายมอเตอร์ จนกว่าจะทำงานถูกต้อง ถึงจะสามารถไปทำงานในขั้นตอนต่อไป


4. การใช้งาน Firmata กับ Arduino

  1. ติดตั้งไลบรารี Firmata:
    • เปิด Arduino IDE
    • ไปที่เมนู Sketch > Include Library > Manage Libraries...
    • ค้นหา “Firmata” แล้วคลิก Install


  2. อัพโหลดโค้ด Firmata ไปยัง Arduino:
    • เปิด File > Examples > Firmata > StandardFirmata



ค้นหา 57600



แก้เป็น 9600


  • แล้วอัพโหลดโค้ดนี้ไปยังบอร์ด Arduino ของคุณ





5. การทำงานกับ Bluetooth JDY-31

เชื่อมต่อ Bluetooth JDY-31





เสียบ USB Bluetooth เข้ากับคอมพิวเตอร์


ไปที่ Settings



ไปที่ Devices



ไปที่ Add Bluetooth



เลือก JDY-31-SPP



ใส่ 1234 -> Connect


Done



แสดงการเชื่อมต่อกับ JDY-31-SPP แล้ว ปิดหน้าต่างลง



ไปที่ Control Panel




ไปที่ Hardware and Sound




ค้นหา Bluetooth -> เข้าไปที่ Change Bluetooth



ไปที่ COM Ports




ที่ Outgoing นำชื่อ Port ซึ่งในตัวอย่างคือ COM26 ซึ่งจะนำไปเขียนโค้ดภาษา Python ต่อไป




*** การทำงาน Python ที่คอมพิวเตอร์ ***


1. ติดตั้ง Python 3.10.0



2. ติดตั้งโปรแกรม PyCharm

เลือกติดตั้งตัวฟรี คือ PyCharm Community


3. เพิ่มแพคเก็จ pyFirmata


เปิดโปรแกรม PyCharm Community เลือก New Project ตั้งชื่อชื่อโปรเจคตามตัวอย่างคือ FirmataProject -> Create



สร้างไฟล์ใหม่



ในตัวอย่างชื่อ test.py



สำหรับ Python, คุณสามารถใช้ไลบรารี pyFirmata เพื่อสื่อสารกับ Bluetooth JDY-31-SPP


ตัวอย่างโค้ด Python:

from pyfirmata import Arduino, util
import time

board = Arduino('COM26')  # หรือพอร์ตที่ Bluetooth JDY-31-SPP ของคุณเชื่อมต่อ

it = util.Iterator(board)
it.start()

pin = board.get_pin('d:13:o')  # ใช้พินดิจิตอล 13 เป็น output

while True:
    pin.write(1)  # เปิด LED
    time.sleep(1)
    pin.write(0)  # ปิด LED
    time.sleep(1)




เพิ่มแพคเก็จ Firmata โดยไปที่ File -> Settings…



ไปที่ Python Interpreter เลือก แล้ว คลิกเครื่องหมาย +



ที่ช่องค้นหา พิมพ์ pyfirmata -> คลิกที่ pyFirmata-> Install Package



จะพบแพคเก็จ pyFirmata และ pyserial เพิ่มเข้ามา -> OK



ถอดการเชื่อมต่อสาย USB จาก คอมพิวเตอร์ กับบอร์ด Arduino UNO ออก เพื่อทดสอบการเชื่อมต่อกับ Bluetooth JDY-31-SPP


ทดสอบ Run



ไม่พบ Error ใดๆ



หลอดไฟ LED ที่เชื่อมต่อกับขา D13 กระพริบติด-ดับ แสดงว่า พร้อมที่จะทำงานในขั้นตอนต่อไปแล้ว


4. ติดตั้งแพคเก็จ numpy , opencv-python mediapipe และ controller


ติดตั้งแพคเก็จ numpy

NumPy เป็นแพ็คเกจ (package) ในภาษา Python ที่ถูกพัฒนาขึ้นมาเพื่อการคำนวณเชิงตัวเลขและวิทยาศาสตร์ข้อมูล ซึ่งมีความสามารถหลากหลายในการจัดการกับอาเรย์ (arrays) และเมทริกซ์ (matrices) รวมถึงฟังก์ชันทางคณิตศาสตร์ที่สามารถใช้กับอาเรย์ได้อย่างมีประสิทธิภาพ



ติดตั้งแพคเก็จ opencv-python

opencv-python เป็นแพ็คเกจในภาษา Python ที่ใช้สำหรับการประมวลผลภาพและวิดีโอ เป็นเวอร์ชันของ OpenCV (Open Source Computer Vision Library) ซึ่งเป็นไลบรารีโอเพนซอร์สที่มีฟังก์ชันมากมายสำหรับการวิเคราะห์ภาพและวิดีโอ


ติดตั้งแพคเก็จ mediapipe

MediaPipe เป็นแพ็คเกจใน Python ที่พัฒนาโดย Google ซึ่งใช้สำหรับการประมวลผลข้อมูลมัลติโมดัล (multimodal data) โดยเฉพาะการวิเคราะห์ข้อมูลจากภาพ, วิดีโอ, และเสียง โดยแพ็คเกจนี้เน้นไปที่การใช้งานในงานปัญญาประดิษฐ์ (AI) และการเรียนรู้ของเครื่อง (Machine Learning) เพื่อตรวจจับและติดตามวัตถุหรือจุดสนใจในสื่อมัลติมีเดียต่าง ๆ



ติดตั้งแพคเก็จ controller

เป็นเครื่องมือที่ช่วยให้จับเหตุการณ์ UI ทุกประเภทได้ เช่น การแตะหน้าจอโทรศัพท์เคลื่อนที่หรือการเร่งความเร็วของอุปกรณ์โดยตรงในโค้ด Python



5. เขียนโค้ด Python MediaPipe หุ่นยนต์ ควบคุม ด้วย จำนวนนิ้ว


main.py


import cv2
import mediapipe as mp
import time
import controller as cnt
 

time.sleep(2.0)

mp_draw=mp.solutions.drawing_utils
mp_hand=mp.solutions.hands


tipIds=[4,8,12,16,20]

video=cv2.VideoCapture(0)

with mp_hand.Hands(min_detection_confidence=0.5,
               min_tracking_confidence=0.5) as hands:
    while True:
        ret,image=video.read()
        image=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        image.flags.writeable=False
        results=hands.process(image)
        image.flags.writeable=True
        image=cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
        lmList=[]
        if results.multi_hand_landmarks:
            for hand_landmark in results.multi_hand_landmarks:
                myHands=results.multi_hand_landmarks[0]
                for id, lm in enumerate(myHands.landmark):
                    h,w,c=image.shape
                    cx,cy= int(lm.x*w), int(lm.y*h)
                    lmList.append([id,cx,cy])
                mp_draw.draw_landmarks(image, hand_landmark, mp_hand.HAND_CONNECTIONS)
        fingers=[]
        if len(lmList)!=0:
            if lmList[tipIds[0]][1] > lmList[tipIds[0]-1][1]:
                fingers.append(1)
            else:
                fingers.append(0)
            for id in range(1,5):
                if lmList[tipIds[id]][2] < lmList[tipIds[id]-2][2]:
                    fingers.append(1)
                else:
                    fingers.append(0)
            total=fingers.count(1)
            cnt.led(total)
            if total==0:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "0", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
            elif total==1:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "1", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
            elif total==2:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "2", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
            elif total==3:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "3", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
            elif total==4:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "4", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
            elif total==5:
                cv2.rectangle(image, (20, 300), (270, 425), (0, 255, 0), cv2.FILLED)
                cv2.putText(image, "5", (45, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
                cv2.putText(image, "LED", (100, 375), cv2.FONT_HERSHEY_SIMPLEX,
                    2, (255, 0, 0), 5)
        cv2.imshow("Frame",image)
        k=cv2.waitKey(1)
        if k==ord('q'):
            break
video.release()
cv2.destroyAllWindows()

https://lungmaker.com/code/hand-robot/main.py


2. controller.py


import pyfirmata

comport='COM26'

board=pyfirmata.Arduino(comport)

led_1=board.get_pin('d:6:o')
led_2=board.get_pin('d:7:o')
led_3=board.get_pin('d:8:o')
led_4=board.get_pin('d:9:o')



def led(total):
    if total==0:
        led_1.write(0)
        led_2.write(0)
        led_3.write(0)
        led_4.write(0)

    elif total==1:
        led_1.write(0)
        led_2.write(0)
        led_3.write(0)
        led_4.write(0)


    elif total==2:
        led_1.write(1)
        led_2.write(0)
        led_3.write(0)
        led_4.write(1)


    elif total==3:
        led_1.write(1)
        led_2.write(0)
        led_3.write(0)
        led_4.write(0)


    elif total==4:
        led_1.write(0)
        led_2.write(0)
        led_3.write(0)
        led_4.write(1)


    elif total==5:
        led_1.write(0)
        led_2.write(1)
        led_3.write(1)
        led_4.write(0)



https://lungmaker.com/code/hand-robot/controller.py


6. คลิป โปรเจค Arduino MediaPipe หุ่นยนต์ ควบคุม ด้วย จำนวนนิ้ว



สรุป

การสร้างโปรเจคหุ่นยนต์ที่ควบคุมด้วยท่าทางมือโดยใช้ Arduino และ MediaPipe มีข้อดีหลายประการที่น่าสนใจ:

  1. การควบคุมแบบธรรมชาติและใช้งานง่าย: การควบคุมหุ่นยนต์ด้วยท่าทางมือทำให้ผู้ใช้สามารถสั่งการหุ่นยนต์ได้อย่างง่ายดายและเป็นธรรมชาติ โดยไม่ต้องใช้รีโมทหรือปุ่มควบคุมเพิ่มเติม ซึ่งช่วยให้ผู้ใช้มีประสบการณ์ที่ดียิ่งขึ้น
  2. ประสบการณ์การเรียนรู้ที่ครบวงจร: โปรเจคนี้เปิดโอกาสให้ผู้เรียนได้เรียนรู้ทั้งด้านฮาร์ดแวร์ (Arduino) และซอฟต์แวร์ (MediaPipe) ซึ่งทำให้เกิดความเข้าใจลึกซึ้งในการพัฒนาและควบคุมระบบหุ่นยนต์
  3. ความสามารถในการปรับแต่งและพัฒนาเพิ่มเติม: Arduino และ MediaPipe เป็นแพลตฟอร์มที่มีความยืดหยุ่นสูง ผู้ใช้สามารถปรับแต่งหรือเพิ่มฟีเจอร์ใหม่ ๆ เช่น การจดจำท่าทางที่ซับซ้อนยิ่งขึ้น หรือการรวมระบบ AI เพื่อเพิ่มความฉลาดให้กับหุ่นยนต์
  4. ต้นทุนต่ำและเข้าถึงง่าย: การใช้ Arduino เป็นหัวใจหลักของโปรเจคทำให้สามารถสร้างหุ่นยนต์ที่มีต้นทุนต่ำ นอกจากนี้ MediaPipe ยังเป็นเครื่องมือที่มีประสิทธิภาพและสามารถใช้งานได้ฟรี ทำให้โปรเจคนี้สามารถเข้าถึงได้ง่ายสำหรับนักพัฒนาและนักเรียน
  5. การนำไปประยุกต์ใช้ในหลากหลายสถานการณ์: หุ่นยนต์ที่ควบคุมด้วยท่าทางมือสามารถนำไปประยุกต์ใช้ในหลายสถานการณ์ เช่น การช่วยเหลือผู้พิการ การสอนในห้องเรียน หรือการสร้างความบันเทิง
  6. การฝึกทักษะในการแก้ปัญหาและความคิดสร้างสรรค์: การพัฒนาโปรเจคนี้จะช่วยให้ผู้เรียนได้ฝึกทักษะในการแก้ปัญหาและคิดค้นวิธีการใหม่ ๆ เพื่อปรับปรุงหรือเพิ่มฟังก์ชันให้กับหุ่นยนต์

โปรเจคหุ่นยนต์ที่ควบคุมด้วยท่าทางมือโดยใช้ Arduino และ MediaPipe จึงเป็นการผสมผสานเทคโนโลยีที่น่าสนใจ และสามารถนำไปพัฒนาต่อได้อย่างหลากหลาย

Leave a Reply

Your email address will not be published. Required fields are marked *

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save