กลับไปหน้ารวมไฟล์
self-balancing-wifi-controlled-robot-with-pantilt-camera-4f41f5.md

หุ่นยนต์ทรงตัวเองได้ (Self-Balancing Mobile Robot - SBMR) มันพิเศษยังไงนะเหรอ? ก็เพราะมันสามารถทรงตัวอยู่กับที่ได้ไงล่ะน้อง! โดยทั่วไป SBMR จะใช้อุปกรณ์วัดมุมเอียง (Inclination Angle) จากการรวมข้อมูลของ Accelerometer กับ Gyroscope แล้วก็ปรับตัวเองโดยการเคลื่อนที่ไปข้างหน้าหรือถอยหลังเพื่อให้มุมกลายเป็นศูนย์ (นั่นแหละที่เรียกว่าทรงตัว) ตัวควบคุม PID (Proportional-Integral-Derivative) จะเป็นคนตัดสินใจว่า "ต้องขยับเท่าไหร่" และ "ขยับเร็วแค่ไหน" เพื่อแก้ไขการล่องลอยของมุม (Angle Drift) และทำให้หุ่นยนต์นิ่งได้ไวๆ

ความท้าทายจะเพิ่มขึ้นอีกขั้นเมื่อเราต้องการควบคุมหุ่นยนต์แบบนี้ (ให้เคลื่อนที่หรือหมุน) ด้วยมือจากระยะไกล

โปรเจคนี้จะสาธิตวิธีสร้าง SBMR 2 ล้อพื้นฐานที่ควบคุมผ่าน WiFi จากระยะไกล พร้อมกล้อง WiFi ติดตั้งบนชุด Pan & Tilt ที่ขับเคลื่อนด้วยเซอร์โว มันถูกควบคุมด้วยมือโดยผู้ใช้จาก PC ผ่าน WiFi และเพราะเรามีสัญญาณวิดีโอสด (Live Video Feed) จากกล้องบนตัวหุ่น SBMR ตัวนี้จึงไม่จำเป็นต้องอยู่ในสายตาของผู้ควบคุม (ควบคุมลับหลังได้เลย!)

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

"Balance-Bot" ตัวนี้คือคลาสเรียนระดับมาสเตอร์ในเรื่อง การสืบสวนลูกตุ้มกลับหัว (Inverted Pendulum Forensics) และ การวินิจฉัยลูปควบคุมความถี่สูง (High-Frequency Control Loop Diagnostics) การทำให้มันทรงตัวบนสองล้อได้ ต้องอาศัยการประสานข้อมูลความเฉื่อย (Inertial Data) และการตอบสนองเชิงจลน์ (Kinetic Response) ให้แม่นยำ

โปรเจคนี้ใช้ประโยชน์จากสถาปัตยกรรม Dual-Core ของ RP2040 ในการนำกลยุทธ์การควบคุม PID (Proportional-Integral-Derivative) ที่แข็งแกร่งมาใช้ ด้วยการผนวกกล้องที่เชื่อมต่อ WiFi ไว้บนชุด Pan-Tilt แบบเมคคาทรอนิกส์ Balance-Bot นี้จึงช่วยให้เราควบคุมการเดินทางแบบ "เหนือสายตา" (Beyond Line of Sight - BLOS) ได้ ซึ่งเป็นการเปลี่ยนหุ่นยนต์ธรรมดาๆ ให้กลายเป็นโหนดการสื่อสารระยะไกล (Tele-presence Node) ที่ล้ำสมัยขึ้นมาเลย

เริ่มต้นกันเลย!

ขั้นตอนที่ 1: สร้างฮาร์ดแวร์ตามที่อธิบายไว้ในส่วน 'Hardware Development'

ขั้นตอนที่ 2: ติดตั้ง CASP เวอร์ชันล่าสุด (เวอร์ชัน 0.9.5.3 วันที่ 19.09.2022 ขึ้นไปจำเป็นสำหรับโปรเจคนี้) สามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ CASP และวิดีโอสอนได้จากแหล่งข้อมูลที่เกี่ยวข้อง

