(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:
- Còi buzzer 5V – phát âm thanh cảnh báo khi robot dừng hoặc gặp vật cản.
- Đè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ện | ESP32 Pin | Ghi chú |
|---|---|---|
| LED Xanh | GPIO18 | Báo “an toàn” |
| LED Đỏ | GPIO19 | Báo “dừng hoặc nguy hiểm” |
| Buzzer 5V | GPIO23 | Còi cảnh báo |
| L298N + Motor + Cảm biến HC-SR04 | Giữ 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ện | Số lượng | Ghi chú |
|---|---|---|
| ESP32 DevKit 38 Pin | 1 | Bộ điều khiển |
| L298N Driver + Motor | 1 | Điều khiển xe |
| HC-SR04 + Servo | 1 | Cảm biến radar |
| LED Đỏ + Xanh | 2 | Báo trạng thái |
| Buzzer 5V | 1 | Cả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ế.


Để lại một bình luận