(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 các xe robot hoặc hệ thống quan sát thông minh, việc quét và theo dõi vật cản xung quanh là một chức năng cực kỳ quan trọng.
Bài này hướng dẫn bạn kết hợp Servo SG90 và cảm biến siêu âm HC-SR04 để tạo mô hình radar mini — có thể xoay đầu cảm biến và đo khoảng cách theo góc quay, hiển thị dữ liệu trực tiếp qua Serial.
Đây là nền tảng để phát triển các dự án như:
- Xe robot tự tránh vật cản thông minh
- Hệ thống radar hiển thị bản đồ vật thể
- Cảm biến xoay quan sát 180° cho robot AI
⚙️ 1. Nguyên lý hoạt động
- Servo xoay cảm biến siêu âm từ 0° đến 180°.
- Ở mỗi góc, cảm biến đo khoảng cách bằng tín hiệu echo.
- Kết quả được gửi về Serial để vẽ biểu đồ hoặc hiển thị radar.
💡 Servo đóng vai trò “cổ xoay”, còn HC-SR04 là “mắt quan sát”.
🔌 2. Sơ đồ kết nối phần cứng

| Thiết bị | ESP32 Pin | Ghi chú |
|---|---|---|
| Servo SG90 (Signal) | GPIO5 | Điều khiển góc quay |
| Servo SG90 (VCC) | 5V | Nguồn cấp |
| Servo SG90 (GND) | GND | Mass chung |
| HC-SR04 Trig | GPIO12 | Phát xung siêu âm |
| HC-SR04 Echo | GPIO14 | Nhận phản xạ |
| HC-SR04 VCC | 5V | Nguồn 5V |
| HC-SR04 GND | GND | Mass chung |
⚠️ Nên dùng nguồn riêng cho Servo nếu quay liên tục, tránh sụt áp ESP32.
💻 3. Code mẫu: Servo quay + đo khoảng cách HC-SR04
/*
* Bài 12 - IoTLabs Motor Course
* Kết hợp Servo và HC-SR04 để tạo Radar mini
*/
#include <Servo.h>
#define TRIG_PIN 12
#define ECHO_PIN 14
Servo myServo;
long duration;
int distance;
void setup() {
Serial.begin(115200);
myServo.attach(5);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.println("Mini Radar 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; // cm
}
void loop() {
for (int pos = 0; pos <= 180; pos += 5) {
myServo.write(pos);
delay(200);
int dist = getDistance();
Serial.print("Góc: "); Serial.print(pos);
Serial.print("° | Khoảng cách: "); Serial.print(dist); Serial.println(" cm");
}
for (int pos = 180; pos >= 0; pos -= 5) {
myServo.write(pos);
delay(200);
int dist = getDistance();
Serial.print("Góc: "); Serial.print(pos);
Serial.print("° | Khoảng cách: "); Serial.print(dist); Serial.println(" cm");
}
}
✅ Kết quả:
Servo quay cảm biến HC-SR04 sang trái – phải liên tục, đo khoảng cách tại mỗi góc, in kết quả ra Serial Monitor (hoặc vẽ biểu đồ radar trên Processing / Python sau này).
🧠 4. Giải thích chi tiết
- Servo giúp xoay cảm biến HC-SR04 theo nhiều góc.
- Mỗi lần dừng ở 1 góc → đo khoảng cách bằng
pulseIn(). - Từ đó có thể vẽ bản đồ không gian 2D quanh robot.
- Dữ liệu có thể gửi qua Serial, Bluetooth hoặc WiFi để hiển thị trực quan.
🎯 5. Mục tiêu học tập
- Hiểu cách kết hợp hai linh kiện khác loại (servo + sensor).
- Lập trình đo – điều khiển phối hợp theo góc quay.
- Chuẩn bị cho bài tiếp theo: Xe robot radar tự tránh vật cản.
🧩 6. Hoạt động mở rộng
- Hiển thị bản đồ radar 2D bằng Python hoặc Processing.
- Kết hợp OLED hoặc LCD hiển thị kết quả trực tiếp.
- Thêm AI phân tích vùng trống để chọn hướng di chuyển.
📦 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 |
| Servo SG90 | 1 | Gắn cảm biến HC-SR04 |
| HC-SR04 | 1 | Đo khoảng cách |
| Nguồn 5V | 1 | Cho Servo và cảm biến |
| Dây nối | – |
🚀 8. Kết luận
Bạn vừa tạo ra một mô hình radar mini thông minh — bước tiến quan trọng trong lĩnh vực robot tự hành.
Khi kết hợp servo (động học) và cảm biến siêu âm (nhận thức), robot của bạn có thể “nhìn” và “phản ứng” với môi trường xung quanh – giống như một hệ thống AI cơ bản.


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