ขั้นตอนที่ 3: ดาวน์โหลดโปรเจคตัวอย่าง 'Self Balancing Remote Controlled Mobile Robot with On-board Camera' และทำตามขั้นตอนที่กล่าวไว้ในส่วน 'Software Development'

ขั้นตอนที่ 4: จำเป็นต้องมีการปรับแต่งบางอย่างตามที่อธิบายในส่วน 'Adjustments' เพื่อให้ซอฟต์แวร์ทำงานเข้ากันได้กับฮาร์ดแวร์ที่คุณสร้างขึ้น คุณยังสามารถปรับปรุงประสิทธิภาพของหุ่นยนต์เพิ่มเติมได้โดยการแก้ไขซอร์สโค้ดจาก Custom Blocks

ขั้นตอนที่ 5: สุดท้าย วิธีการควบคุม SBMR ด้วยคีย์บอร์ดและเมาส์จะถูกอธิบายไว้ในส่วน 'Control Methodology'

การพัฒนาฮาร์ดแวร์

มอเตอร์กระแสตรง (DC Motor) สองตัวถูกติดตั้งบนโครงฐานที่เหมาะสม พร้อมกับล้อ ส่วนประกอบแพนและทิลท์ (Pan & Tilt Assembly) ที่ติดตั้งเซอร์โวมอเตอร์ขนาดเล็ก (Micro Servo) สองตัว ก็ถูกติดตั้งไว้บนโครงในตำแหน่งที่เหมาะสมเช่นกัน แบตเตอรี่ 12V ถูกวางบนโครงฐาน ส่วนโมดูลอิเล็กทรอนิกส์ต่างๆ ก็ถูกจัดวางและเชื่อมต่อตามแผนภาพการต่อที่แสดงไว้ในส่วน 'Schematic' ครับ ภาพด้านล่างนี้คือตัวอย่างการจัดวางทั่วไป

ตัวอย่างการจัดวาง - Arduino Nano RP2040 Connect (ซ้าย) และ Raspberry Pi Pico (ขวา)

โปรเจกต์นี้ถูกสร้างและทดสอบแยกกันบนไมโครคอนโทรลเลอร์สองตัว คือ Arduino RP2040 Connect และ Raspberry Pi Pico ครับ บอร์ดไมโครคอนโทรลเลอร์เหล่านี้ทำหน้าที่เป็นสมองหลักของหุ่นยนต์ เราใช้มันในโหมดดวลคอร์ (Dual Core) และโอเวอร์คล็อกความถี่ขึ้นไปที่ 200MHz สำหรับ Arduino RP2040 และ 250MHz สำหรับ Raspberry Pi Pico เพื่อให้ได้เวลาตอบสนองที่เพียงพอสำหรับการทรงตัวของหุ่นยนต์ และการสื่อสารกับพีซีโฮสต์ผ่าน WiFi พร้อมๆ กัน

Arduino RP2040 มี IMU และ WiFi ในตัวอยู่แล้ว ดังนั้นจึงต้องการชิ้นส่วนภายนอกน้อยมากครับ คอร์-0 (Core-0) ถูกใช้สำหรับการสื่อสาร WiFi และบล็อก PWM ทั้งหมดสำหรับขับเคลื่อนล้อและเซอร์โวแพน/ทิลท์ของกล้อง ส่วนคอร์-1 (Core-1) ถูกใช้อย่างเต็มที่สำหรับ IMU และบล็อกที่จำเป็นสำหรับการทรงตัวของหุ่นยนต์

