ชื่อโปรเจกต์: Obstacle Avoidance Robot
ในบทความก่อนหน้านี้ พี่สอนเรื่องพื้นฐานการคุม L298N Motor Driver ไปแล้วนะ คราวนี้มาดูกันหน่อยว่าไอ้เจ้าบอร์ดตัวนี้มันจะมีประโยชน์แค่ไหนในงานสาย Robotics
เวลาเราจะปั้นหรือออกแบบระบบหุ่นยนต์สักตัวเนี่ย เราต้องเช็กให้ชัวร์ว่าเราเก็บครบ 5 หัวข้อหลักนี้หรือยัง :
อย่างแรก, โจทย์และหน้าที่ของมัน (The Task & functionality), ในตัวอย่างนี้ โจทย์ของเราคือการทำหุ่นยนต์ **ดูดฝุ่น** และหน้าที่ที่ต้องมีเพื่อให้งานสำเร็จก็คือ **การหลบหลีกสิ่งกีดขวาง (Avoiding obstacles)** เพราะงั้นโฟกัสที่จุดนี้แล้วทำออกมาให้เนียนนะน้อง
อย่างที่สอง, ค่า Input และ [Sensor](https://s.shopee.co.th/7VBG2rX65j) ที่ใช้เก็บข้อมูล, เราต้องรู้ก่อนว่าค่าที่เราสนใจคืออะไร แล้วค่อยไปถอย Sensor ที่เหมาะสมมาใช้ ในโปรเจกต์นี้สิ่งที่เราอยากรู้คือ **สิ่งกีดขวาง** ดังนั้น Sensor ที่ตอบโจทย์ที่สุดก็คือ **Ultrasonic range finder** ที่พี่เคยเหลาพื้นฐานให้ฟังไปแล้วในบทความแรกไงล่ะ
อย่างที่สาม, สมองกล! (The brain) พอได้ข้อมูลมาแล้ว มันก็ต้องมีการ **ประมวลผล (Data processing)** ซึ่งการจะเลือกเทคโนโลยีสมองกลให้เป๊ะบางทีมันก็แอบเขี้ยวอยู่นะ แต่สำหรับงานนี้ เราใช้แค่ **Micro-controller** มาสั่งงานอย่างเดียวก็พอ เช่นบอร์ดพิมพ์นิยมอย่าง **[Arduino](https://s.shopee.co.th/7fUgFAWSki) Uno** จัดไปวัยรุ่น!
อย่างที่สี่, ภาคเอาต์พุต (The actuators), เคสนี้นอนมาเลยก็คือ **Motors** นั่นเอง หลังจากที่ **Micro-controller** ประมวลผลข้อมูลจาก **Sensor** เสร็จแล้ว ก็ถึงเวลาสั่งการให้ Actuators "ขยับ" ตามที่เราเขียนโปรแกรมไว้... แหม การได้เป็น Programmer สั่งการทุกอย่างได้เนี่ยมันหล่อเท่จริงๆ ว่าไหม?
อย่างที่ห้า , ขุมพลัง!!! (Power!!!) จุดนี้แหละที่จะบังคับให้เราต้องเปิด Datasheet เพื่อคำนวณว่าต้องใช้แรงดันไฟเท่าไหร่ถึงจะรอด สำหรับงานนี้ แบตเตอรี่ **9V** ถือว่ากำลังสวย เมื่อเทียบกับค่า Voltage drop ของบอร์ด **L298N** และ **Arduino Uno** ส่วนหลักการทำงานของ **L298N** พี่เคยอธิบายไว้แล้วในบทความก่อนๆ ไปย้อนดูได้
สุดท้ายนะไอ้น้อง ทุกอย่างที่ว่ามาต้องจับมายัดลงบน **Chassis** หุ่นยนต์ให้เรียบร้อย! เอาล่ะ เลิกกลัวมือเลอะแล้วลงมือทำได้แล้ว!
รายละเอียดเทคนิคเพิ่มเติม (ฉบับจัดเต็ม)
Ultrasonic Rangefinding
หุ่นยนต์ตัวนี้มันเดินเองได้เพราะใช้หลักการ "สะท้อนเสียง" เหมือนพวกค้างคาวเลยนะน้อง
- HC-SR04 Sensor: เจ้า Arduino จะส่งสัญญาณ Trigger ขนาด 10µs ไปที่ตัวเซนเซอร์ จากนั้นก็นับเวลาที่สัญญาณสะท้อนกลับมาที่พิน Echo แล้วเราก็เอาความเร็วเสียง (343 เมตร/วินาที) มาคำนวณหาระยะทางจนถึงวัตถุที่ใกล้ที่สุด ห้ามลืมสูตรนะเว้ย!
- Sweep Logic: ในหลายๆ เวอร์ชั่น พี่จะเอา Sensor ไปติดไว้บน Micro Servo ทำให้หุ่นยนต์มัน "ส่ายหัว" มองซ้ายมองขวาก่อนจะตัดสินใจเลี้ยวได้ด้วย โคตรล้ำ!
Navigational Algorithms (อัลกอริทึมการเดิน)
- Threshold Detection: ถ้าเจอวัตถุในระยะ 20cm หุ่นยนต์จะหยุดกึก! แล้วถอยหลังนิดนึง จากนั้นมันจะสแกนหาทางออกทั้งซ้ายและขวา แล้วเลือกเลี้ยวไปทางที่ไม่มีอะไรขวาง หรือทางที่ทางสะดวกที่สุดนั่นเอง
- Motor Control: เราคุมผ่าน L298N หรือ L293D H-Bridge เพื่อให้ Arduino สั่งแยกความเร็วและทิศทางของล้อซ้าย-ขวาได้อิสระ จะหมุนตัวแบบวงแคบ (Zero-radius turns) ก็ทำได้สบายๆ สู้งานนะน้อง!