Search Code

ESP32 บทเรียน 20/55 - โมดูลติดตามเส้น | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 20/55 - โมดูลติดตามเส้น | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้โมดูล ESP32 ร่วมกับโมดูลตรวจจับเส้นเพื่อตรวจจับเส้นสีดำบนพื้นผิวสีขาว ความสามารถนี้จำเป็นสำหรับแอปพลิเคชันต่างๆ เช่น รถหุ่นยนต์ที่ต้องเดินตามเส้นทางที่กำหนดไว้ นอกจากนี้ เราจะรวมบัซเซอร์ที่ทำงานเมื่อโมดูลตรวจจับเส้นตรวจพบเส้นสีดำ ซึ่งช่วยเพิ่มกลไกการตอบสนองของโปรเจกต์ของเรา สำหรับคำอธิบายเพิ่มเติม โปรดดูวิดีโอ (ในวิดีโอที่ 0:00)

line_track

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยโมดูล ESP32 โมดูลตรวจจับเส้น และบัซเซอร์ โมดูล ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังพร้อมความสามารถ Wi-Fi และบลูทูธในตัว ซึ่งช่วยให้สามารถใช้งาน IoT ได้หลากหลาย โมดูลตรวจจับเส้นใช้ตัวปล่อยอินฟราเรดและโฟโตรีซีสเตอร์เพื่อตรวจจับความแตกต่างของสีพื้นผิวตามความเข้มของแสงอินฟราเรดที่สะท้อนกลับ

โมดูลตรวจจับเส้นทำงานโดยปล่อยแสงอินฟราเรดที่สะท้อนจากพื้นผิวด้านล่าง พื้นผิวที่เข้มกว่า เช่น สีดำ จะดูดซับแสงได้มากกว่า ส่งผลให้ความเข้มของการสะท้อนต่ำลง ในขณะที่พื้นผิวที่สว่างกว่า เช่น สีขาว จะสะท้อนแสงได้มากกว่า ทำให้มีความเข้มสูงขึ้น ความแตกต่างนี้ถูกประมวลผลโดยออปแอมป์เพื่อกำหนดสถานะของพื้นผิว (ดำหรือขาว) และส่งสัญญาณที่สอดคล้องกันออกมา

รายละเอียดดาต้าชีต

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน TCRT5000
แรงดันไฟฟ้าลอจิก/IO 3.3 V ถึง 5 V
กระแสเอาต์พุต (ต่อช่อง) 20 mA
กระแสสูงสุด (ต่อช่อง) 50 mA
เวลาตอบสนอง < 10 ms
ระยะการตรวจจับ 1 ซม. ถึง 5 ซม.
แพ็คเกจ โมดูลพร้อมพินหัวเข็ม
หมายเหตุ/รุ่นต่างๆ นิยมใช้ในหุ่นยนต์เดินตามเส้น

 

  • ตรวจสอบให้แน่ใจว่าแหล่งจ่ายไฟเหมาะสม (3.3 V หรือ 5 V)
  • รักษาเซนเซอร์ให้สะอาดเพื่อการอ่านค่าที่แม่นยำ
  • ปรับความไวโดยใช้โพเทนชิโอมิเตอร์บนบอร์ด
  • ตรวจสอบการเชื่อมต่อเพื่อหลีกเลี่ยงอินพุตลอย
  • ใช้ตัวต้านทานพูลอัพหากจำเป็นเพื่อการอ่านค่าที่เสถียร
  • ลดการรบกวนจากแหล่งอินฟราเรดในสภาพแวดล้อม

คำแนะนำการเดินสายไฟ

ESP32-20_line-tracking-wiring

ในการเดินสายไฟโมดูลตรวจจับเส้นเข้ากับ ESP32 ให้เริ่มต้นโดยเชื่อมต่อพินกราวด์ของโมดูลเข้ากับพินกราวด์บน ESP32 จากนั้น เชื่อมต่อพิน V+ ของโมดูลตรวจจับเส้นเข้ากับแหล่งจ่ายไฟที่เหมาะสม ไม่ว่าจะเป็น 3.3 V หรือ 5 V บน ESP32 พินสัญญาณ (ระบุด้วย S) ควรเชื่อมต่อกับ GPIO 14 บน ESP32 ตรวจสอบให้แน่ใจว่าการเชื่อมต่อเหล่านี้แน่นหนาก่อนดำเนินการต่อ

หากคุณใช้บัซเซอร์ ให้เชื่อมต่อขั้วลบเข้ากับกราวด์และขั้วบวกเข้ากับ GPIO 27 บน ESP32 การตั้งค่านี้ช่วยให้บัซเซอร์ทำงานเมื่อโมดูลตรวจจับเส้นตรวจพบเส้นสีดำ ตรวจสอบการเชื่อมต่อทั้งหมดอีกครั้งเพื่อให้แน่ใจว่าตรงกับพินที่ระบุในโค้ด

ESP32-20_line-tracking-schemtaic

ตัวอย่างโค้ดและคำอธิบาย

ด้านล่างเป็นส่วนสำคัญของโค้ดที่ตั้งค่าโมดูลตรวจจับเส้น ตัวแปร linePin ถูกกำหนดเพื่อแทนพินที่เชื่อมต่อกับโมดูลตรวจจับเส้น

const int linePin = 14;  // หมายเลขพินของโมดูลตรวจจับเส้น

บรรทัดนี้เริ่มต้น linePin เป็นพิน 14 ซึ่งจะใช้ในการอ่านสถานะเส้น ตัวแปร lineState จะเก็บผลลัพธ์จากเซนเซอร์

ในฟังก์ชัน setup() เรากำหนดโหมดพินสำหรับ linePin เป็นอินพุต

void setup() {
  Serial.begin(115200);  
  pinMode(linePin, INPUT);
}

สิ่งนี้ทำให้แน่ใจว่า ESP32 สามารถอ่านสถานะของโมดูลตรวจจับเส้นได้ การสื่อสารแบบอนุกรมเริ่มต้นที่อัตราบอด 115200 สำหรับการตรวจสอบเอาต์พุต

สุดท้าย ในฟังก์ชัน loop() เราอ่านสถานะของโมดูลตรวจจับเส้นอย่างต่อเนื่องและพิมพ์สีที่ตรวจพบ

void loop() {
  lineState = digitalRead(linePin);
  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  } else {
    Serial.println("White");
    delay(100);
  }
}

ลูปนี้ตรวจสอบว่า lineState เป็น HIGH (หมายถึงสีดำ) หรือ LOW (หมายถึงสีขาว) และพิมพ์ผลลัพธ์ไปยังซีเรียลมอนิเตอร์ โค้ดเต็มจะโหลดด้านล่างบทความเพื่อการอ้างอิงของคุณ

การสาธิต / สิ่งที่คาดหวัง

เมื่อเดินสายไฟเสร็จสมบูรณ์และอัปโหลดโค้ดแล้ว คุณควรสังเกตว่า ESP32 พิมพ์ "Black" เมื่อโมดูลตรวจจับเส้นอยู่เหนือพื้นผิวสีดำ และพิมพ์ "White" เมื่ออยู่เหนือพื้นผิวสีขาว นอกจากนี้ บัซเซอร์จะส่งเสียงเมื่อโมดูลตรวจพบเส้นสีดำ ซึ่งให้สัญญาณเตือนที่ได้ยิน ระวังการตั้งค่าโพเทนชิโอมิเตอร์ เนื่องจากการตั้งค่าที่ไวเกินไปอาจทำให้เกิดพฤติกรรมที่ไม่แน่นอน (ในวิดีโอที่ 10:00)

ไทม์สแตมป์วิดีโอ

  • 00:00 เริ่มต้น
  • 2:22 แนะนำโมดูลตรวจจับเส้น
  • 5:10 หน้าคู่มือเอกสาร
  • 9:20 อธิบายการเชื่อมต่อสายไฟ
  • 10:49 อธิบายโค้ด Arduino
  • 13:36 การเลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
  • 15:18 การสาธิต
  • 18:15 โปรเจกต์: การตรวจจับเส้นพร้อมออด
  • 19:52 โค้ด Arduino สำหรับการตรวจจับเส้นและออด
  • 20:52 การสาธิต

ภาพ

ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-schemtaic
ESP32-20_line-tracking-wiring
ESP32-20_line-tracking-wiring
line_track
line_track
819-ESP32 Tutorial 20/55- Arduino code line tracking
ภาษา: C++
// Set pin number
const int linePin = 14;  // The number of the line track module pin

// Variable for storing the line status 
int lineState = 0;

void setup() {
  Serial.begin(115200);  
  // Initialize the line track module pin as an input
  pinMode(linePin, INPUT);
}

void loop() {
  // Read the state of the line track module
  lineState = digitalRead(linePin);

  if (lineState == HIGH) {
    Serial.println("Black");
    delay(100);
  }
  else {
    Serial.println("White");
    delay(100);
  }
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไม่มีไฟล์ที่พร้อมใช้งาน