หน้าแรก ดูโปรเจกต์ทั้งหมด
Expert

โปรเจกต์ รถ LEGO Car แบบ Autonomous Controllable

รถ Autonomous car ที่สร้างจากโครง LEGO frame ซึ่งสามารถตอบสนองต่อวัตถุที่อยู่ใกล้และยังสามารถควบคุมแบบ manual ผ่าน remote control ได้

โปรเจกต์ รถ LEGO Car แบบ Autonomous Controllable

รายการอุปกรณ์และเครื่องมือ

1x Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
-
2x Through Hole Resistor, 470 ohm
🛒 สั่งซื้อ
1x High Brightness LED, White
🛒 สั่งซื้อ
1x L9110S H Bridge Stepper Motor Dual DC Driver
🛒 สั่งซื้อ
1x Mastech MS8217 Autorange Digital Multimeter
-
4x Tactile Switch, Top Actuated
🛒 สั่งซื้อ
6x Alligator Clips
-
1x Soldering iron (generic)
-
1x Solder Wire, Lead Free
-
1x SG90 Micro-servo motor
🛒 สั่งซื้อ
1x Rotary potentiometer (generic)
🛒 สั่งซื้อ
1x HX1838 Universal IR Infrared Remote Control Receiver Module
🛒 สั่งซื้อ
1x Ultrasonic Sensor - HC-SR04 (Generic)
🛒 สั่งซื้อ
1x Mindstorms NXT Programming Brick / Kit
-
1x Multitool, Screwdriver
-
20x Jumper wires (generic)
🛒 สั่งซื้อ
1x 28YBJ-48 DC 5V 4 Phase 5 Wire Stepper Motor With ULN2003 Driver Board
🛒 สั่งซื้อ

รายละเอียดและวิธีทำ

โปรเจกต์นี้ในตอนแรกตั้งใจจะให้เป็นเพียงรถยนต์ autonomous car เท่านั้น แต่ตอนนี้สามารถควบคุมผ่าน ir remote ได้แล้ว และมีโหมดการทำงานที่หลากหลาย

วิดีโอสาธิตโหมด autonomous (แสดงฟังก์ชันการทำงานเพียงบางส่วน):

https://drive.google.com/open?id=126jOe0hW5icCXwZKOfq9FwXliD9OTmMg

วิดีโอสาธิตฟีเจอร์บางส่วนของโหมด manual remote control:

https://drive.google.com/open?id=126JjX6tSEosiP-KrMrqGhR9_1tSVFlhk

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

http://nxtprograms.com/NXT2/3-motor_chassis/index.html.

หลังจากประกอบโครงสร้างพื้นฐานเสร็จ ผมได้ติดตั้ง Arduino Uno ลงในตำแหน่งเดียวกับที่ควรจะเป็นที่วาง battery pack ของ Mindstorms NXT ตามคู่มือข้างต้น สำหรับการติดตั้ง motors/sensors และ battery pack ที่เหลือ ผมได้ทดลองใช้โครงสร้างตัวต่อหลายรูปแบบเพื่อให้ได้จุดเชื่อมต่อที่แข็งแรงที่สุด ผมไม่มีคู่มือการประกอบสำหรับส่วนเสริมเหล่านี้เพราะเป็นการทดลองทำไปเรื่อยๆ แต่จากรูปภาพน่าจะช่วยให้เห็นภาพรวมได้

มุมมองด้านหน้าของรถ แสดงส่วน stepper และกันชนหน้า

มุมมองด้านหลังของรถ แสดงส่วน battery pack

