Lập trình & Điều khiển Động Cơ – Bài 115: 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)



(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ế.

Comments

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

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *