กลับไปหน้ารวมไฟล์
kittybot-ebb3d3.md

Introduction

พี่อยากทำหุ่นยนต์สี่ขาแบบเดินได้ แบบสไตล์ "สัตว์เลี้ยงลูกด้วยนม" มากกว่าแบบ "แมงมุม" หรือ "แมลง" ทั่วไป แรงบันดาลใจมาจากหุ่นยนต์ชื่อดังของ Boston Dynamics กับหุ่นยนต์วิจัยสี่ขาตัวอื่นๆ การทำหุ่นแบบนี้ค่อนข้างท้าทายหน่อยนะ เพราะมันล้มง่ายมาก เนื่องจากจุดศูนย์ถ่วงสูงและเท้าอยู่ใต้ลำตัวแทนที่จะกางออกไปยังมุมต่างๆ

Film clip of KITtyBot2

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

พี่รู้ตั้งแต่แรกแล้วว่าต้องศึกษาเรื่อง Inverse Kinematics (IK) ถึงจะทำได้ถูกต้อง โค้ดจะมีชุดสมการสำหรับคำนวณมุมข้อต่อจากตำแหน่งเท้าที่เราต้องการ ซึ่งเอาไปใช้ในฟังก์ชันสำหรับงานซ้ำๆ ได้ เช่น การขยับลำตัว (ขยับเท้าทั้งสี่ไปในทิศทางตรงข้าม) และการขยับเท้าให้ครบจังหวะ (ยกขึ้น ขยับไปทิศที่กำหนด แล้ววางลงอีกครั้ง)

ปัญหายักษ์อย่าง Inverse Kinematics (IK)

การโปรแกรมหุ่นยนต์ที่ใช้ขาจริง 4 ขา (มี Servo Motor 8 ตัว) ให้ยก ขยับ วาง และขับเคลื่อนมวลของมันอย่างต่อเนื่องด้วยคณิตศาสตร์ โดยยังรักษาจุดศูนย์ถ่วงทางกายภาพไว้ไม่ให้ล้มนี่ ต้องใช้การคำนวณเชิงพื้นที่ที่ซับซ้อนมากเลยนะตัวเธอ ตัวควบคุมต้องสั่งมุมเซอร์โวอิสระทั้ง 8 ตัวนี้ให้เป็นคลื่นแบบ Non-linear Floating-point ที่ซับซ้อน แค่เพื่อให้มัน "เดินหนึ่งรอบ" พื้นฐานได้เนี่ย

ถ้าน้องสั่ง ShoulderServo.write(45) กับ KneeServo.write(45) นั่นคือ "Forward Kinematics" ครับ เท้ามันจะไปอยู่ตรงไหนสักแห่งบนพื้นอย่างมั่วๆ

  1. KITtyBot ของพี่มันทำงานแบบมั่วๆ ไม่ได้ มันใช้ Inverse Kinematics
  2. โค้ดบน Arduino จะบอกว่า "ฉันอยากให้เท้าอยู่ที่ตำแหน่ง X=10mm, Y=50mm บนกราฟ Cartesian พอดีเลย"
  3. โค้ด C++ บังคับให้โปรเซสเซอร์ไปคำนวณตรีโกณมิติเชิงเรขาคณิตซะเลย!
// Explicit Inverse Kinematics calculating the Knee Angle based entirely on exactly where the foot must land!
float calculateKneeAngle(float x, float y) {
  float distance = sqrt(sq(x) + sq(y)); // Absolute Pythagorean theorems inside the ATmega!
  // Heavy ACos mapping resolving dual-link arm matrices!
  float angle = acos((sq(femurL) + sq(tibiaL) - sq(distance)) / (2 * femurL * tibiaL)); 
  return (angle * 180 / PI); // Radians mathematically converted to physical Servo degrees!
}