สำหรับ Raspberry Pi Pico นั้น คอร์-0 ถูกใช้สำหรับบล็อกที่จำเป็นสำหรับการทรงตัวของหุ่นยนต์ ส่วนคอร์-1 ถูกใช้สำหรับบล็อกที่เกี่ยวข้องกับการสื่อสารระยะไกลและการควบคุมหุ่นยนต์กับกล้องด้วยมือ เราใช้หน่วยวัดความเฉื่อย (Inertial Measurement Unit - IMU) รุ่น MPU-6050 (หรือ MPU-9250) สำหรับตรวจจับมุมเอียง (ในที่นี้คือมุม Roll เพราะทิศทางการติดตั้งของ IMU) ของหุ่นยนต์ มันสื่อสารกับไมโครคอนโทรลเลอร์บนบอร์ดผ่านอินเทอร์เฟซ I2C ครับ โมดูล WiFi ESP8266 ถูกใช้สำหรับสื่อสารกับพีซีโฮสต์ระยะไกลผ่าน WiFi โดยสื่อสารกับไมโครคอนโทรลเลอร์บนบอร์ดผ่านอินเทอร์เฟซอนุกรม (Serial Interface)

โมดูลกล้อง ESP32 ถูกติดตั้งบนชุดแพนและทิลท์เพื่อถ่ายวิดีโอสดและสตรีมไปยังพีซีโฮสต์ ไฟแฟลชที่อยู่บนโมดูล ESP32-CAM สามารถควบคุมได้ด้วยมือจากพีซีโฮสต์ในสภาพแสงน้อยได้

เราใช้แบตเตอรี่ 9V ถึง 12V เพื่อจ่ายไฟให้กับวงจรทั้งหมดบนหุ่นยนต์ และใช้ตัวแปลงแรงดัน DC Step Down จาก 9V/12V เป็น 5V เพื่อจ่ายไฟ 5V ที่จำเป็นให้กับไมโครคอนโทรลเลอร์, เซอร์โว และโมดูลกล้อง ESP32 ครับ

ล้วงลึกเทคนิค (Technical Deep-Dive)

  • การวิเคราะห์เสถียรภาพของลูป PID (PID Loop Stability Forensics):
    • เมทริกซ์เกนฮาร์มอนิก (The Gain-Matrix Harmonic): เสถียรภาพของหุ่นยนต์ถูกควบคุมโดยสัมประสิทธิ์สำคัญสามตัว: $K_p$ (สัดส่วน), $K_i$ (อินทิกรัล), และ $K_d$ (อนุพันธ์) ค่า $K_p$ ให้แรงแก้ไขทันทีตามค่าความผิดพลาดของมุมเอียง, $K_i$ ช่วยกำจัดค่าคลาดเคลื่อนคงที่ (Steady-State Offset) ที่เกิดจากการเลื่อนจุดศูนย์ถ่วง (CoG), และ $K_d$ ทำหน้าที่ลดทอนการ "สั่นไหวความถี่สูง (Jitter)" โดยการทำนายอัตราการเปลี่ยนแปลงของมุมเอียงล่วงหน้า
    • การวินิจฉัยเวลาลูป (Loop-Timing Diagnostics): เพื่อรักษาท่าทางตั้งตรง ลูปควบคุมต้องทำงานที่ความถี่ที่แน่นอน (โดยทั่วไป >100Hz) โปรเจกต์นี้ใช้ประโยชน์จากดวลคอร์ของ RP2040 โดยให้ คอร์-1 ทำงานเฉพาะสำหรับการอ่านค่า IMU และคำนวณ PID เท่านั้น ในขณะที่ คอร์-0 จัดการกับการส่งข้อมูลระยะไกล (Telemetry) ผ่าน WiFi และการเปลี่ยนสถานะ PWM ของมอเตอร์แบบไม่บล็อก (Non-blocking)
  • การผสานข้อมูลความเฉื่อยและฮาร์มอนิกของเซนเซอร์ (Inertial Fusion & Sensor Harmonics):
    • ฟิลเตอร์เสริม MPU6050 (MPU6050 Complementary Filter): ข้อมูลจาก Accelerometer ดิบมักมีสัญญาณรบกวนความถี่สูงจากการสั่นสะเทือน ในขณะที่ข้อมูลจาก Gyroscope มักมีปัญหา Drift ความถี่ต่ำ เราจึงใช้ "ฟิลเตอร์เสริม (Complementary Filter)" (หรือรูปแบบของ Kalman Filter) ในการผสานสัญญาณเหล่านี้ เพื่อให้ได้มุมเอียง $(\theta)$ ที่สะอาด, ตอบสนองเร็วสุดๆ และยังคงเสถียรแม้ในระหว่างการเคลื่อนไหวของหุ่นยนต์ที่รุนแรง
  • การโอเวอร์คล็อกและการวิเคราะห์การคำนวณ (Overclocking & Compute Forensics):
    • การโอเวอร์คล็อกเชิงความร้อน (Thermal Overclocking): เพื่อจัดการกับการคำนวณเลขทศนิยม 64-bit และแพ็กเก็ต WiFi ที่ปริมาณสูงพร้อมกัน RP2040 ถูกโอเวอร์คล็อกไปที่ 200MHz (และ Pico ไปที่ 250MHz) การวิเคราะห์การคำนวณนี้ช่วยให้มั่นใจว่าเวลาแฝง (Latency) ระหว่าง "ตรวจจับการเอียง" กับ "จ่ายแรงดันให้มอเตอร์" นั้นน้อยที่สุด ซึ่งป้องกันไม่ให้หุ่นยนต์เข้าสู่สถานะการแกว่งกวัดที่ควบคุมไม่อยู่ (Catastrophic Oscillatory State) ครับ

