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 11: Điều khiển Servo bằng ESP32 (Cơ bản và Ứng dụng trong robot)

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

(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

Servo là loại động cơ đặc biệt có thể quay đến góc chính xác theo tín hiệu điều khiển.
Chúng được sử dụng rất phổ biến trong robot, đặc biệt ở các ứng dụng như:

  • Tay robot gắp đồ
  • Cổ robot quay camera / cảm biến
  • Cửa tự động hoặc cơ cấu chuyển hướng bánh xe

Trong bài này, bạn sẽ học nguyên lý hoạt động của servo, cách lập trình điều khiển góc quay bằng ESP32, và tạo chuyển động tự động theo mẫu.

1. Nguyên lý hoạt động của Servo

Servo hoạt động dựa trên tín hiệu PWM (Pulse Width Modulation):

  • Chu kỳ PWM cố định: 20ms (tần số 50Hz)
  • Độ rộng xung HIGH quyết định góc quay:
    • 1ms → Góc 0°
    • 1.5ms → Góc 90°
    • 2ms → Góc 180°

Servo thường có 3 dây:

DâyMàu thường gặpChức năng
VCCĐỏNguồn 5V
GNDNâu / ĐenMass
SignalVàng / CamTín hiệu điều khiển

2. Sơ đồ kết nối ESP32 + Servo SG90

ESP32 PinServo SG90Ghi chú
GPIO5SignalChân tín hiệu điều khiển
5VVCCNguồn servo
GNDGNDMass chung

⚠️ Servo nên cấp nguồn riêng 5V–6V (từ pin hoặc module nguồn), tránh lấy trực tiếp từ ESP32 nếu dùng nhiều servo.

3. Code mẫu: Điều khiển góc quay servo

/*
 * Bài 11 - IoTLabs Motor Course
 * Điều khiển servo bằng ESP32 (quay góc 0° - 180°)
 */

#include <Servo.h>

Servo myServo;
int servoPin = 5;

void setup() {
  myServo.attach(servoPin);
  Serial.begin(115200);
  Serial.println("Servo Control Demo");
}

void loop() {
  for (int pos = 0; pos <= 180; pos += 10) {
    myServo.write(pos);
    Serial.print("Góc quay: "); Serial.println(pos);
    delay(300);
  }

  for (int pos = 180; pos >= 0; pos -= 10) {
    myServo.write(pos);
    Serial.print("Góc quay: "); Serial.println(pos);
    delay(300);
  }
}

Kết quả: Servo quay từ 0° → 180° rồi quay ngược lại liên tục, tạo chuyển động mượt.

4. Giải thích

  • Thư viện Servo.h giúp dễ dàng gửi xung PWM điều khiển góc.
  • myServo.write(angle) gửi tín hiệu tương ứng góc 0–180°.
  • Có thể điều chỉnh tốc độ quay bằng cách thay đổi delay().

5. Ứng dụng mở rộng

Servo được ứng dụng rất linh hoạt trong robot và IoT:

  • Cơ cấu tay robot 3–6 trục
  • Cảm biến xoay theo hướng di chuyển
  • Camera tracking theo vật thể
  • Cửa hoặc barrier tự động

6. Nâng cao: Điều khiển nhiều servo cùng lúc

Nếu muốn điều khiển nhiều servo (ví dụ: 3 servo tay robot), bạn có thể dùng nhiều chân GPIO:

#include <Servo.h>

Servo s1, s2, s3;

void setup() {
  s1.attach(5);
  s2.attach(18);
  s3.attach(19);
}

void loop() {
  s1.write(0); s2.write(90); s3.write(180);
  delay(1000);
  s1.write(180); s2.write(0); s3.write(90);
  delay(1000);
}

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

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển
Servo SG90 / MG90S1–3Tùy số trục
Nguồn 5V / pin 18650 + module nguồn1Cấp cho servo
Dây nối, Breadboard

8. Kết luận

Servo là linh kiện quan trọng trong thế giới robot, giúp tạo chuyển động chính xác và linh hoạt.

Nắm vững cách điều khiển servo bằng ESP32 là nền tảng để bạn thiết kế tay robot, cổ xoay camera, robot biểu cảm hoặc robot AI trong các bài học nâng cao.