ความท้าทายต่อไปคือการศึกษาท่าทางการเดิน (Gait) นั่นคือการกำหนดว่าหุ่นยนต์ควรจะเดินและเลี้ยวอย่างไรในแง่ของการเคลื่อนไหวของลำตัวและเท้า หุ่นของพี่ใช้ท่าเดินแบบทรงตัวได้เสมอ (Statically Stable Gaits) ตลอดเวลา โดยจะยกเท้าขึ้นทีละข้างแล้ววางในตำแหน่งใหม่ ลำตัวจะวางอยู่บนอีกสามขา และเพื่อไม่ให้ล้ม จุดศูนย์ถ่วงต้องอยู่ภายในสามเหลี่ยมที่เกิดจากสามขานั้น พี่พัฒนาท่าเดินมาตรฐานไว้สี่แบบ - เดินหน้า ถอยหลัง เลี้ยวซ้าย และเลี้ยวขวา ซึ่งท่าเหล่านี้จะใช้ฟังก์ชันการเคลื่อนไหวของเท้าและลำตัวที่กล่าวมา แล้วนำมารวมกันเป็นลำดับการเคลื่อนไหวเต็มรูปแบบ

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

การลงมือทำฮาร์ดแวร์

Arduino ตัวเดียวขับเซอร์โว 8 ตัวแบบเนี๊ยบๆ ไม่ได้หรอกน้อง! ไทเมอร์ภายในมันรับภาระ PWM เยอะๆ ไม่ไหว จะทำให้หุ่นกระตุกและล้มแบบมั่วๆ ได้ (อาการที่เรียกว่า "Jitter")

  • ตัวช่วยอย่าง PCA9685: Arduino เราเอาภาระ PWM ทั้งหมดไปโยนให้ตัวอื่นทำแทนได้!
  • Arduino เชื่อมต่อผ่าน I2C (SDA/SCL) เพื่อส่งค่ามุมที่ต้องการ (เป็นตัวเลข) ไปให้ ชิปขับ PWM เซอร์โว 16 ช่องจาก Adafruit ที่อยู่ข้างนอก
  • ชิปตัวนอกนี้จะจัดการส่งพัลส์ให้เซอร์โวทุกตัวพร้อมกันแบบเนียนๆ โดยที่ Arduino เราไม่ต้องมานั่งคำนวณอะไรให้เมื่อยเลย ทำให้การเดินของหุ่นสี่ขาเป็นไปอย่างลื่นไหลไม่มีสะดุด!

สุดท้ายแต่ไม่ท้ายสุด พี่ใช้แบตเตอรี่ LiPo แบบไม่มีวงจรป้องกันอะไรเลยนะ ตัวนี้เสี่ยงหน่อยๆ อันตรายหลักคือการปล่อยประจุเร็วเกินหรือลึกเกินไป อันตรายแรกจะไม่เกิดถ้าเราไม่เผลอทำให้มันลัดวงจร แบต R/C ปกติจะมีอัตราการคายประจุ (Discharge Rate) 25C ซึ่งในกรณีนี้หมายถึง 12A แต่ UBEC จะคอยจำกัดไม่ให้กระแสเกิน 2A อยู่แล้ว ส่วนอันตรายที่สองเราป้องกันด้วยฟังก์ชันเฝ้าระวังในซอฟต์แวร์ โดยจะวัดแรงดันที่พิน Analog พินหนึ่ง ถ้าแรงดันต่ำกว่า 7.0V หุ่นยนต์จะหยุดทำงานทันที

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

ถ้าน้องยังไม่คุ้นเคยกับแบต LiPo แนะนำให้ไปปรึกษาร้านขายของเล่น RC แถวบ้าน ซื้อแบตพร้อมเครื่องชาร์จที่เหมาะสม และอาจจะซื้อถุง/ภาชนะกันไฟสำหรับชาร์จและเก็บรักษาด้วย ของพวกนี้มักจะมีสติ๊กเกอร์เตือนเต็มไปหมด อ่านให้ดีและใช้วิจารณญาณส่วนตัวด้วยนะ :)

ขั้นตอนประกอบหุ่นยนต์

ปริ้นชิ้นส่วนทั้งหมดตามไฟล์ที่ให้มา ใช้เวลาดูรูปให้ดีก่อนเริ่มประกอบ จะได้เห็นภาพรวมว่าแต่ละชิ้นต้องต่อกันยังไง พี่เป็นชาวสแกนดิเนเวีย แต่มันย่อมไม่ละเอียดเท่าคู่มือของ IKEA หรือ LEGO แน่นอน :)

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

