หุ่นยนต์ไลน์โฟลว์เวอร์ (Line Follower Robot)
จัดไปวัยรุ่น! มาดูคลิปสาธิตการทำงานเบื้องต้นกันก่อนเลย
เซ็นเซอร์ตรวจจับระยะใกล้ (Proximity Sensor) คือเซ็นเซอร์ที่ตรวจจับวัตถุที่อยู่ใกล้ๆ ได้โดยไม่ต้องสัมผัส มันมักจะปล่อยสนามแม่เหล็กไฟฟ้าหรือลำแสง (เช่น อินฟราเรด) ออกมา แล้วคอยดูว่ามีการเปลี่ยนแปลงในสนามหรือสัญญาณที่สะท้อนกลับมาหรือเปล่า
หลักการทำงานของไลน์โฟลว์เวอร์
หลักการทำงานของหุ่นไลน์โฟลว์เวอร์มันเกี่ยวกับ "แสง" นะน้อง เราจะใช้พฤติกรรมของแสงเมื่อตกกระทบบนพื้นผิวสีขาวกับสีดำ พอแสงตกกระทบบนพื้นผิวสีขาว มันจะสะท้อนกลับเกือบทั้งหมด แต่ถ้าเป็นพื้นผิวสีดำ แสงจะถูกดูดซับหมดเลย พฤติกรรมของแสงนี่แหละที่เราเอามาใช้ในการสร้างหุ่นยนต์ไลน์โฟลว์เวอร์


ในหุ่นยนต์ไลน์โฟลว์เวอร์ที่ใช้ Arduino ตัวนี้ เราใช้ตัวส่งสัญญาณอินฟราเรด (IR Transmitter) และตัวรับ (IR Receiver) หรือที่เรียกอีกอย่างว่าโฟโตไดโอด (Photo Diodes) มันใช้สำหรับส่งและรับแสง IR จะปล่อยแสงอินฟราเรดออกมา พอแสงอินฟราเรดตกกระทบบนพื้นผิวสีขาว มันจะสะท้อนกลับมาและถูกโฟโตไดโอดจับได้ ซึ่งจะทำให้เกิดการเปลี่ยนแปลงแรงดันไฟฟ้า แต่ถ้าแสง IR ตกกระทบบนพื้นผิวสีดำ แสงจะถูกดูดซับหมด ไม่มีอะไรสะท้อนกลับมา โฟโตไดโอดก็จะไม่ได้รับแสงใดๆ
สรุปง่ายๆ ในโปรเจคนี้: เมื่อเซ็นเซอร์ตรวจจับพื้นผิวสีขาว Arduino จะได้อินพุตเป็น '1' แต่ถ้าตรวจจับเส้นสีดำได้ Arduino จะได้อินพุตเป็น '0' ห้ามช็อตนะตัวนี้ มันง่ายแบบนี้แหละ!
อธิบายวงจร
หุ่นยนต์ไลน์โฟลว์เวอร์ Arduino ทั้งหมดสามารถแบ่งออกเป็น 3 ส่วนหลัก: ส่วนเซ็นเซอร์, ส่วนควบคุม และส่วนขับมอเตอร์
ส่วนเซ็นเซอร์:
ส่วนนี้ประกอบด้วยไดโอดอินฟราเรด, โพเทนชิโอมิเตอร์ (Potentiometer), ตัวเปรียบเทียบสัญญาณ (Comparator หรือ Op-Amp) และ LED โพเทนชิโอมิเตอร์ใช้สำหรับตั้งค่าแรงดันอ้างอิง (Reference Voltage) ที่ขาหนึ่งของตัวเปรียบเทียบ ส่วนเซ็นเซอร์ IR ใช้ตรวจจับเส้นและให้การเปลี่ยนแปลงแรงดันที่ขาอีกข้างของตัวเปรียบเทียบ จากนั้นตัวเปรียบเทียบก็จะเปรียบเทียบแรงดันทั้งสองและสร้างสัญญาณดิจิทัลที่เอาต์พุต ในวงจรไลน์โฟลว์เวอร์นี้เราใช้ตัวเปรียบเทียบสองตัวสำหรับเซ็นเซอร์สองตัว เราใช้ LM358 เป็นตัวเปรียบเทียบ เพราะ LM358 มี Op-Amp แบบ Low Noise อยู่ภายในสองตัวเลย สะดวกดี
การทำงานของหุ่นยนต์ไลน์โฟลว์เวอร์ด้วย Arduino
การทำงานของไลน์โฟลว์เวอร์น่าสนใจมาก หุ่นยนต์จะตรวจจับเส้นสีดำโดยใช้เซ็นเซอร์ แล้วส่งสัญญาณไปให้ Arduino จากนั้น Arduino ก็จะขับเคลื่อนมอเตอร์ตามผลลัพธ์จากเซ็นเซอร์

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

ถ้าเซ็นเซอร์ซ้ายตรวจจับเส้นสีดำได้ หุ่นยนต์จะเลี้ยวซ้าย

ถ้าเซ็นเซอร์ฝั่งขวาจับเส้นดำได้ หุ่นยนต์จะเลี้ยวขวาจนกว่าเซ็นเซอร์ทั้งสองข้างจะเจอพื้นสีขาว พอเจอพื้นขาวเมื่อไหร่ หุ่นยนต์ก็จะกลับมาเดินหน้าต่อเหมือนเดิม