การพัฒนาซอฟต์แวร์

A) การตั้งค่า ESP32 Camera

ก่อนจะเอา ESP32 Camera ไปใช้ในโปรเจค ต้องโปรแกรมให้มันมี IP address ที่ถูกต้องก่อนนะน้อง อยากรู้รายละเอียดว่าโปรแกรมยังไง ลองไปดูตัวอย่างของเราได้เลย (ESP32-CAM example) หรือจะไปหาอ่านเพิ่มเติมตามอินเทอร์เน็ตก็มีเพียบ

B) ซอฟต์แวร์สำหรับไมโครคอนโทรลเลอร์และเป้าหมายแบบ Native

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

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

บล็อกที่เราสร้างเองในโมเดล Native บน PC จะสร้างสัญญาณควบคุมที่จำเป็นเมื่อผู้ใช้กดปุ่มบางปุ่มเพื่อควบคุมการเคลื่อนที่ของหุ่นยนต์

ส่วนบล็อกที่เราสร้างเองในโมเดล Target จะทำหน้าที่ปรับค่าจุดตั้ง (Set Point) ของมุมเอียง (ที่ป้อนเข้าไปในบล็อก Error) เพื่อนำทางหุ่นยนต์ตามคำสั่งจากผู้ใช้บน PC และยังปรับแต่งสัญญาณเอาต์พุตจาก PID controller ก่อนจะส่งไปขับมอเตอร์อีกด้วย น้องสามารถเข้าไปดูการตั้งค่าและซอร์สโค้ดของบล็อกเหล่านี้ได้เลย จะได้เรียนรู้วิธีนำบล็อกเหล่านี้ไปรวมกับบล็อกอื่นๆ ในโมเดล CASP

เราได้พัฒนาโมเดลสองตัวเพื่อให้บรรลุเป้าหมายที่ต้องการ

