Autonomous Controllable LEGO Car
จากโปรเจกต์รถ Autonomous พื้นฐาน ได้พัฒนาไปสู่หุ่นยนต์อัจฉริยะที่สามารถทำงานได้หลายโหมดที่หลากหลาย รวมถึงการหลีกเลี่ยงสิ่งกีดขวางอัตโนมัติ และการควบคุมระยะไกลผ่านรีโมต IR (infrared) โปรเจกต์นี้เป็นการรวมชุดตัวต่อ LEGO Mindstorms ที่ยืดหยุ่นสูงเข้ากับความสามารถในการควบคุมเชิงลึกอันทรงพลังของไมโครคอนโทรลเลอร์ Arduino Uno
Demonstration Videos
โหมดขับเคลื่อนอัตโนมัติ (Autonomous Driving Mode): ในโหมดนี้ หุ่นยนต์จะใช้ระบบเซ็นเซอร์ในการตัดสินใจเลือกเส้นทางด้วยตนเอง Watch Autonomous Operation Demo
โหมดควบคุมระยะไกล (Remote Control Mode (Manual IR Control)): คำสั่งแบบเรียลไทม์เพื่อควบคุมทิศทางและฟังก์ชันเสริมต่างๆ Watch Remote Control Demo
Mechanical Design
โครงสร้างหลักของรถสร้างขึ้นทั้งหมดจากชิ้นส่วน LEGO Mindstorms NXT โดยอ้างอิงการออกแบบ 3-motor chassis พื้นฐาน ซึ่งให้ความแข็งแรงและสมดุลที่ดี
Arduino Uno ถูกติดตั้งในตำแหน่งเดิมของชุดแบตเตอรี่ NXT เพื่อรักษาสมดุลจุดศูนย์ถ่วง (Center of Gravity) ของรถ การติดตั้ง Servo Motor, Stepper Motor และแบตเตอรี่เสริมผ่านการทดสอบการออกแบบเชิงทดลองเพื่อให้แน่ใจว่ามีการติดตั้งที่มั่นคงที่สุด แม้ในระหว่างการเคลื่อนที่ของรถอย่างรวดเร็ว


Sensing & Scanning
หัวใจสำคัญของการรับรู้สภาพแวดล้อมคือ Ultrasonic Sensor ซึ่งติดตั้งอยู่บน Stepper Motor สูงจากพื้นประมาณ 5 นิ้ว การใช้ Stepper Motor แทนการติดตั้งแบบตายตัวทำให้หุ่นยนต์มีรัศมีวิสัยทัศน์ที่กว้างขึ้น
- ตรรกะการสแกน: ในโหมดอัตโนมัติ Stepper Motor จะทำการสแกนมุมกว้างอย่างต่อเนื่อง หากตรวจพบสิ่งกีดขวางภายในระยะที่กำหนด โปรแกรมจะสั่งให้ Stepper ทำการสแกน 360 องศาโดยละเอียดแบบองศาต่อองศารอบตัว เพื่อคำนวณเส้นทางที่ปลอดภัยที่สุด
- การป้องกันทางกายภาพ: นอกจากระบบ Ultrasonic แล้ว ยังมีการติดตั้ง Push Button ทั้งที่กันชนหน้าและหลัง เพื่อทำหน้าที่เป็น fail-safe ในกรณีที่วัตถุมีขนาดเล็กเกินไป หรืออยู่ในตำแหน่งที่คลื่น Ultrasonic ไม่สามารถตรวจจับได้

Actuation & Features
ฟังก์ชันที่น่าสนใจอย่างหนึ่งคือ ระบบ "Kicker" ซึ่งเป็นกลไกการเตะที่ขับเคลื่อนด้วย Servo Motor ที่ติดตั้งอยู่ด้านขวาของรถ พร้อมด้วยตรรกะที่ตั้งโปรแกรมไว้ดังนี้:
- โหมดโจมตี (Attack Mode): หาก Ultrasonic sensor ตรวจจับวัตถุในระยะใกล้ (น้อยกว่า 15 ซม.) หุ่นยนต์จะสั่งให้ Servo ปล่อยกลไกการเตะออกไปทันที และถอยหลังเพื่อรักษาระยะห่าง ฟังก์ชันนี้สามารถปรับใช้เพื่อสร้างหุ่นยนต์เล่นฟุตบอลในอนาคตได้
- โหมดหลีกเลี่ยง (Avoidance Mode): หากตรวจพบวัตถุภายในระยะ 15 - 50 ซม. หุ่นยนต์จะคำนวณทิศทางเพื่อเลี้ยวและหลีกเลี่ยงโดยอัตโนมัติ
- โหมดลาดตระเวน (Cruising Mode): หากไม่มีวัตถุขวางเส้นทางภายในระยะ 50 ซม. รถจะขับตรงไปข้างหน้าและหยุดเป็นระยะเพื่อสแกนหาเส้นทางใหม่ ทำให้สามารถสำรวจแบบสุ่มได้

Motor Control & IR Logic
สำหรับการขับเคลื่อน ผมเลือกใช้มอเตอร์จากชุด LEGO NXT ดั้งเดิม เนื่องจากมี Torque สูง อย่างไรก็ตาม เพื่อให้สามารถใช้งานร่วมกับ Arduino ได้ จำเป็นต้องมีการปรับแต่งสายสัญญาณ:
- อินเทอร์เฟซฮาร์ดแวร์: สายมอเตอร์ NXT ถูกถอดฉนวน โดยใช้เพียงสองเส้น (สีดำและสีขาว) เพื่อรับสัญญาณไฟ DC
- Motor Driver: สายทั้งสองเส้นเชื่อมต่อกับ L9110 Dual Motor Driver ทำให้ Arduino สามารถควบคุมทิศทางการหมุนและความเร็วได้อย่างแม่นยำผ่านสัญญาณ PWM (Pulse Width Modulation)
สำหรับระบบควบคุมระยะไกล ผมได้ติดตั้ง IR Receiver เพื่อรับสัญญาณจากรีโมตทีวี
- การถอดรหัส IR: การทำงานอาศัยไลบรารี
IRremote.hเราจำเป็นต้องจับคู่ค่าเลขฐานสิบหกของแต่ละปุ่มบนรีโมตเข้ากับฟังก์ชันที่ต้องการ ตัวอย่างเช่น ปุ่มเพิ่มเสียงอาจสั่งให้รถเคลื่อนที่ไปข้างหน้า หรือปุ่มเปลี่ยนช่องอาจสั่งให้รถเลี้ยว - ความหลากหลาย: ผู้ใช้สามารถสลับโหมดการทำงานได้ทันทีจากรีโมต ไม่ว่าจะเป็นการควบคุมด้วยตนเอง การสั่งให้มอเตอร์สแกนเนอร์ทำงาน หรือการเข้าสู่ "Bumper Mode" (การทำงานอัตโนมัติโดยใช้เฉพาะ Push Button ที่กันชน)


โปรเจกต์นี้แสดงให้เห็นถึงศักยภาพของการรวมเทคโนโลยี Microcontroller สมัยใหม่อย่าง Arduino เข้ากับลักษณะคลาสสิกของ LEGO เพื่อสร้างระบบฝังตัว (embedded system) ที่ทั้งสนุกและให้ความรู้เชิงวิศวกรรมอย่างแท้จริง