Series
Lập Trình & Điều Khiển Động Cơ với ESP32
  1. Series: Lập trình & Điều khiển Động Cơ từ Cơ Bản tới Nâng Cao
  2. 1Lập trình & Điều khiển Động Cơ – Bài 1: Giới thiệu về Động cơ và Nguyên lý Hoạt động
  3. 2Lập trình & Điều khiển Động Cơ – Bài 2: Điều khiển tốc độ Động cơ DC bằng PWM
  4. 3Lập trình & Điều khiển Động Cơ – Bài 3: Đảo chiều quay của động cơ DC bằng mạch cầu H (L298N)
  5. 4Lập trình & Điều khiển Động Cơ – Bài 4: Viết hàm điều khiển chuyển động cho xe robot
  6. 5Lập trình & Điều khiển Động Cơ – Bài 5: Cảm biến vật cản cho xe robot (Tự dừng khi gặp chướng ngại vật)
  7. 6Lập trình & Điều khiển Động Cơ – Bài 6: Xe tránh vật cản tự động bằng cảm biến siêu âm HC-SR04
  8. 7Lập trình & Điều khiển Động Cơ – Bài 7: Điều khiển xe robot bằng điện thoại qua WiFi (Web Remote)
  9. 8Lập trình & Điều khiển Động Cơ – Bài 8: Điều khiển xe robot bằng Bluetooth từ điện thoại (ESP32 + App Android)
  10. 9Lập trình & Điều khiển Động Cơ – Bài 9: Lập trình xe robot dò line (chạy theo vạch đen)
  11. 10Lập trình & Điều khiển Động Cơ – Bài 10: Xe robot tránh vật cản kết hợp dò line (robot tự hành thông minh)
  12. 11Lập trình & Điều khiển Động Cơ – Bài 11: Điều khiển Servo bằng ESP32 (Cơ bản và Ứng dụng trong robot)
  13. 12Lập trình & Điều khiển Động Cơ – Bài 12: Kết hợp Servo và Cảm biến siêu âm HC-SR04 – Quay theo vật cản (Radar mini)
  14. 13Lập trình & Điều khiển Động Cơ – Bài 13: Servo Tracking, tạo hệ thống đầu quay cảm biến tự động theo vật cản
  15. 14Lập trình & Điều khiển Động Cơ – Bài 14: Lăp ráp đầu cảm biến quay theo vật cản lên xe robot (Xe radar thông minh)
  16. 15Lập trình & Điều khiển Động Cơ – Bài 15: Tích hợp còi cảnh báo và đèn LED vào xe robot (Báo hiệu trạng thái thông minh)
  17. 16Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot
  18. 17Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 1): Hiểu nguyên lý
  19. 18Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 2): Thiết kế phần cứng
  20. 19Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 3): Lập trình cơ bản
  21. 20Lập trình & Điều khiển Động Cơ – Nâng cao -Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 4): Tối ưu điều khiển
  22. 21Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 5): Báo hiệu thông minh
  23. 22Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 6): Truyền dữ liệu 2 chiều
  24. 23Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 7): Kiểm thử & demo thực tế
Kiến thức

Lập trình & Điều khiển Động Cơ – Bài 9: Lập trình xe robot dò line (chạy theo vạch đen)

Th11 2025
Lập trình & Điều khiển Động Cơ – Bài 9: Lập trình xe robot dò line (chạy theo vạch đen)

(Từ khóa học: Lập trình & Điều khiển Động Cơ từ Cơ Bản tới Nâng Cao)


Giới thiệu

Xe dò line (line follower robot) là loại robot có khả năng tự di chuyển theo vạch đen (hoặc trắng) trên mặt đất nhờ các cảm biến hồng ngoại.

Đây là một ứng dụng thực tế phổ biến trong robot logistics, robot vận chuyển hàng hóa, hoặc các cuộc thi STEM Robotics.

Trong bài này, bạn sẽ học cách kết nối cảm biến dò line, đọc tín hiệu, và lập trình robot tự bám theo đường đi.

1. Nguyên lý hoạt động

  • Cảm biến dò line IR phát tia hồng ngoại xuống mặt sàn.
  • Khi tia hồng ngoại phản xạ mạnh (màu trắng), cảm biến xuất ra mức HIGH (1).
  • Khi phản xạ yếu (màu đen), cảm biến xuất ra mức LOW (0).
  • Dựa trên giá trị từ 2 hoặc 3 cảm biến, ta xác định hướng và điều chỉnh bánh xe cho robot giữ đúng đường đi.