B.1) โมเดล Target ที่รันบน Arduino RP2040 Connect และ Raspberry Pi Pico ประกอบด้วย

  1. ตรรกะ Blink ที่บอกว่าระบบกำลังทำงาน รวมถึงบอกว่า IMU ทำงานปกติหรือเปล่า
  2. บล็อก IMU, PID controller ที่เราสร้างเอง และบล็อกสนับสนุนอื่นๆ ที่ช่วยรักษาสมดุลของหุ่นยนต์
  3. บล็อก WiFi และบล็อกสนับสนุนที่รับสัญญาณควบคุมที่จำเป็นจาก PC
  4. บล็อก PWM และ Servo ที่แมปกับพินของไมโครคอนโทรลเลอร์

ขั้นตอนต่อไปนี้คือวิธีโปรแกรมบอร์ด Target ให้ถูกต้องนะน้อง

  1. เชื่อมต่อบอร์ด Target กับ PC ผ่านสาย USB
  2. จดหมายเลขพอร์ตอนุกรม (Serial Port) ที่บอร์ดเชื่อมต่ออยู่จากระบบปฏิบัติการของ PC
  3. เปิดโปรแกรม CASP แล้วโหลดโปรเจค 'rc_target_arduino' สำหรับเป้าหมาย Arduino RP2040 หรือ 'rc_target_rpi' สำหรับเป้าหมาย Raspberry Pi เปิดไฟล์เวิร์กสเปซแล้วปรับค่าพารามิเตอร์ต่างๆ ของบล็อกตามที่อธิบายไว้ในส่วน Adjustments
  4. บล็อก WiFi communication ถูกตั้งค่าเป็นโหมด Station (สถานี) น้องอาจต้องป้อน SSID และรหัสผ่านของเครือข่ายที่อุปกรณ์ควรเชื่อมต่อ พารามิเตอร์ Local IP address ควรตั้งค่าเป็นที่ได้รับมาจาก DHCP client ของเครือข่าย
  5. เปิดเมนู Home->Simulation->Setup Simulation Parameters ภายใต้แท็บ TargetHW->General ให้ตั้งค่าพารามิเตอร์ 'Target Hardware Programmer Port' เป็นพอร์ตอนุกรมที่บอร์ดเชื่อมต่ออยู่
  6. บิลด์โมเดลและโปรแกรมบอร์ดโดยคลิกปุ่ม Run ได้เลย อย่าลืมเช็คให้ดีก่อนกดนะ!

B.2) โมเดล Native ที่รันบน PC ประกอบด้วย

  1. บล็อก Camera ที่รับวิดีโอสดจาก ESP32 Camera น้องต้องป้อน IP address ของ ESP32 Camera ในพารามิเตอร์ของบล็อกนี้

  2. บล็อก Image display สำหรับแสดงวิดีโอสดที่ได้รับจากกล้อง บล็อกนี้ยังถูกตั้งค่าให้ส่งสัญญาณจากคีย์บอร์ดและเมาส์ออกมาด้วย

  3. บล็อก RC control: นี่คือบล็อกที่เราสร้างเอง มันรับสัญญาณคีย์บอร์ดและเมาส์จากบล็อก Image display แล้วสร้างสัญญาณควบคุมที่เหมาะสมสำหรับควบคุมการเคลื่อนที่ของหุ่นยนต์และการเคลื่อนไหวของหัว (Pan & Tilt)

  4. บล็อก GPIO ที่แมปไปยังโมเดลเป้าหมายผ่านช่องทางการสื่อสาร WiFi

โมเดลเนทีฟที่รันบน PC โฮสต์

ขั้นตอนต่อไปนี้คือการรันโมเดลเนทีฟบน PC โฮสต์นะน้อง

  1. ก่อนจะไปต่อ ต้องแน่ใจว่า PC โฮสต์เชื่อมต่อกับเครือข่าย WiFi เดียวกันกับที่หุ่นยนต์เชื่อมอยู่ และหุ่นยนต์ต้องเปิดเครื่องพร้อมทำงานแล้ว
  2. โหลดโปรเจกต์ 'rc_native' เข้ามา
  3. คลิกที่เมนู Home->Simulation->Configure Simulation IO
  4. หน้าต่าง 'Configure Simulation Hardware' จะเปิดขึ้นมา ใต้หัวข้อ Native Nodes และ GPIO Device Nodes ให้เปลี่ยนค่า IP Address ที่วงไว้ในรูปด้านล่าง (โดยดับเบิลคลิกที่รายการ) ให้เป็น IP Address ของเครื่องโฮสต์และของบอร์ดตามลำดับ
