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)


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

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 *