ติดแผ่นรองเซอร์โว (Servo Support) เข้ากับด้านล่างของเซอร์โวตัวแรก ให้อยู่ในแนวเดียวกับแกนหมุน จากนั้นเอาเซอร์โวอีกตัวมาต่อโดยให้แกนตั้งฉากกัน รูปด้านล่างแสดงข้อต่อสะโพกสำหรับขาหน้าขวาและขาหลังซ้าย สำหรับอีกสองมุมที่เหลือ ให้ประกอบชิ้นส่วนแบบสะท้อนในกระจก (mirrored) นะ

ข้อต่อสะโพกสำหรับขาหน้าขวา/ขาหลังซ้าย ใช้เทปกาวสองหน้าหรือกาวติดชิ้นส่วนเข้าด้วยกัน

ก่อนไปต่อ แนะนำให้เซ็ตให้เซอร์โวทั้ง 12 ตัวอยู่ตำแหน่งกลาง (Centered) ให้หมดก่อน วิธีที่ดีที่สุดคือประกอบ PCB (หรือใช้เบรดบอร์ด ดูด้านล่าง) เชื่อมต่อเซอร์โวทั้งหมด แล้วอัพโหลดโค้ดลงไป พอ Arduino เริ่มทำงาน เซอร์โวทุกตัวจะกลับมาที่ตำแหน่งกลาง (รับสัญญาณคำสั่งที่ 90 องศา) หลังจากประกอบหุ่นเสร็จแล้วค่อยมาปรับตำแหน่งกลางแบบละเอียดอีกที

ขั้นต่อไปคือติดชิ้นส่วนที่เรียกว่า "ต้นขา" (Thigh) ซึ่งเป็นส่วนขาส่วนบนของขาแต่ละข้าง ชิ้นส่วนนี้จะมีร่องที่เข้ากับ "ฮอร์นเซอร์โว" (Servo Horn) ที่มากับเซอร์โว ให้ใช้กาวติดฮอร์นเข้ากับร่อง ต้องเลือกกาวที่ใช้ติดวัสดุที่พิมพ์ 3D กับพลาสติกไนลอนของฮอร์นได้ดี กาวปืนที่พี่ใช้ทำงานได้ดี ส่วนกาวซุปเปอร์กาว (CA Glue) บางยี่ห้อใช้ได้ บางยี่ห้อก็ไม่นะ

ติดต้นขาเข้ากับข้อต่อสะโพกที่มุม 60 องศา พยายามหาตำแหน่งที่ใกล้เคียงมุมนี้ที่สุดหลังจากเซ็ตเซอร์โวไว้ที่ตำแหน่งกลางแล้ว จากนั้นยึดฮอร์นเข้ากับแกนเซอร์โวด้วยสกรูที่มากับเซอร์โว (มักจะเป็นตัวสั้นที่สุดในสามตัว) ด้านล่างเป็นรูปประกอบต้นขาและสะโพกสองรูป ไม่มีฮอร์นเซอร์โวในรูปเพื่อความชัดเจน (หรือเพราะพี่ขี้เกียจไม่ยอมโมเดลมันขึ้นมาเอง 555)

ส่วนขาล่างก็ต้องประกอบด้วยนะน้อง ในขั้นตอนนี้เราจะยึดเซอร์โวเข้ากับชิ้นส่วนขาด้วยสกรู โดยปกติเซอร์โวจะมาพร้อมสกรู (มักจะเป็นสกรูไม้ยาวๆ สองตัว) ใช้ตัวนั้นแหละ

ขาล่าง (เท้า) พร้อมเซอร์โวที่ติดตั้งแล้ว

ทีนี้ก็ถึงเวลาประกอบขาเข้ากับลำตัวแล้วจ้า มีชิ้นส่วนที่พี่เรียกว่า "กันชน" (bumper) อยู่ด้านหน้าและด้านหลังของหุ่นยนต์ (เหมือนกันชนรถ) ชิ้นส่วนนี้ก็มีช่องสำหรับแขนเซอร์โวเหมือนกับชิ้นส่วนต้นขา เอากาวยึดแขนเซอร์โวเข้าไปก่อน จากนั้นก็สไลด์ตัวยึดเซอร์โวของขาบนเข้าไปในรูที่ลำตัวที่ตรงกัน พอทำทั้งสองข้างเสร็จ ก็ใช้กันชนมาครอบยึดอีกที ตั้งให้ขาชี้ออกมาประมาณ 12 องศา (ปลายเท้าห่างกันประมาณ 20 มม.) ยึดกันชนเข้ากับลำตัวด้วยสกรูเซอร์โวที่เหลือ (ตัวยาวๆ)

สุดท้ายก็ติดขาล่างของหุ่นยนต์เข้าไป ขาล่างควรทำมุมในทิศทางตรงข้ามกับต้นขา ทำให้ปลายเท้าอยู่ใต้ข้อต่อสะโพกของขาแต่ละข้างพอดี

แค่นี้หุ่นยนต์ก็ประกอบเสร็จแล้วล่ะ หน้าตาควรจะออกมาเหมือนในรูปด้านล่างนี้ หมายเหตุ: การออกแบบหุ่นยนต์มีการเปลี่ยนแปลงเล็กน้อยจากรูปแรกและคลิปวิดีโอ ลำตัวถูกออกแบบใหม่ให้เรียบง่ายและแข็งแรงขึ้น ตัวยึดเซอร์โวและแขนเซอร์โวสำหรับข้อต่อสะโพกสลับตำแหน่งกัน ดังนั้นให้ยึดตามภาพ 3D เป็นหลัก อย่าไปสับสนกับรูปถ่ายและคลิปวิดีโอนะจ๊ะ

แน่นอนว่ามุมของแต่ละข้อต่ออาจไม่เป๊ะตามที่ต้องการ เพราะเซอร์โว SG-90 มีฟันเฟือง (spline) 21 ฟัน ทำให้มุมระหว่างตำแหน่งแต่ละตำแหน่งห่างกัน 17 องศา เราได้แค่ประกอบหุ่นยนต์ให้อยู่ในช่วง 10-20 องศาเท่านั้น ส่วนที่คลาดเคลื่อนต้องไปปรับที่ตำแหน่งกลาง (neutral position) ในโค้ดอีกที (ดูต่อด้านล่าง) เป็นความคิดที่ดีถ้าจะลองต่อเซอร์โวทั้งหมดอีกครั้ง แล้วเปิด Arduino ขึ้นมาเช็คตำแหน่งกลาง และปรับแต่งกลไก (ขยับข้อต่อไปหนึ่งหรือสองฟัน) ถ้าจำเป็น เพราะบางทีเราอาจเผลอหมุนเซอร์โวตอนประกอบไปแล้วก็ได้

ชิ้นส่วนกลไกทั้งหมดประกอบเสร็จแล้ว

ต่อวงจรอิเล็กทรอนิกส์

มีสองทางเลือกนะน้อง จะต่อทุกอย่างบนเบรดบอร์ดแผ่นเดียว หรือจะทำ PCB จากไฟล์ Fritzing ที่ให้มา ถ้าใช้เบรดบอร์ดต้องระวังเรื่องแรงดันไฟฟ้าให้ดี โดยเฉพาะตอนต่อสายไฟเลี้ยงและกราวด์ไปหาเซอร์โว ถ้าต่อไม่ดีอาจมีปัญหาได้ เซอร์โวตัวนึงอาจกินกระแสสูงสุดถึง 600 mA ถ้าต่อสายไฟเลี้ยงไม่ดี หุ่นอาจทำงานแปลกๆ ได้ ส่วน PCB นั้นมีลายทองแดงสำหรับสายไฟเลี้ยงที่กว้างมาก ถ้าบัดกรีได้เป๊ะๆ ก็จะทำงานได้ลื่นปรื๊ด

การออกแบบของพี่ไม่มีสวิตช์ปิดเปิดไฟ หุ่นยนต์เปิด-ปิดโดยการต่อ-ตัดแบตเตอรี่โดยตรง ถ้าอยากเพิ่มสวิตช์ ให้ต่อมันหลังขั้วต่อแบตเตอรี่ เพื่อตัดไฟ 7.4 V ที่จะเข้าไปยัง Arduino และ UBEC

เวอร์ชันเบรดบอร์ด

เป็นไปได้ที่จะยัด Pro Mini, ขั้วต่อเซอร์โว และอิเล็กทรอนิกส์ส่วนใหญ่ลงบนเบรดบอร์ดขนาดครึ่งแผ่น พี่วาดแผนผังไว้ในรูปด้านล่าง ระวังเรื่องสายจัมเปอร์ให้ดี ใช้สายสั้นๆ โดยเฉพาะสายไฟเลี้ยง 5 V และกราวด์ที่ไปหาเซอร์โว ขั้วต่อเซอร์โวก็แค่ใช้พินเฮดเดอร์ตัวผู้ยาวๆ ตัดเป็นท่อนๆ ละ 3 พิน แล้วปักลงเบรดบอร์ด

สิ่งที่รูปไม่ได้แสดงคือแบตเตอรี่และ UBEC อาจต้องบัดกรีเล็กน้อยเพื่อติดขั้วต่อที่เข้ากับแบตเตอรี่ จากขั้วต่อ ให้ใช้สายจัมเปอร์สองเส้นต่อเข้ากับ "รางไฟ" (power rail) ด้านล่างของเบรดบอร์ด เพื่อจ่ายไฟให้ Pro Mini (ต่อที่ขา RAW และ GND) และอย่าลืมต่อตัวต้านทาน (Resistor) สองตัวจากไฟ 7.4 V ไปที่ขา A0 ใช้ 2.2k ต่อจากขั้วบวก และ 1k ต่อจากกราวด์ วงจรแบ่งแรงดันนี้จะลดแรงดันจากแบตเตอรี่เต็มที่มากกว่า 8 V ให้เหลือต่ำกว่า 5 V เพื่อให้ขาแอนะล็อกอ่านค่าได้

ด้านเอาท์พุตของ UBEC นี่จะมีหัวต่อแบบเซอร์โว วิธีจัดวางที่สะดวกสุดคือเอาเฮดเดอร์แบบผู้ชาย (male header) สองขาไปปักไว้บน "รางไฟ" ด้านบน วางไว้ประมาณกลางๆ แบบในรูป จะได้ช่วยให้การจ่ายไฟไปยังเซอร์โวแต่ละตัวมันสมดุลที่สุด

ส่วนตัวรับสัญญาณอินฟราเรด (IR receiver) ให้ต่อเข้ากับขา A1 และจ่ายไฟ 5V ให้มัน ขาของตัวรับพวกนี้ยาวพอนะ จะเอาเสียบลงเบรดบอร์ดตรงๆ เลยก็ได้

ด้านล่างมีแผนผังวงจร (schematic) กับรูปตัวอย่างเบรดบอร์ดที่ต่อเสร็จแล้วให้ดู หมายเหตุไว้นิดนึงว่ารูปนี้เป็นเวอร์ชันเก่าของหุ่นนะ พินเอาท์กับการต่ออาจจะต่างไปบ้าง แต่ก็พอให้เห็นภาพรวมว่าต้องต่อสายจัมเปอร์กับหัวต่อเซอร์โวยังไง

เวลาเอาเบรดบอร์ดมาติดกับตัวหุ่น ให้ใช้ด้านหลังที่มีกาวสำเร็จรูปของมันนี่แหละ วางให้มุมที่ต่อเซอร์โวเข้ากับขา D3, D4 และ D5 (มุมขวาบนในแผนผัง) อยู่ที่มุมหน้า/ซ้ายของหุ่น และต้องแน่ใจว่าเบรดบอร์ดอยู่กึ่งกลางตัวหุ่นพอดี (จุดศูนย์ถ่วงสำคัญมาก อย่าลืม!)

แบบ PCB (แผ่นวงจรพิมพ์)

พี่แปะไฟล์ Fritzing ไว้ด้านล่าง เอาไว้ใช้ผลิต PCB ได้เลย จะสั่งทำผ่านบริการของ Fritzing โดยตรง หรือจะเอ็กซ์พอร์ตไฟล์ไปสั่งทำที่อื่นก็ได้ พี่ถ่ายรูปขั้นตอนการประกอบไว้ให้ดูด้านล่าง PCB ตัวนี้ดีไซน์มาสำหรับหุ่นตัวนี้โดยเฉพาะ มีหัวต่อสำหรับเซอร์โวทุกตัว, IR และการวัดแรงดัน แต่ก็ยังมีหัวต่อสำหรับพินที่เหลือแยกออกมาให้ด้วย เผื่อน้องอยากต่ออุปกรณ์อื่นเพิ่มในอนาคต

บนตัวหุ่นจะมี "เบาะ" เล็กๆ ตรงมุมสำหรับวาง PCB ให้พอดี วางให้มุมที่มีหัวต่อ D3 ถึง D5 อยู่ด้านหน้า/ซ้ายเหมือนเดิม บน PCB มีรูสำหรับยึดนะ แต่พี่ใช้แค่เทปกาวสองหน้าติดกับตัวหุ่นเฉยๆ มันก็อยู่ทรงดี ไม่หลุดหรอก

แบตเตอรี่

แบตเตอรี่ให้ติดไว้ด้านล่างตัวหุ่นด้วยแถบตีนตุ๊กแก (velcro) บนตัวหุ่นมีพื้นเรียบๆ เตรียมไว้ให้แล้ว แบต LiPo 7.4V/500mAh โดยทั่วไปจะมีขนาดประมาณ 55x30x10 มม. (บวกลบไม่กี่มม.) พอดีกับช่องนี้เป๊ะ

แบตเตอรี่ LiPo 7.4 V ติดไว้ด้านล่างด้วยแถบตีนตุ๊กแก

สุดท้าย มาทำให้หุ่นเราดูโปรด้วยการมัดสายเซอร์โวแต่ละขาให้เป็นกลุ่มๆ เรียบร้อย จะได้ไม่สะดุดสายตัวเองตอนเดิน แถมยังทำให้หุ่นดูเหมือนสัตว์สี่ขาตัวเป็นตัว เดินได้ ไม่ใช่กองสายเซอร์โว :) จัดไปวัยรุ่น!

สายเซอร์โวของแต่ละขาถูกมัดติดกับตัวหุ่นอย่างสวยงาม (พอใช้ได้

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

apps:
  - "1x Arduino IDE"
author: "StaffanEk"
category: "Motors & Robotics"
components:
  - "12x Servos (Tower Pro MG996R)"
  - "1x Soldering iron (generic)"
  - "1x UBEC DC/DC Step-Down (Buck) Converter - 5V @ 3A output"
  - "1x 3D Printer (generic)"
  - "1x Resistor 2.2k ohm"
  - "1x Arduino Pro Mini 328 - 5V/16MHz"
  - "1x Resistor 1k ohm"
  - "1x 7.4 V / 500 mAh LiPo Battery"
  - "1x IR (Infrared) Receiver Sensor - TSOP38238"
  - "1x Mini Remote Control"
description: "หุ่นยนต์เดิน 4 ขาแบบสัตว์เลี้ยงลูกด้วยนม ตึงๆ! แต่ละขามี 3DOF ควบคุมด้วย Arduino Pro Mini พร้อมเซนเซอร์รับอินฟราเรด ใช้งบน้อยกว่า $100 วัยรุ่นจัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/367f440b-e13f-42ba-aa08-289d4af00483.ino"
  - "https://projects.arduinocontent.cc/367f440b-e13f-42ba-aa08-289d4af00483.ino"
encryptedPayload: "U2FsdGVkX1+MBOEmbsjSUhOPQrwGtYDrBjGepgHSQjII6y6h9Tq0icyGnG7dJ6k9vX18T4HuLD41pXh/51tu0RPZLxwibeMWOEXzoIhcJL4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/kittybot-ebb3d3_cover.JPG"
lang: "en"
likes: 77
passwordHash: "169feac558a6379f6c7bdb2efa2ef551e23ad38188dcd05042a3d550ec262aeb"
price: 2450
seoDescription: "Build KITtyBot, a mammal-style four-legged robot with 3DOF legs, IR receiver, and Pro Mini for under $100."
tags:
  - "robot"
  - "quadruped"
  - "remote control"
title: "KITtyBot - หุ่นยนต์เดิน 4 ขา งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/-kKyywzqpHk"
views: 49056