หน้าต่าง Configure Simulation Hardware สำหรับเปลี่ยน IP ของโหนดเนทีฟ (PC โฮสต์) และอุปกรณ์ GPIO (Raspberry Pi Pico)
  1. คลิกปุ่ม 'Connect Device' แล้วติ๊กถูกที่ช่อง 'Online Data' โปรแกรมตอนนี้ควรจะสื่อสารกับบอร์ดเป้าหมายได้แล้ว โดยมีรอบเวลาประมาณ 30ms บอร์ดเป้าหมายตอนนี้จะปรากฏเป็นเอนด์พอยต์ 'EP0' ให้กับโมเดลเนทีฟ โมเดลเนทีฟสามารถใช้เอนด์พอยต์นี้เพื่อเชื่อมต่อไปยัง I/O ต่างๆ บนบอร์ดเป้าหมายได้
  2. คลิกปุ่ม 'Save' เพื่อบันทึกการตั้งค่าแล้วปิดหน้าต่าง
  3. รันโมเดลโดยคลิกปุ่ม Run หน้าต่าง Simulation Panel ควรจะเปิดขึ้นมาและเริ่มสื่อสารกับบอร์ด
  4. ภาพหน้าจอของ Simulation Panel ที่รันบน PC โฮสต์แสดงดังด้านล่าง
หน้าต่าง Simulation Panel พร้อมวิดีโอสดจากกล้องบนบอร์ด

วิศวกรรมและการนำไปใช้

  • WiFi Telemetry & Visual HMI:
    • UDP Control Bus: หุ่นยนต์สื่อสารกับ PC โฮสต์ผ่านบริดจ์ ESP8266 คำสั่งจากคีย์บอร์ด $(W, A, S, D)$ จะถูกส่งเป็นแพ็กเก็ต UDP แบบหน่วงเวลาต่ำ ซึ่งจะไปปรับค่าจุดตั้งค่า (set-point) ของ PID $(\theta_{ref})$ เพื่อสร้างความไม่สมดุลที่คำนวณไว้ ทำให้เกิดการเคลื่อนที่ไปหน้า/หลัง
    • Visual Pipeline: ESP32-CAM อีกตัวแยกต่างหากจะส่งสตรีมวิดีโอแบบ MJPEG กลับมา HMI บนโฮสต์ (ที่สร้างด้วย CASP) จะซ้อนกราฟสำหรับปรับแต่ง PID แบบเรียลไทม์ลงบนวิดีโอ ทำให้เราสามารถทำ "Live Forensics" คือปรับค่าเกนของคอนโทรลเลอร์ $(K_p, K_i, K_d)$ ไปพร้อมๆ กับที่หุ่นยนต์ทรงตัวอยู่ได้เลย
  • Mechatronic Gimbal Diagnostics:
    • Pan-Tilt Kinematics: กล้องบนบอร์ดถูกติดตั้งบนกิมบอลเซอร์โวสองแกน ทำให้สามารถสแกนภาพไปรอบๆ ได้โดยอิสระ โดยไม่รบกวนแกนหลัก (แกนโรล) ที่ใช้ทรงตัวของหุ่นยนต์

การปรับแต่ง

