บทเรียน 30/31: การติดตามเส้นรถยนต์-8 โดยสมาร์ทคาร์จากชุด Arduino ของ SunFounder | Robojax
คู่มือนี้จะแนะนำคุณในการสร้างรถอัจฉริยะที่วิ่งตามเส้นโดยใช้ชุด Arduino 3-in-1 ของ SunFounder
โปรเจกต์ที่สาธิตในวิดีโอนี้ใช้โมดูลตรวจจับเส้นอินฟราเรดเพื่อตรวจจับเส้นสีดำบนพื้นผิวสีขาวและควบคุมมอเตอร์สองตัวเพื่อให้รถอยู่บนเส้นทาง นี่คือโปรเจกต์หุ่นยนต์พื้นฐานที่สอนคุณเกี่ยวกับการอ่านเซนเซอร์ ตรรกะแบบมีเงื่อนไข และการควบคุมมอเตอร์ คุณค่าทางโลกแห่งความเป็นจริงนั้นมหาศาล—มันเป็นพื้นฐานสำหรับยานพาหนะนำทางอัตโนมัติ (AGV) ในคลังสินค้า หุ่นยนต์ดูดฝุ่นที่เดินตามขอบห้อง และแพลตฟอร์มการศึกษาเพื่อเรียนรู้เกี่ยวกับการนำทางอัตโนมัติ นอกเหนือจากการสร้างพื้นฐานแล้ว คุณสามารถใช้แนวคิดนี้สำหรับ:

