Series
Series ESP32 & Điều Khiển Động Cơ
  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 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)

Th11 2025
Lậ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)

(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

Bài này là bước phát triển tiếp theo của Bài 13 – Servo Tracking.
Chúng ta sẽ gắn hệ thống đầu cảm biến radar (servo + HC-SR04) lên xe robot có 2 motor DC và mạch L298N, để xe tự quét môi trường và chọn hướng an toàn để di chuyển.

Ứng dụng thực tế:

  • Xe robot tự dò đường và tránh vật cản.
  • Hệ thống radar xoay giúp robot “quan sát 180°” như mắt người.
  • Bước nền cho robot tự hành cấp độ cao (AI Pathfinding).

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

  1. Servo + HC-SR04 quét trái → phải → đo khoảng cách.
  2. ESP32 xác định hướng có khoảng cách xa nhất (ít vật cản).
  3. Robot quay bánh xe theo hướng đó và tiếp tục đi thẳng.
  4. Lặp lại quá trình để duy trì di chuyển an toàn.

Giống như một chiếc xe có “đôi mắt” di chuyển theo hướng trống

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

Thiết bịESP32 PinGhi chú
HC-SR04 TrigGPIO12Phát xung siêu âm
HC-SR04 EchoGPIO14Nhận phản xạ
Servo SG90 (Signal)GPIO5Quay đầu cảm biến
L298N IN1GPIO26Motor trái
L298N IN2GPIO27Motor trái
L298N IN3GPIO25Motor phải
L298N IN4GPIO33Motor phải
ENAGPIO32PWM motor trái
ENBGPIO13PWM motor phải
5VCấp cho tất cả module
GNDChung mass

⚠️ Dùng nguồn pin 7.4V hoặc 9V cho motor và nguồn ổn định 5V cho servo + cảm biến.

3. Code mẫu: Xe radar tự tránh vật cản

/*
 * Bài 14 - IoTLabs Motor Course
 * Xe radar tự quét vật cản và chọn hướng đi an toàn
 */

#include <Servo.h>

#define TRIG_PIN 12
#define ECHO_PIN 14
#define IN1 26
#define IN2 27
#define IN3 25
#define IN4 33
#define ENA 32
#define ENB 13

Servo headServo;
long duration;
int distance;

void setup() {
  Serial.begin(115200);
  headServo.attach(5);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
  Serial.println("Radar Robot Started!");
}

int getDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  duration = pulseIn(ECHO_PIN, HIGH);
  return duration * 0.034 / 2;
}

void goForward() {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}

void turnLeft() {
  digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}

void turnRight() {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
}

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

void loop() {
  int bestAngle = 90;
  int maxDist = 0;

  // Quét 180° để tìm hướng xa nhất
  for (int pos = 30; pos <= 150; pos += 15) {
    headServo.write(pos);
    delay(300);
    int dist = getDistance();
    Serial.print("Góc: "); Serial.print(pos);
    Serial.print("° | Khoảng cách: "); Serial.print(dist); Serial.println(" cm");
    if (dist > maxDist) {
      maxDist = dist;
      bestAngle = pos;
    }
  }

  Serial.print("Hướng an toàn nhất: "); Serial.print(bestAngle);
  Serial.print("°, khoảng cách: "); Serial.println(maxDist);

  // Điều khiển hướng đi theo góc tốt nhất
  if (bestAngle < 80) {
    turnLeft();
    delay(600);
  } else if (bestAngle > 100) {
    turnRight();
    delay(600);
  } else {
    goForward();
  }

  delay(1000);
  stopMotor();
}

Kết quả: Xe robot quét môi trường xung quanh bằng đầu radar xoay, chọn hướng có khoảng cách xa nhấttự di chuyển tránh vật cản thông minh.

4. Giải thích nhanh

  • Servo quay đầu cảm biến để đo ở các góc khác nhau.
  • ESP32 ghi nhận khoảng cách từng góc, chọn hướng “trống” nhất.
  • Robot di chuyển theo hướng đó, tạo hành vi “tự tìm đường”.

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

  • Biết cách phối hợp servo + cảm biến + motor trong một hệ thống robot.
  • Nắm logic phân tích dữ liệu cảm biến theo góc.
  • Tạo nền cho robot AI tự tìm đường tránh vật cản.

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

  • Kết hợp OLED để hiển thị hướng và khoảng cách.
  • Thêm LED hiển thị vùng an toàn.
  • Dùng 2 servo để xoay cả đầu và cổ robot.

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

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển
Servo SG901Xoay cảm biến
HC-SR041Đo khoảng cách
L298N Motor Driver1Điều khiển bánh xe
Motor DC + bánh xe2Di chuyển
Pin 7.4V hoặc 9V1Nguồn động cơ
Nguồn 5V1Servo + HC-SR04
Dây nối

8. Kết luận

Bạn vừa tạo được xe radar thông minh có khả năng “nhìn – phân tích – phản ứng”.

Đây là một trong những bước quan trọng nhất để bước vào thế giới robot tự hành (Autonomous Robot), nơi máy móc có thể quan sát và quyết định hướng đi như con người.