สำหรับไมโครคอนโทรลเลอร์บนบอร์ดเป้าหมาย

  1. ค่าออฟเซตของเซ็นเซอร์ IMU (บล็อก sen_offset) จำเป็นต้องปรับถ้าจุดศูนย์ถ่วงของหุ่นยนต์เอียงไปด้านใดด้านหนึ่ง และ/หรือ พื้นที่วางมีระดับเอียง
  2. พารามิเตอร์สัดส่วน (Proportional), อินทิกรัล (Integral) และอนุพันธ์ (Derivative) ของคอนโทรลเลอร์ PID ต้องถูกปรับแต่ง (tune) ตามเส้นผ่าศูนย์กลางล้อ, ความคลอนของล้อ (backlash), อัตราทดเกียร์ของมอเตอร์ขับเคลื่อน, ตำแหน่งติดตั้งเซ็นเซอร์ IMU, น้ำหนัก, ความสูง และจุดศูนย์ถ่วงของหุ่นยนต์
  3. พารามิเตอร์ 'PWM Minimum Offset' ในบล็อกคัสตอม ต้องปรับให้ตรงกับค่าต่ำสุดที่ทำให้มอเตอร์เริ่มหมุนได้เมื่อมีภาระ (โหลด)
  4. ตรรกะอื่นๆ ที่จำเป็นเพื่อปรับปรุงประสิทธิภาพของหุ่นยนต์ สามารถเพิ่มได้ในซอร์สโค้ดของบล็อกคัสตอม
  5. การต่อสายมอเตอร์ล้ออาจจะต้องสลับขั้ว เพื่อให้ได้การเคลื่อนที่ไปหน้า/หลังที่ถูกต้องเมื่อกด W และ S

สำหรับเป้าหมายแบบเนทีฟ (บน PC)

  1. ตรรกะสำหรับสร้างการหมุนของมอเตอร์ไปหน้าและถอยหลัง ถูกพัฒนามาให้เข้ากับไอซีขับมอเตอร์ที่ใช้ในโปรเจกต์นี้คือ TA6586 ผู้ใช้สามารถปรับเปลี่ยนตรรกะนี้ให้เหมาะสมได้ถ้าใช้ไอซีขับมอเตอร์ตัวอื่น
  2. เซอร์โวมอเตอร์อาจต้องการการปรับตำแหน่งตั้งต้น (alignment) ให้หันไปทางด้านหน้าของหุ่นยนต์ สำหรับมุมเริ่มต้น (default angle) ที่กำหนดในพารามิเตอร์ของบล็อก rc_control
  3. ความเร็วพื้นฐาน (Base speed), ขีดจำกัดความเร็ว (speed limits) และพารามิเตอร์อื่นๆ ที่เกี่ยวกับการนำทาง สามารถปรับได้จากพารามิเตอร์ของบล็อก rc_control

วิธีการควบคุม (Control Methodology)

  1. หน้าต่างแผงจำลอง (simulation panel) ที่เห็นด้านบน จะรับค่าจากคีย์บอร์ดและเมาส์ได้เมื่อมันอยู่ในสถานะ "active" นะ
  2. ผู้ใช้สามารถใช้ปุ่ม W – เพื่อเดินหน้า, S – เพื่อถอยหลัง, A – เพื่อหมุนซ้ายรอบจุดศูนย์กลาง และ D – เพื่อหมุนขวารอบจุดศูนย์กลาง
  3. สามารถกดปุ่มผสมระหว่าง W/S กับ A/D เพื่อเลี้ยวซ้ายหรือขวาขณะที่กำลังเดินหน้าหรือถอยหลังได้
  4. สามารถเพิ่มความเร็วชั่วคราวได้ด้วยการกดปุ่ม Shift ค้างพร้อมกับปุ่มอื่นๆ ที่ว่ามา ส่วนความเร็วพื้นฐาน (Base speed) ปรับได้ด้วยปุ่ม Page Up และ Page Down จัดไปวัยรุ่น!
  5. ปุ่ม K และ M ใช้ปรับมุมเอียงออฟเซต (offset inclination angle) ที่หุ่นยนต์จะทรงตัวได้ ณ ตำแหน่งนั้นๆ ค่านี้จำเป็นถ้าจุดศูนย์ถ่วงของหุ่นยนต์เอียงไปด้านใดด้านหนึ่ง และ/หรือ พื้นมีระดับลาดเอียงบ้าง
  6. มุมเซอร์โวแนวตั้งและแนวนอน (ตั้งแต่ -90 ถึง +90 องศา) สำหรับควบคุมตำแหน่งหัวหุ่นยนต์ สามารถควบคุมได้ด้วยการขยับเมาส์
  7. ปุ่ม ‘G’ ใช้เพื่อตั้งมุมเซอร์โวทั้งสองกลับไปที่มุมเริ่มต้น (default angle)
  8. ปุ่ม 'L' ใช้เพื่อเปิด/ปิดไฟแฟลช LED ของกล้อง ESP32 ห้ามช็อตนะตัวนี้!