รถคันนี้ใช้ ultrasonic sensor ในการวัดระยะทาง โดยติดตั้งไว้สูงกว่า stepper motor ประมาณ 5 นิ้ว ตัว stepper motor จะถูกใช้งานอย่างหนักเมื่อรถอยู่ในโหมด autonomous เพื่อหมุน ultrasonic sensor อย่างต่อเนื่อง (เพื่อให้ได้รัศมีการมองเห็นที่กว้าง) รวมถึงใช้ตรวจสอบมุมต่างๆ โดยรอบเพื่อหาเส้นทางใหม่เมื่อตรวจพบสิ่งกีดขวางในระยะที่ใกล้เกินไป นอกจากนี้ยังมีการใช้ push buttons (ทั้งด้านหน้าและด้านหลังรถ) ในกรณีที่ ultrasonic module ตรวจไม่พบวัตถุที่อยู่ด้านหน้าโดยตรง (เนื่องจากมุมในการตรวจจับของ module รุ่นที่ผมใช้นั้นค่อนข้างแคบ)

Stepper Motor ที่ยึด ultrasonic sensor ไว้ โดยสายไฟของเซนเซอร์ควรปล่อยให้ห้อยลงมาอย่างหลวมๆ

มีการติดตั้ง servo motor ไว้ที่ด้านขวาของรถ เชื่อมต่อกับตัวเตะที่สร้างจาก LEGO ซึ่งยึดด้วยสกรูที่มาพร้อมกับ servo เมื่อรถตรวจพบวัตถุในระยะ 15 cm มันจะสั่งให้ servo เตะออกไป จากนั้นจึงถอยห่างจากวัตถุนั้น ตอนนี้มันเป็นเพียงวิธีสนุกๆ ในการ "โจมตี" วัตถุที่อยู่ตรงหน้า แต่ในอนาคตสามารถนำ servo นี้ไปประยุกต์ใช้งานอื่นๆ ได้ เช่น ใช้เตะบอลในการแข่งขันหุ่นยนต์เตะฟุตบอล

การติดตั้ง Servo Motor

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

ผมใช้ NXT motors ที่มาในชุด kit เป็นมอเตอร์ขับเคลื่อนของรถ ในการควบคุม NXT motors ด้วย Arduino นั้น จำเป็นต้องปอกสาย NXT โดยจะใช้เพียงสายไฟสองเส้นที่อยู่ด้านหนึ่ง (สีดำและสีขาว) ส่วนอีกสี่เส้นที่เหลือสามารถละเว้นได้ จากนั้นนำสายทั้งสองเส้นนี้ไปเชื่อมต่อกับ output pins ของ L9110 dual motor driver

infrared sensor ถูกเพิ่มเข้ามาเป็นอีกส่วนสำคัญของโปรเจกต์นี้เพื่อให้สามารถควบคุมรถแบบ manual ได้ ผมใช้รีโมททีวีเป็นตัวส่งสัญญาณ (transmitter) แต่จริงๆ แล้วอุปกรณ์ที่ส่งสัญญาณอินฟราเรดชนิดใดก็ได้สามารถใช้งานได้เช่นกัน อย่างไรก็ตาม รีโมทแต่ละเครื่องจะส่งค่าที่แตกต่างกันสำหรับปุ่มนั้นๆ ดังนั้นเราจึงต้องเปลี่ยนค่า hexadecimal ที่เกี่ยวข้องกับแต่ละปุ่มโดยการทำ mapping ค่าเหล่านี้ สามารถดูตัวอย่างวิธีการทำได้จาก library "IRremote.h" ในปัจจุบัน ผมสามารถใช้รีโมทเพื่อเปลี่ยนทิศทางและองศาการเคลื่อนที่, หมุน ultrasonic sensor, สั่งเตะทั้งสองทิศทาง และเข้าสู่โหมดปุ่มกด (การทำงานแบบ autonomous โดยใช้เพียง push buttons)

ตัวรับสัญญาณ ir receiver ติดตั้งให้หันขึ้นด้านบนบริเวณเหนือกันชนหลัง

ฟังก์ชันปัจจุบันที่กำหนดให้กับแต่ละปุ่มบนรีโมททีวี

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: autonomous-controllable-lego-car-4c16b3
2450 บาท
PromptPay QR Code