- การสร้างหุ่นยนต์ง่ายๆ ที่สามารถนำทางไปตามเส้นทางที่กำหนดไว้ล่วงหน้าในเขาวงกตหรือบนราง
- การสร้างรถเข็นจัดส่งอัตโนมัติสำหรับสำนักงานขนาดเล็กหรือห้องปฏิบัติการ
- การพัฒนาหุ่นยนต์วิ่งตามเส้นสำหรับโปรเจกต์วิทยาศาสตร์ของโรงเรียนหรือการแข่งขัน
- การสร้างต้นแบบระบบสำหรับสายพานลำเลียงในอุตสาหกรรมที่คัดแยกสิ่งของตามตำแหน่ง
ฮาร์ดแวร์และส่วนประกอบ
แกนหลักของโปรเจกต์นี้คือโมดูลตรวจจับเส้น ซึ่งใช้คู่ตัวส่งและตัวรับอินฟราเรด (IR) นี่คือรายละเอียดของส่วนประกอบสำคัญ:
- โมดูลตรวจจับเส้น (TCRT5000): เซนเซอร์นี้ปล่อยแสงอินฟราเรดและวัดความเข้มของแสงที่สะท้อนกลับ โมดูลนี้รวมตัวเปรียบเทียบ LM393 เพื่อแปลงสัญญาณแอนะล็อกเป็นเอาต์พุตดิจิทัล HIGH หรือ LOW
- โครงรถอัจฉริยะพร้อมมอเตอร์: ชุด SunFounder มาพร้อมโครงรถที่มีมอเตอร์เกียร์สองตัว ซึ่งควบคุมโดย Arduino เพื่อบังคับเลี้ยวรถ
- บอร์ด Arduino: "สมอง" ของการทำงาน อ่านเซนเซอร์และส่งคำสั่งไปยังมอเตอร์
- ไดรเวอร์มอเตอร์ (บนชิลด์ของรถ): วงจรนี้ช่วยให้พินพลังงานต่ำของ Arduino ควบคุมมอเตอร์ที่ใช้กระแสสูงกว่าได้
คู่มือการเดินสายไฟ
การเดินสายไฟสำหรับโมดูลตรวจจับเส้นนั้นตรงไปตรงมา วิดีโอสาธิตการเชื่อมต่อดังนี้ (ในวิดีโอที่ 04:04):
- ขา VCC ของตัวตรวจจับเส้น (พินกลาง): เชื่อมต่อกับพิน 5V ของ Arduino
- ขา GND ของตัวตรวจจับเส้น (พินซ้าย): เชื่อมต่อกับพิน GND ของ Arduino
- ขา OUT ของตัวตรวจจับเส้น (พินขวา): เชื่อมต่อกับพินดิจิทัล 2 ของ Arduino
มอเตอร์เชื่อมต่อกับไดรเวอร์มอเตอร์บนชิลด์ของรถ ในโค้ด มอเตอร์ขวาถูกควบคุมด้วยพิน 5 และ 6 และมอเตอร์ซ้ายด้วยพิน 9 และ 10 ตามที่แสดงในการสาธิตวิดีโอ (ในวิดีโอที่ 12:28)
คำอธิบายโค้ด
โค้ดถูกออกแบบมาเพื่ออ่านสัญญาณดิจิทัลจากตัวตรวจจับเส้นและควบคุมมอเตอร์ตามนั้น นี่คือส่วนสำคัญที่ผู้ใช้สามารถปรับแต่งได้:
const int in1 = 5; // in1,2 สำหรับมอเตอร์ขวา
const int in2 = 6;
const int in3 = 9; // in3,4 สำหรับมอเตอร์ซ้าย
const int in4 = 10;
const int lineTrack = 2;
- พินมอเตอร์ (in1, in2, in3, in4): ค่าคงที่เหล่านี้กำหนดว่าพินใดของ Arduino เชื่อมต่อกับไดรเวอร์มอเตอร์ หากการเดินสายไฟของคุณแตกต่างออกไป คุณจะต้องเปลี่ยนค่าเหล่านี้ให้ตรงกับการตั้งค่าของคุณ
- พินตัวตรวจจับเส้น (lineTrack): ค่านี้กำหนดพินดิจิทัลที่เชื่อมต่อกับเอาต์พุตสัญญาณของเซนเซอร์ โค้ดอ่านพินนี้เพื่อตรวจสอบว่าเซนเซอร์อยู่เหนือพื้นผิวสีดำหรือสีขาว
ในลูปหลัก คุณสามารถปรับตัวแปร speed เพื่อควบคุมความเร็วในการเลี้ยวของรถ ค่าอยู่ระหว่าง 0 ถึง 255 โดยค่าที่สูงกว่าจะทำให้รถเลี้ยวเร็วขึ้น
int speed = 150;//0 ถึง 255
ตรรกะนั้นง่าย: หากเซนเซอร์อ่านค่า HIGH (เส้นสีดำ) รถจะเลี้ยวซ้าย มิฉะนั้นจะเลี้ยวขวา ฟังก์ชันที่กำหนดเอง moveLeft() และ moveRight() ควบคุมมอเตอร์เพื่อให้บรรลุสิ่งนี้ ตัวอย่างเช่น การเลี้ยวซ้าย มอเตอร์ขวาจะหมุนในขณะที่มอเตอร์ซ้ายหยุด ทำให้รถหมุนตัว พฤติกรรมนี้อธิบายโดยละเอียดในวิดีโอ (ในวิดีโอที่ 10:39)
การวางตำแหน่งตัวตรวจจับเส้นบนเส้นสีดำ รวมถึงการปรับความไว
การสาธิตโปรเจกต์สด
วิดีโอจบลงด้วยการสาธิตสดของรถวิ่งตามเส้น (ในวิดีโอที่ 13:13) รถถูกวางบนรางสีดำ และเซนเซอร์ถูกวางตำแหน่งตรงเหนือเส้น เมื่อรถเคลื่อนที่ เซนเซอร์จะตรวจจับเส้นสีดำและพื้นหลังสีขาว ส่งสัญญาณไปยังมอเตอร์เพื่อปรับทิศทาง การสาธิตแสดงให้เห็นว่ารถวิ่งครบวงกลมได้สำเร็จ พิสูจน์ประสิทธิภาพของตรรกะการแก้ไขซ้าย/ขวาที่เรียบง่าย
บทต่างๆ
- [00:00] แนะนำการติดตามเส้น
- [01:09] วิธีการทำงานของโมดูลติดตามเส้น
- [04:04] การเชื่อมต่อสายไฟโมดูลติดตามเส้น
- [04:23] การทดสอบเซนเซอร์กับ Serial Monitor
- [07:27] ทำความเข้าใจตรรกะการตามเส้น
- [09:08] โค้ดสำหรับรถตามเส้น
- [11:37] การสาธิตการทำงานของรถตามเส้น
- [13:13] การทดสอบจริงบนรางสีดำ
/*
this is code for the tutorial: Lesson 30/31: Car-8 Line Tracking by Smart Car from SunFounder Arduino Kit
YouTube video: https://www.youtube.com/watch?v=Cp2rD5RkYug
Get the code from: 📚⬇️ Download and resource page https://robojax.com/RJT613
www.robojax.com
*/
const int in1 = 5; // in1,2 for right motor
const int in2 = 6;
const int in3 = 9; // in3,4 for left motor
const int in4 = 10;
const int lineTrack = 2;
void setup() {
Serial.begin(9600);
//motor
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
//line track
pinMode(lineTrack, INPUT);
}
void loop() {
int speed = 150;//0 to 255
int lineColor = digitalRead(lineTrack); // 0:white 1:black
// Serial.println(lineColor); //print on the serial monitor
if (lineColor) {
Serial.print("Black ");
moveLeft(speed);
} else {
Serial.print("White ");
moveRight(speed);
}
}
void moveLeft(int speed) {
Serial.println("LEFT");
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, 0);
analogWrite(in4, 0);
}
void moveRight(int speed) {
Serial.println("RIGHT");
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
Common Course Links
Common Course Files
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไม่มีไฟล์ที่พร้อมใช้งาน