สรุป (Conclusion)

Balance-Bot นี่แหละตัวแทนของสุดยอด Embedded Dynamic Stability ด้วยการเชี่ยวชาญ PID Forensics และ Dual-Core Orchestration ทำให้ aadhuniklabs สร้างแพลตฟอร์มหุ่นยนต์ที่ทั้งแข็งแกร่งและสามารถเดินทางในสภาพแวดล้อมซับซ้อนได้ โปรเจกต์นี้เป็นฐานที่มั่นคงสำหรับน้องๆ นักศึกษาและวิศวกรที่กำลังสำรวจจุดตัดระหว่างเมคคาทรอนิกส์, ทฤษฎีการควบคุม และการส่งข้อมูลไอโอทีความเร็วสูง


Equilibrium Mastered: Mastering inverted pendulum forensics through PID harmonics.

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

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

apps:
  - "1x Computer Aided Simulation Program (CASP)"
author: "aadhuniklabs"
category: "Motors & Robotics"
components:
  - "1x ESP32 Camera Module Development Board"
  - "1x Raspberry Pi Pico"
  - "1x DC Power Jack"
  - "1x 9V to 12V Battery"
  - "2x Servo Motor SG90 180 degree"
  - "1x Jumper Wires"
  - "1x ESP8266 ESP-01"
  - "1x Robot Base Frame / Chassis"
  - "2x Geared DC Motor, 12 V"
  - "1x 6 DOF Sensor - MPU6050"
  - "1x Pan-Tilt HAT"
  - "1x Arduino Nano RP2040 Connect"
  - "1x 12V to 5V Step Down DC Converter"
description: "นี่คือหุ่นยนต์เคลื่อนที่ทรงตัวได้เองแบบเทพๆ พร้อมกล้อง PanTilt ที่เราสั่งงานจาก PC ตัวแม่ได้สบายๆ ไม่ต้องมองเห็นตัวมันก็บังคับได้ งานง่ายแต่หล่อ วัยรุ่นสายช่างต้องลอง!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/aMVVTFWGbPUkcT/z0jRwfSP2XtvJkN6BrLkztbLILDOnuajjZuVILSLgVhLLT0U0DMUcoN53oUfkr9KfIq9PGeIpwSTjLvjBOu5b2cWYqX/XPtv0Lx1bI"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/self-balancing-wifi-controlled-robot-with-pantilt-camera-4f41f5_cover.jpg"
lang: "en"
likes: 1
passwordHash: "ef63c518a3930bae1d73631455c444b9fd6e45452dc5de3c7aa1472faa10b556"
price: 299
seoDescription: "Build a Self Balancing WiFi Controlled Robot with PanTilt Camera for remote navigation from a host PC without line of sight."
tags:
  - "embedded"
  - "robot"
  - "casp"
  - "robotics"
  - "remote control"
title: "หุ่นยนต์ทรงตัวได้เองสุดเท่ ควบคุมผ่าน WiFi พร้อมกล้อง PanTilt จัดเต็ม!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/gPRNBuZrreA"
views: 5033