Hệ Thống Cảm Biến Khoảng Cách Cho Robot với ESP32
Trung cấp3/6/2026

Hệ Thống Cảm Biến Khoảng Cách Cho Robot với ESP32

Xây dựng một robot tự hành sử dụng cảm biến khoảng cách lazer để tránh vật cản, giúp bạn tìm hiểu về robot và lập trình với ESP32.

0 lượt thích0 người đã làm1 giờ8 bước7 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 4: Lập trình logic điều khiển cho robot

1. Giới thiệu về logic điều khiển cho robot, 2. Viết mã để robot di chuyển, 3. Thêm logic tránh vật cản, 4. Tinh chỉnh tham số và điều kiện cho robot, 5. Kiểm tra và điều chỉnh hoạt động của robot.

Cập nhật 04/06/2026

Phần 4: Lập trình logic điều khiển cho robot

Trong phần này, chúng ta sẽ tìm hiểu về cách lập trình logic điều khiển cho robot sử dụng ESP32. Logic điều khiển là phần quan trọng giúp robot có thể di chuyển và tránh các vật cản trong môi trường xung quanh. Chúng ta sẽ xây dựng mã nguồn để robot có thể di chuyển, thêm logic tránh vật cản, tinh chỉnh các tham số và điều kiện, và cuối cùng là kiểm tra hoạt động của robot.

1. Giới thiệu về logic điều khiển cho robot

Logic điều khiển là tập hợp các quy tắc và điều kiện mà robot sẽ thực hiện để thực hiện các hành động cụ thể. Đối với robot tự hành, logic này sẽ quyết định cách mà robot di chuyển, khi nào dừng lại, và khi nào phải tránh vật cản. Việc lập trình logic điều khiển giúp robot hoạt động một cách thông minh và hiệu quả hơn.

2. Viết mã để robot di chuyển

Để robot có thể di chuyển, trước tiên chúng ta cần xác định các chân GPIO mà chúng ta sẽ sử dụng để điều khiển động cơ. Giả sử chúng ta sử dụng động cơ DC và driver động cơ L298N. Dưới đây là mã mẫu để di chuyển robot về phía trước và lùi lại:


#define ENA 5  // Chân điều khiển động cơ bên trái
#define IN1 18 // Chân điều khiển động cơ bên trái
#define IN2 19 // Chân điều khiển động cơ bên trái
#define ENB 6  // Chân điều khiển động cơ bên phải
#define IN3 21 // Chân điều khiển động cơ bên phải
#define IN4 22 // Chân điều khiển động cơ bên phải

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void moveForward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENA, 255); // Tốc độ động cơ bên trái
  analogWrite(ENB, 255); // Tốc độ động cơ bên phải
}

void moveBackward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENA, 255);
  analogWrite(ENB, 255);
}

Trong đoạn mã trên, chúng ta đã định nghĩa các chân GPIO để điều khiển động cơ và viết hai hàm moveForward()moveBackward() để di chuyển robot về phía trước và lùi lại.

3. Thêm logic tránh vật cản

Để robot có thể tránh vật cản, chúng ta sẽ sử dụng cảm biến khoảng cách lazer (như HC-SR04). Cảm biến này sẽ giúp robot nhận biết khoảng cách đến vật cản và quyết định hành động phù hợp. Dưới đây là mã mẫu để thêm logic tránh vật cản:


#define TRIG_PIN 23
#define ECHO_PIN 25

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

long readDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  long duration = pulseIn(ECHO_PIN, HIGH);
  return duration * 0.034 / 2; // Tính khoảng cách
}

void loop() {
  long distance = readDistance();
  
  if (distance < 20) { // Nếu khoảng cách nhỏ hơn 20cm
    moveBackward();    // Lùi lại
    delay(500);       // Đợi 500ms
    // Quay trái hoặc phải tùy chọn
    // Có thể thêm logic quay ở đây
  } else {
    moveForward();     // Tiến về phía trước
  }
}

Trong đoạn mã trên, chúng ta đã thêm một hàm readDistance() để lấy khoảng cách từ cảm biến và logic trong hàm loop() để điều khiển robot di chuyển hoặc lùi lại khi gặp vật cản.

4. Tinh chỉnh tham số và điều kiện cho robot

Để robot hoạt động tốt hơn, bạn có thể cần tinh chỉnh các tham số như khoảng cách để tránh vật cản. Ví dụ, bạn có thể thay đổi giá trị 20 trong điều kiện if (distance < 20) thành giá trị khác tùy thuộc vào môi trường hoạt động của robot. Ngoài ra, bạn có thể điều chỉnh tốc độ động cơ bằng cách thay đổi giá trị trong analogWrite(ENA, 255);analogWrite(ENB, 255);.

Lưu ý: Hãy thử nghiệm với các giá trị khác nhau để tìm ra thông số tốt nhất cho robot của bạn. Mỗi môi trường có thể có những yêu cầu khác nhau.

5. Kiểm tra và điều chỉnh hoạt động của robot

Sau khi hoàn thành việc lập trình, bạn cần tiến hành kiểm tra hoạt động của robot. Hãy mở nguồn cho robot và theo dõi cách nó di chuyển. Nếu robot không hoạt động như mong đợi, hãy kiểm tra lại mã nguồn, các kết nối phần cứng và cảm biến. Dưới đây là một số gợi ý để kiểm tra:

  • Kiểm tra xem các chân GPIO đã được kết nối đúng hay chưa.

  • Kiểm tra xem cảm biến khoảng cách có hoạt động đúng không bằng cách in ra giá trị khoảng cách trong loop().

  • Điều chỉnh tốc độ động cơ nếu robot di chuyển quá nhanh hoặc quá chậm.

  • Thử nghiệm trong các môi trường khác nhau để xem robot có thể hoạt động tốt trong mọi tình huống không.

Cuối cùng, hãy chắc chắn rằng bạn đã lưu lại tất cả các thay đổi và thử nghiệm nhiều lần để đảm bảo robot hoạt động ổn định.

Với những hướng dẫn trên, bạn đã hoàn thành việc lập trình logic điều khiển cho robot tự hành của mình.