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 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)

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

(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

Trong bài học này, chúng ta sẽ giúp xe robot biết “báo hiệu” như con người — có thể phát âm thanh và nhấp nháy đèn LED khi đang di chuyển, gặp vật cản, hoặc khi hoàn thành nhiệm vụ.

Đây là một bước nhỏ nhưng cực kỳ quan trọng trong việc tăng khả năng tương tác và an toàn cho robot.

Ứng dụng thực tế:

  • Robot cảnh báo khi gặp vật cản.
  • Xe tuần tra phát âm thanh báo hiệu.
  • Robot biểu diễn nhấp nháy đèn theo nhịp chuyển động.

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

Hệ thống báo hiệu gồm hai phần:

  1. Còi buzzer 5V – phát âm thanh cảnh báo khi robot dừng hoặc gặp vật cản.
  2. Đèn LED – hiển thị trạng thái hoạt động:
    • LED xanh: xe di chuyển an toàn
    • LED đỏ: gặp vật cản hoặc đang dừng

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

Linh kiệnESP32 PinGhi chú
LED XanhGPIO18Báo “an toàn”
LED ĐỏGPIO19Báo “dừng hoặc nguy hiểm”
Buzzer 5VGPIO23Còi cảnh báo
L298N + Motor + Cảm biến HC-SR04Giữ nguyên như bài 14

⚠️ Buzzer và LED dùng dòng nhỏ nên có thể cấp trực tiếp từ GPIO ESP32.

3. Code mẫu: Xe robot có báo hiệu thông minh

/*
 * Bài 15 - IoTLabs Motor Course
 * Tích hợp còi và đèn LED báo trạng thái cho xe radar tránh vật cả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
#define LED_GREEN 18
#define LED_RED 19
#define BUZZER 23

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);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_RED, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  Serial.println("Robot Alert System 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);
  digitalWrite(LED_GREEN, HIGH);
  digitalWrite(LED_RED, LOW);
  noTone(BUZZER);
}

void stopMotor() {
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_RED, HIGH);
  tone(BUZZER, 1000, 500);
}

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

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

void loop() {
  int dist = getDistance();
  Serial.print("Khoảng cách: "); Serial.print(dist); Serial.println(" cm");

  if (dist < 15) {
    stopMotor();
    delay(500);
    turnRight();
    delay(600);
  } else {
    goForward();
  }
  delay(100);
}

Kết quả:

Khi xe gặp vật cản, đèn LED đỏ sáng và còi kêu. Khi đường thông thoáng, LED xanh sáng và xe tiếp tục di chuyển.

4. Giải thích

  • tone(BUZZER, 1000, 500) phát âm thanh tần số 1000Hz trong 0.5s.
  • LED giúp người dùng quan sát trạng thái robot trực quan.
  • Có thể mở rộng thêm LED vàng để báo hiệu trạng thái chờ.

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

  • Hiểu cách kết hợp báo hiệu âm thanh – ánh sáng.
  • Biết cách xử lý logic điều kiện theo cảm biến.
  • Nâng cao khả năng tương tác giữa robot và người dùng.

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

  • Gắn DFPlayer Mini để phát âm thanh “thông minh” thay vì buzzer.
  • Thêm LED RGB để thể hiện nhiều trạng thái hơn.
  • Dùng Bluetooth hoặc WiFi để gửi thông báo trạng thái ra điện thoại.

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

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển
L298N Driver + Motor1Điều khiển xe
HC-SR04 + Servo1Cảm biến radar
LED Đỏ + Xanh2Báo trạng thái
Buzzer 5V1Cảnh báo
Dây nối

8. Kết luận

Robot không chỉ cần di chuyển tốt, mà còn phải giao tiếp bằng âm thanh và ánh sáng.

Bằng cách tích hợp còi và đèn báo, bạn đã tạo cho xe robot khả năng biểu cảm và phản hồi thông minh hơn – nền tảng cho robot tương tác thực tế.