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ế
Kiến thức

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

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

(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 đã điều khiển xe robot qua WiFi Web Remote, trong bài này bạn sẽ học cách điều khiển robot qua Bluetooth bằng ứng dụng điện thoại.

Bluetooth giúp robot kết nối trực tiếp, không cần WiFi hoặc Internet, dễ sử dụng trong các dự án thực tế như:

  • Xe điều khiển bằng tay,
  • Tay robot Bluetooth,
  • Robot trình diễn, di chuyển biểu cảm.

1. Nguyên lý hoạt động

  • ESP32 tích hợp sẵn Bluetooth (Classic và BLE).
  • Khi bật ứng dụng trên điện thoại (ví dụ: Bluetooth RC Controller hoặc IoTLabs Remote App), ta kết nối tới ESP32.
  • Ứng dụng gửi ký tự lệnh (A, B, L, R, S, …) → ESP32 nhận và thực hiện hành động tương ứng.
Ký tự lệnhHành động
FTiến (Forward)
BLùi (Backward)
LRẽ trái
RRẽ phải
SDừng

2. Sơ đồ kết nối phần cứng

ESP32 PinL298N PinGhi chú
GPIO26IN1Motor trái hướng 1
GPIO27IN2Motor trái hướng 2
GPIO25IN3Motor phải hướng 1
GPIO33IN4Motor phải hướng 2
GPIO14ENAPWM trái
GPIO32ENBPWM phải
5V, GNDL298N 5V, GNDNguồn logic và mass chung

Không cần module Bluetooth rời — ESP32 đã có sẵn.

3. Code mẫu: Điều khiển xe robot bằng Bluetooth

/*
 * Bài 8 - IoTLabs Motor Course
 * Điều khiển xe robot bằng Bluetooth qua điện thoại (ESP32)
 */

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

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

#define PWM_FREQ 5000
#define PWM_RES 8

void setupMotors() {
  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);
}

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

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

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

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

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

void setup() {
  Serial.begin(115200);
  SerialBT.begin("IoTLabs_Robot"); // Tên Bluetooth
  setupMotors();
  Serial.println("Bluetooth Robot Ready!");
}

void loop() {
  if (SerialBT.available()) {
    char cmd = SerialBT.read();
    Serial.println(cmd);
    switch (cmd) {
      case 'F': goForward(); break;
      case 'B': goBackward(); break;
      case 'L': turnLeft(); break;
      case 'R': turnRight(); break;
      case 'S': stopMotor(); break;
    }
  }
}

Kết quả: Mở app Bluetooth trên điện thoại, chọn “IoTLabs_Robot” → Kết nối → Nhấn nút điều khiển → Xe di chuyển theo lệnh.

4. Ứng dụng điều khiển Bluetooth

Bạn có thể dùng:

  • Bluetooth RC Controller (trên CH Play)
  • Serial Bluetooth Terminal (gửi ký tự F, B, L, R, S)
  • Hoặc app tùy chỉnh của IoTLabs (tự thiết kế bằng MIT App Inventor)

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

  • Hiểu cách dùng Bluetooth tích hợp trong ESP32.
  • Lập trình robot nhận và xử lý lệnh điều khiển từ điện thoại.
  • Phát triển khả năng mở rộng lên điều khiển qua Internet hoặc giọng nói.

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

  • Thêm thanh trượt tốc độ PWM trong app.
  • Kết hợp với buzzer hoặc đèn LED báo hiệu khi xe di chuyển.
  • Thiết kế ứng dụng Android riêng cho robot của bạn.

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

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Bộ điều khiển chính
L298N Motor Driver1Mạch cầu H kép
Motor DC + bánh xe2
Pin 7.4V hoặc 9V1Nguồn cấp động cơ
Điện thoại Android1Dùng app điều khiển

8. Kết luận

Bằng việc kết hợp ESP32 và Bluetooth, bạn đã tạo được một robot điều khiển không dây hoàn chỉnh.Công nghệ này có thể mở rộng sang các sản phẩm thực tế như xe đồ chơi, robot vận chuyển mini, hay tay robot điều khiển từ xa.