Cảm biến TráiCảm biến PhảiHướng di chuyển
00Đi thẳng
01Rẽ trái
10Rẽ phải
11Dừng hoặc tìm lại vạch

2. Sơ đồ kết nối phần cứng

Thiết bịESP32 PinGhi chú
IR Sensor TráiGPIO34Analog hoặc Digital
IR Sensor PhảiGPIO35Analog hoặc Digital
L298N IN1GPIO26Motor trái hướng 1
L298N IN2GPIO27Motor trái hướng 2
L298N IN3GPIO25Motor phải hướng 1
L298N IN4GPIO33Motor phải hướng 2
L298N ENAGPIO14PWM trái
L298N ENBGPIO32PWM phải
5V, GNDTất cả moduleNguồn chung

⚠️ Dùng 2 cảm biến IR là đủ cho robot cơ bản; nếu muốn dò chính xác hơn, bạn có thể dùng 3–5 cảm biến ở bài nâng cao.

3. Code mẫu: Xe robot dò line (theo vạch đen)

/*
 * Bài 9 - IoTLabs Motor Course
 * Xe dò line (theo vạch đen) dùng ESP32 + 2 cảm biến hồng ngoại + L298N
 */

#define LEFT_SENSOR 34
#define RIGHT_SENSOR 35
#define IN1 26
#define IN2 27
#define IN3 25
#define IN4 33
#define ENA 14
#define ENB 32

#define PWM_FREQ 5000
#define PWM_RES 8

void setup() {
  Serial.begin(115200);
  pinMode(LEFT_SENSOR, INPUT);
  pinMode(RIGHT_SENSOR, INPUT);

  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);

  ledcSetup(0, PWM_FREQ, PWM_RES);
  ledcSetup(1, PWM_FREQ, PWM_RES);
  ledcAttachPin(ENA, 0);
  ledcAttachPin(ENB, 1);
}

void goForward() {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
  ledcWrite(0, 200); ledcWrite(1, 200);
}

void turnLeft() {
  digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
  ledcWrite(0, 180); ledcWrite(1, 180);
}

void turnRight() {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
  ledcWrite(0, 180); ledcWrite(1, 180);
}

void stopMotor() {
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
  ledcWrite(0, 0); ledcWrite(1, 0);
}

void loop() {
  int leftState = digitalRead(LEFT_SENSOR);
  int rightState = digitalRead(RIGHT_SENSOR);

  Serial.print("Trái: "); Serial.print(leftState);
  Serial.print(" - Phải: "); Serial.println(rightState);

  if (leftState == 0 && rightState == 0) goForward();
  else if (leftState == 0 && rightState == 1) turnLeft();
  else if (leftState == 1 && rightState == 0) turnRight();
  else stopMotor();
}

Kết quả: Xe robot tự động dò theo vạch đen. Khi lệch trái/phải, robot tự điều chỉnh để quay lại đường.

4. Giải thích

  • digitalRead() đọc tín hiệu từ cảm biến hồng ngoại.
  • Dựa vào giá trị 0/1, ta quyết định hướng.
  • Khi cả hai cảm biến không thấy vạch (1,1) → xe dừng để tránh mất hướng.

5. Mục tiêu học tập

  • Hiểu nguyên lý hoạt động của cảm biến dò line.
  • Lập trình robot điều chỉnh hướng theo tín hiệu cảm biến.
  • Làm nền tảng cho bài sau: xe dò line tự động tránh vật cản.

6. Hoạt động mở rộng

  • Dùng 3 hoặc 5 cảm biến để dò đường chính xác hơn.
  • Thêm mạch servo để điều chỉnh góc quét cảm biến.
  • Kết hợp cảm biến siêu âm để vừa dò line vừa tránh vật cản.

7. Linh kiện cần thiết

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển
Cảm biến dò line IR2Trái và phải
L298N Driver1Điều khiển 2 motor
Motor DC + bánh xe2
Pin 7.4V hoặc 9V1Nguồn cấp
Dây nối, Breadboard

8. Kết luận

Xe dò line là một trong những dự án robot thông minh phổ biến nhất, giúp bạn hiểu rõ mối liên hệ giữa cảm biến – điều khiển – chuyển động.

Bằng cách hiệu chỉnh hợp lý, robot có thể di chuyển chính xác theo đường vẽ sẵn, ứng dụng trong robot vận chuyển hoặc thi đấu.