Series
Lập Trình & Điều Khiển Động Cơ với ESP32
  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ế
Uncategorized

Lậ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

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

(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

Sau khi bạn đã học cách điều khiển một động cơ DC tiến – lùi bằng mạch cầu H (L298N), bước tiếp theo là kết hợp hai động cơ để tạo chuyển động linh hoạt cho xe robot:

  • Tiến về phía trước
  • Lùi lại
  • Rẽ trái
  • Rẽ phải
  • Dừng

Bài học này giúp bạn viết các hàm điều khiển riêng biệt cho từng hướng di chuyển, tạo nền tảng cho các bài học robot tự hành ở phần sau.

1. Nguyên lý điều khiển xe robot hai bánh

Xe robot hai bánh có 2 động cơ DC độc lập:

  • Motor trái (M1) → điều khiển bởi IN1, IN2, ENA
  • Motor phải (M2) → điều khiển bởi IN3, IN4, ENB
Chuyển độngMotor tráiMotor phải
TiếnQuay thuậnQuay thuận
LùiQuay ngượcQuay ngược
Rẽ tráiDừng / quay ngược nhẹQuay thuận
Rẽ phảiQuay thuậnDừng / quay ngược nhẹ
DừngDừng cả hai

2. Sơ đồ kết nối (ESP32 + L298N + 2 động cơ)

ESP32 PinL298N PinGhi chú
GPIO26IN1Motor trái hướng 1
GPIO27IN2Motor trái hướng 2
GPIO14ENAPWM tốc độ trái
GPIO25IN3Motor phải hướng 1
GPIO33IN4Motor phải hướng 2
GPIO32ENBPWM tốc độ phải
5V, GNDL298N 5V, GNDNguồn logic

3. Code mẫu: Viết hàm điều khiển chuyển động

/*
 * Bài 4 - IoTLabs Motor Course
 * Viết hàm điều khiển chuyển động xe robot 2 bánh bằng ESP32 + L298N
 */

#define IN1 26
#define IN2 27
#define ENA 14
#define IN3 25
#define IN4 33
#define ENB 32

#define PWM_FREQ 5000
#define PWM_RES 8

void setup() {
  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
  ledcSetup(0, PWM_FREQ, PWM_RES);
  ledcSetup(1, PWM_FREQ, PWM_RES);
  ledcAttachPin(ENA, 0);
  ledcAttachPin(ENB, 1);
}

// ====== Các hàm điều khiển ======
void goForward(int speed = 200) {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
  ledcWrite(0, speed); ledcWrite(1, speed);
}

void goBackward(int speed = 200) {
  digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
  ledcWrite(0, speed); ledcWrite(1, speed);
}

void turnLeft(int speed = 200) {
  digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);  // Trái quay ngược
  digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);  // Phải quay thuận
  ledcWrite(0, speed); ledcWrite(1, speed);
}

void turnRight(int speed = 200) {
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);  // Trái quay thuận
  digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);  // Phải quay ngược
  ledcWrite(0, speed); ledcWrite(1, speed);
}

void stopMotor() {
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
  ledcWrite(0, 0); ledcWrite(1, 0);
}

void loop() {
  goForward(); delay(2000);
  turnLeft(); delay(1000);
  turnRight(); delay(1000);
  goBackward(); delay(2000);
  stopMotor(); delay(2000);
}

Kết quả: Robot tiến 2s → rẽ trái → rẽ phải → lùi → dừng, lặp lại chu kỳ.

4. Giải thích ngắn

  • Mỗi motor có 2 chân điều khiển hướng (IN1–IN2 / IN3–IN4).
  • Dùng PWM (ENA, ENB) để điều chỉnh tốc độ từng bánh.
  • Tạo hàm riêng biệt giúp code dễ mở rộng, ví dụ thêm điều khiển từ điện thoại hoặc AI.

5. Mục tiêu học tập

  • Hiểu logic điều khiển robot hai bánh.
  • Viết và tái sử dụng hàm điều khiển.
  • Chuẩn bị cho các bài tiếp theo: cảm biến vật cản và điều khiển thông minh.

6. Hoạt động mở rộng

  • Thêm nút nhấn hoặc remote để chọn hướng di chuyển.
  • Điều khiển xe qua giao diện web (WiFi WebServer).
  • Tích hợp cảm biến siêu âm để xe tự tránh vật cản.

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

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển
L298N Driver1Mạch cầu H kép
Motor DC 3–6V2Bánh trái và phải
Bánh xe + khung robot1 bộ2 bánh + caster
Pin 7.4V hoặc 9V1Nguồn cấp động cơ
Dây nối + Breadboard

8. Kết luận

Bài học này giúp bạn làm chủ kỹ năng lập trình cấu trúc chuyển động – nền tảng cho mọi robot di động.

Khi hiểu được cách điều khiển độc lập từng bánh, bạn có thể phát triển các ứng dụng nâng cao như xe dò line, xe tránh vật cản hoặc xe điều khiển bằng giọng nói.