ถ้าเซ็นเซอร์ทั้งสองข้างเจอเส้นดำพร้อมกัน หุ่นยนต์จะหยุด

รายละเอียดเทคนิคแบบจัดเต็ม
หุ่นยนต์ไลน์โฟลว์เวอร์ นี่แหละคือรากฐานของยานยนต์อัตโนมัติในโรงงานเลย! เหมือนที่ใช้ในโกดัง Amazon ขนาดยักษ์เพื่อเคลื่อนย้ายชั้นวางสินค้าตามรางที่ทาสีไว้ โปรเจคนี้บังคับให้โปรแกรมเมอร์ต้องเชื่อมเซ็นเซอร์อินฟราเรดสะท้อน (IR Reflection Sensor) สองตัว เข้ากับบอร์ดขับมอเตอร์ L298N เพื่อให้ Arduino Uno ของเรา "ไล่ล่า" เส้นสีดำบนพื้นได้แบบเรียลไทม์ เป็นพันครั้งต่อวินาที!
ชุดเซ็นเซอร์อินฟราเรดคู่ (TCRT5000)
หุ่นยนต์ของเรามี "ตา" สองข้างจ้องลงไปที่พื้น ใช้หลักการสะท้อนของแสงอินฟราเรด (พื้นสีขาวสะท้อนแสง IR ได้ดี ส่วนเทปสีดำดูดซับแสง IR หมด)
- เซ็นเซอร์ IR ซ้าย ต่อกับ
Pin 2ส่วน เซ็นเซอร์ IR ขวา ต่อกับPin 3 - "ตา" ทั้งสองข้างจะอยู่คนละฝั่งของเส้นเทปดำ!
ทั้งคู่จะอ่านค่าเป็นพื้นขาว (LOW)! - ลูปการทำงานหลัก (
Digital Array):int leftEye = digitalRead(2); int rightEye = digitalRead(3);if (leftEye == LOW && rightEye == LOW) { // อยู่บนพื้นขาว! driveForward(200); // PWM 200! ให้มอเตอร์ทั้งสองหมุนเต็มที่! }
เบรกไม่สมมาตร (ไล่ล่าโค้ง)
ถ้าหุ่นยนต์เจอโค้งหักศอก 90 องศาไปทางซ้าย ตาซ้ายจะวิ่งไปทับเส้นดำทันที และค่าจะเปลี่ยนเป็น HIGH! เหมือนในอนิเมชั่นที่เซ็นเซอร์ซ้ายอยู่บนเส้นดำ
- หุ่นยนต์จะรู้ตัวว่ากำลังจะหลุดออกจากรางทางฝั่งขวา!
- เทคนิคการแก้ไข: อย่าแค่ "เลี้ยวซ้าย" ธรรมดา! ต้องหยุดล้อซ้ายสนิท!
if (leftEye == HIGH && rightEye == LOW) { // กำลังหลุดขวา! motorRight(200); // ฉีดล้อขวาให้หมุนเต็มที่! motorLeft(0); // หยุดล้อซ้ายสนิท เพื่อให้ตัวหุ่นยนต์หมุนตัว! } - เมื่อรันลอจิกนี้ทุกมิลลิวินาที หุ่นยนต์จะสั่นและเลื้อยไปตามรางที่ซับซ้อนได้อย่างรวดเร็ว ตรึงตัวอยู่ใน "ทางเดินแสง" ได้อย่างแม่นยำ ตามที่เห็นในอนิเมชั่น
ฮาร์ดแวร์สำหรับสร้างหุ่นยนต์อัตโนมัติ
- Arduino Uno/Nano (พื้นฐานต้องมี)
- โมดูลเซ็นเซอร์ตรวจจับเส้นอินฟราเรด TCRT5000 (แบบหยดน้ำ) (ห้ามใช้โมดูล IR "หลบหลีกสิ่งกีดขวาง" ทั่วไปเด็ดขาด! มันมีมุมรับแสงกว้างเกินไป จะทำให้หุ่นหลงทางแบบไม่เป็นท่า!)
- บอร์ดขับมอเตอร์ L298N
- ฐานหุ่นยนต์ 2 ล้อหรือ 4 ล้อ (ฐาน 2 ล้อพร้อมล้อเลื่อนหน้าจะเลี้ยวได้ลื่นกว่าฐาน 4 ล้อเป็นร้อยเท่า!)
- เทปพันสายไฟสีดำ ไว้สร้างรางแข่งบนโต๊ะไม้สีอ่อนหรือพื้นกระเบื้อง!
*******ของที่ต้องหามา*******
Arduino UNO - หาซื้อได้ตามร้านขายอุปกรณ์อิเล็กทรอนิกส์หรือช่องทางออนไลน์ทั่วไป
ชุดคิทโปรเจค Arduino แบบเต็ม - หาซื้อได้ตามร้านขายอุปกรณ์อิเล็กทรอนิกส์หรือช่องทางออนไลน์ทั่วไป
เพลงประกอบ - หาดาวน์โหลดเพลงฟรีสำหรับใช้ในโปรเจคได้จากเว็บไซต์提供เพลงฟรีสำหรับครีเอเตอร์ทั่วไป
เว็บไซต์ - https://robocircuits.com/
Facebook - https://facebook.com/Robocircuits
Instagram - https://Instagram.com/Robocircuits
Twitter - https://Twitter.com/Robocircuits