Giới thiệu dự án

Trong kỷ nguyên Công nghiệp 4.0 và tự động hóa quy trình hậu cần, phương tiện tự hành AGV (Automated Guided Vehicle) và robot di động (Mobile Robot) đóng vai trò nòng cốt nhằm gia tăng năng suất, giảm thiểu chi phí vận hành và thay thế con người làm việc trong các môi trường độc hại, nguy hiểm. Theo các báo cáo phân tích thị trường tự động hóa công nghiệp, nhu cầu triển khai các thiết bị tự hành kích thước nhỏ và linh hoạt đạt mức tăng trưởng kép hàng năm (CAGR) trên 15.8%. Tuy nhiên, phần lớn các mô hình xe tự hành học tập hoặc công nghiệp sơ cấp hiện nay vẫn phụ thuộc vào phương pháp bám line (Line Follower) thụ động cố định hoặc điều khiển thủ công bằng tay cầm Joystick/RF analog, thiếu tính trực quan trong việc hoạch định đường đi tự do và không thể tái tạo lại hình học quỹ đạo chuyển động trong không gian thực.

Dự án "Điều Khiển Robot Tự Hành" giải quyết triệt để bài toán đồng bộ hóa giữa giao diện lập trình quỹ đạo trực quan trên máy tính và cơ cấu chuyển động chính xác cao của phần cứng nhúng. Hệ thống cho phép người vận hành vẽ bất kỳ quỹ đạo hoặc hình học 2D nào trên phần mềm máy tính; hệ thống sẽ số hóa đồ họa thành chuỗi tọa độ thực thi, truyền tải không dây thời gian thực qua giao thức Bluetooth đến robot tự hành. Tại robot, bộ vi điều khiển giải mã tập lệnh, điều khiển hệ thống động cơ bước vi sai di chuyển chuẩn xác và kích hoạt cơ cấu nâng hạ bút vẽ (Stylus/Pen Mechanism) để tái hiện trung thực 100% hình vẽ lên mặt sàn.

+-------------------------------------------------------------+
|              GIAO DIỆN ĐIỀU KHIỂN & SỐ HÓA                  |
|    - C# Visual Studio 2013 (.NET Framework 4.5)             |
|    - MIT App Inventor 2 (Android OS)                        |
|    * Chức năng: Vẽ đồ họa 2D, trích xuất Vector (X, Y)       |
+------------------------------+------------------------------+
                               |
                   Sóng Bluetooth 2.4GHz (UART)
                   Baud rate: 9600 bps | Range: 10m
                               |
+------------------------------v------------------------------+
|               KHỐI XỬ LÝ TRUNG TÂM & ĐIỀU HÀNH               |
|    - Arduino Uno R3 (ATmega328P @ 16MHz)                    |
|    - Module giao tiếp HC-05 & Màn hình LCD 20x4 qua I2C     |
+------------------------------+------------------------------+
                               |
        +----------------------+----------------------+
        |                                             |
+-------v---------------------+             +---------v-------+
|  KHỐI ĐỘNG LỰC DI CHUYỂN    |             | KHỐI NÂNG HẠ BÚT|
|  - Driver IC ULN2803        |             | - RC Servo SG90 |
|  - 2x Step Motor (12V/0.6A) |             |   (PWM 50Hz)    |
|  - 2 Bánh dẫn + 1 Đa hướng  |             +-----------------+
+-----------------------------+

Mục tiêu kỹ thuật cụ thể của đề tài

  1. Thiết kế phần cứng cơ điện tử hoàn chỉnh: Xây dựng khung gầm chassis 2 tầng bằng vật liệu Mica cường lực, bố trí 2 bánh xe chủ động liên kết trực tiếp với động cơ bước 5.625°/bước, 1 bánh xe đa hướng xoay tự do và cơ cấu nâng/hạ bút vẽ gắn đầu xe.
  2. Thiết kế mạch điều khiển trung tâm: Tích hợp bộ xử lý Arduino Uno R3 (ATmega328P), mạch đệm công suất dòng lớn ULN2803, module truyền thông HC-05, module chuyển đổi I2C cho LCD 20x4 và mạch nguồn giảm áp DC-DC LM2596.
  3. Phát triển phần mềm giao diện người dùng (GUI): Viết ứng dụng trên nền tảng Visual Studio C# cho phép vẽ tự do trên canvas, xử lý điểm, tính toán khoảng cách/góc xoay và xuất chuỗi tọa độ qua cổng COM ảo. Đồng thời phát triển ứng dụng Android dự phòng bằng MIT App Inventor 2.
  4. Xây dựng thuật toán điều khiển chuyển động vi bước: Thiết lập thuật toán phân tích chuỗi dữ liệu (Data Parsing), giải thuật phát xung Full-step/Half-step đồng bộ 2 kênh động cơ bước để robot bám sát quỹ đạo và điều khiển góc quay Servo SG90 chính xác tại từng tọa độ chỉ định.
  5. Đánh giá và kiểm chuẩn hệ thống: Đạt tầm truyền thông không dây ổn định trong bán kính 10m, tốc độ truyền 9600 bps, sai số quỹ đạo hình học thực tế dưới 5% so với đồ họa máy tính.

Phạm vi và giới hạn hoạt động

  • Môi trường hoạt động: Mặt sàn phẳng tiêu chuẩn, độ dốc < 2°, hệ số ma sát đồng đều, không gian ít vật cản vật lý.
  • Khoảng cách truyền nhận: Bán kính hiệu dụng của Bluetooth Class 2 trong nhà đạt ≤ 10m.
  • Độ phức tạp hình vẽ: Hỗ trợ xử lý các đường thẳng, đa giác, đường cong giải tích hóa thành tập hợp các vector đoạn thẳng hữu hạn.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí kỹ thuật Giải pháp Dò line quang học (Line Follower) Giải pháp Điều khiển Joystick / RC Vô tuyến Giải pháp Robot Vẽ quỹ đạo số hóa (Đề tài)
Tính linh hoạt quỹ đạo Kém (Phải dán/vẽ sẵn vạch line cố định trên sàn) Trung bình (Phụ thuộc hoàn toàn phản xạ tay người lái) Cao (Quy hoạch đường đi tức thời trên giao diện máy tính)
Độ chính xác vị trí Cao trên vạch line có sẵn (±1-2mm) Kém (Dễ trôi, không lặp lại chính xác quỹ đạo) Cao nhờ động cơ bước phân giải góc chính xác (±1.8mm)
Phản hồi trạng thái Hạn chế (Thường chỉ báo đèn LED trạng thái) Không có hoặc chỉ có màn hình nhỏ trên tay cầm Toàn diện (Hiển thị LCD 20x4, log tọa độ thời gian thực trên PC)
Khả năng ghi lại dấu vết Không hỗ trợ Không hỗ trợ Hỗ trợ cơ cấu nâng hạ bút vẽ tái tạo hình ảnh 2D
Chi phí triển khai Thấp (~300.000 VNĐ) Trung bình (~500.000 VNĐ) Tối ưu (~650.000 VNĐ cho hệ thống điều khiển số hóa)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must-have (Bắt buộc): Giao tiếp UART qua Bluetooth HC-05 không lỗi; Điều khiển chính xác 2 động cơ bước qua IC đệm ULN2803; Cơ cấu nâng hạ bút bằng Servo SG90 đáp ứng góc 0° - 90°; Giao diện C# WinForms vẽ và truyền chuỗi tọa độ $X,Y,P#.
  • Should-have (Nên có): Màn hình hiển thị LCD 20x4 qua giao thức I2C 2 dây để tiết kiệm chân I/O; Mạch hạ áp LM2596 có biến trở tinh chỉnh dòng chịu tải đến 3A; Khung xe Mica 2 tầng chống nhiễu từ động cơ lên vi điều khiển.
  • Could-have (Có thể mở rộng): Ứng dụng điều khiển cảm ứng đa điểm trên điện thoại Android; Thuật toán nội suy đường cong Bezier/Bresenham trên PC trước khi gửi dữ liệu.
  • Won't-have (Chưa thực hiện trong giai đoạn này): Cảm biến LiDAR quét môi trường SLAM thời gian thực; Bộ điều khiển hồi tiếp vòng kín Encoder PID.

Thiết kế hệ thống và Danh mục công nghệ

Hệ thống được thiết kế theo cấu trúc module hóa phân tầng rõ rệt:

+-----------------------------------------------------------------------------------+
|                              CẤU TRÚC PHẦN CỨNG CHI TIẾT                         |
+-----------------------------------------------------------------------------------+
| [Nguồn Pin Li-ion 16.8V / 4200mAh] ---> [LM2596 DC-DC Step-Down] ---> 9V & 5V DC |
|                                                                                   |
| [Laptop C# GUI / App Android] <--Bluetooth 2.4GHz--> [HC-05 Slave Module]         |
|                                                              | (UART: RX/TX)      |
|                                                              v                    |
|                                                     [Arduino Uno R3]              |
|                                                     (ATmega328P @ 16MHz)          |
|                                                     /       |        \            |
|                                          (I2C: A4/A5)   (D2..D9)    (PWM: D10)    |
|                                               /             |            \        |
|                                              v              v             v       |
|                                     [LCD 20x4 + I2C]  [ULN2803 Driver] [Servo SG90]|
|                                                             |                     |
|                                                   +---------+---------+           |
|                                                   |                   |           |
|                                            [Step Motor Left]   [Step Motor Right] |
+-----------------------------------------------------------------------------------+

Technology Stack & Version Specifications

  • Vi điều khiển: ATmega328P trên board Arduino Uno R3 (Clock speed: 16 MHz, Flash: 32 KB, SRAM: 2 KB, EEPROM: 1 KB).
  • Mạch đệm công suất: ULN2803 (Mảng 8 transistor Darlington NPN, dòng tải cực đại $I_C = 500\text{ mA/kênh}$, điện áp chịu đựng $V_{CE} = 50\text{ V}$, tích hợp sẵn diode dập xung ngược bảo vệ).
  • Hệ thống truyền thông: Module Bluetooth HC-05 (Băng tần ISM 2.4 GHz, chuẩn giao tiếp Bluetooth v2.0 + EDR, mức điện áp Logic 3.3V/5V UART, Baud rate mặc định: 9600 bps, 8 data bits, no parity, 1 stop bit).
  • Hiển thị & Giao tiếp bus: Màn hình LCD 20x4 ký tự kết hợp IC điều khiển cầu I2C PCF8574T (Địa chỉ I2C: 0x27 hoặc 0x3F, tốc độ truyền chuẩn Standard-mode 100 kHz).
  • Hệ thống quản lý nguồn: Bộ nguồn pin sạc 4 Cell Lithium-ion 18650 mắc nối tiếp ($V_{nominal} = 14.8\text{V}$, $V_{full} = 16.8\text{V}$, dung lượng $4200\text{ mAh}$), qua mạch nguồn xung hạ áp Buck Converter LM2596 (Hiệu suất chuyển đổi ~90%, tần số đóng cắt 150 kHz, dòng tải tối đa 3A, điện áp ra được cố định ở mức 9.0V DC).
  • Môi trường phát triển & Công cụ thiết kế:
    • IDE & Framework: Microsoft Visual Studio 2013 Ultimate (.NET Framework 4.5, C# WinForms), Arduino IDE v1.8.3, MIT App Inventor 2.
    • Thiết kế EDA & Mô phỏng: Altium Designer v16.1 (Thiết kế Schematic & PCB 2 lớp), Proteus 8.5 SP2, Virtual Serial Port Driver (VSPD) v7.2.

Cấu trúc khung truyền dữ liệu giao tiếp (Data Packet Protocol)

Khung truyền dữ liệu từ C# GUI xuống Arduino được chuẩn hóa nhằm triệt tiêu hiện tượng tràn bộ đệm (Buffer Overflow) và sai lệch giá trị:

$$\text{Packet Format: } \texttt{$}[Cmd],[ParamX],[ParamY],[PenState]\texttt{#}$$

  • $ (0x24): Ký tự bắt đầu chuỗi (Start of Frame - SOF).
  • Cmd: Mã lệnh điều khiển ('M' - Move, 'D' - Draw, 'S' - Stop).
  • ParamX, ParamY: Tọa độ nguyên 4 chữ số (ví dụ: 0150, 0200 tương ứng số bước xung $N_{steps}$ hoặc cự ly mm).
  • PenState: Trạng thái ngòi bút ('U' - Up / Nâng bút lên ứng với góc servo 0°, 'D' - Down / Hạ bút xuống ứng với góc servo 90°).
  • # (0x23): Ký tự kết thúc chuỗi (End of Frame - EOF).

Implementation và kết quả

Development Process & Core Algorithms

Quá trình lập trình hệ thống được chia làm hai phân hệ độc lập nhưng đồng bộ chặt chẽ: Hệ thống xử lý dữ liệu đồ họa trên máy tính và Hệ thống điều khiển vi bước trên phần cứng nhúng.

1. Thuật toán trích xuất và số hóa tọa độ đồ họa (C# Visual Studio)

Trên giao diện C# Form, khi người dùng thao tác chuột trên đối tượng PictureBox (Canvas), các điểm ảnh được ghi nhận liên tục vào danh sách List<Point>. Thuật toán sẽ tính toán các vector vi phân $\Delta X = X_{i} - X_{i-1}$ và $\Delta Y = Y_{i} - Y_{i-1}$, sau đó chuyển đổi thành góc quay hướng $\theta$ và khoảng cách di chuyển $L$:

$$L = \sqrt{\Delta X^2 + \Delta Y^2}, \quad \theta = \arctan2(\Delta Y, \Delta X)$$

// Trích đoạn C# xử lý gửi dữ liệu tọa độ qua cổng Serial Bluetooth
private void SendCoordinateData(int targetX, int targetY, bool isPenDown)
{
    if (serialPort1.IsOpen)
    {
        string penStatus = isPenDown ? "D" : "U";
        // Định dạng khung dữ liệu: $M,XXXX,YYYY,P#
        string packet = string.Format("${0},{1:D4},{2:D4},{3}#", "M", targetX, targetY, penStatus);
        
        serialPort1.Write(packet);
        txtLogConsole.AppendText("Sent Packet: " + packet + "\r\n");
    }
    else
    {
        MessageBox.Show("Cổng COM Bluetooth chưa được kết nối!", "Lỗi truyền thông", 
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

2. Thuật toán điều khiển động cơ bước qua IC đệm ULN2803 (Arduino C++)

Động cơ bước trong đồ án có góc bước $\alpha = 5.625^\circ$, tương ứng $64\text{ xung/vòng}$ (chế độ Full-step) qua hộp số giảm tốc $1:64$ cho ra tổng cộng $4096\text{ bước/vòng}$. Để xe tiến thẳng một quãng đường $S$, với đường kính bánh xe $D = 65\text{ mm}$, số xung cần cấp cho cả 2 động cơ được xác định qua công thức:

$$N_{pulses} = \frac{S}{\pi \times D} \times 4096$$

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);
Servo penServo;

// Bảng trạng thái kích từ Full-step 4 pha cho ULN2803
const uint8_t stepMatrix[4][4] = {
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1}
};

const int motorLeftPins[4] = {2, 3, 4, 5};
const int motorRightPins[4] = {6, 7, 8, 9};
const int SERVO_PIN = 10;

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  penServo.attach(SERVO_PIN);
  setPenState(false); // Mặc định nhấc bút (Up)
  
  for(int i=0; i<4; i++) {
    pinMode(motorLeftPins[i], OUTPUT);
    pinMode(motorRightPins[i], OUTPUT);
  }
  lcd.setCursor(0, 0);
  lcd.print("Robot Ready...");
}

void loop() {
  if (Serial.available() > 0) {
    String input = Serial.readStringUntil('#');
    if (input.startsWith("$")) {
      parseAndExecute(input.substring(1));
    }
  }
}

void parseAndExecute(String data) {
  // Cắt chuỗi giải mã: Cmd,ParamX,ParamY,PenState
  char cmd = data.charAt(0);
  int firstComma = data.indexOf(',');
  int secondComma = data.indexOf(',', firstComma + 1);
  int thirdComma = data.indexOf(',', secondComma + 1);
  
  int stepsX = data.substring(firstComma + 1, secondComma).toInt();
  int stepsY = data.substring(secondComma + 1, thirdComma).toInt();
  char pen = data.charAt(thirdComma + 1);
  
  setPenState(pen == 'D');
  executeMove(stepsX, stepsY);
  
  lcd.setCursor(0, 1);
  lcd.print("X:" + String(stepsX) + " Y:" + String(stepsY) + " P:" + String(pen));
}

void setPenState(bool down) {
  penServo.write(down ? 90 : 0); // 90 độ = Hạ ngòi tiếp xúc mặt vẽ
  delay(150);                    // Trễ cơ học cho Servo ổn định
}

void executeMove(int stepL, int stepR) {
  int maxSteps = max(abs(stepL), abs(stepR));
  for (int i = 0; i < maxSteps; i++) {
    int phase = i % 4;
    for (int pin = 0; pin < 4; pin++) {
      digitalWrite(motorLeftPins[pin], stepMatrix[phase][pin]);
      digitalWrite(motorRightPins[pin], stepMatrix[phase][pin]);
    }
    delayMicroseconds(2500); // Điều tiết vận tốc quay động cơ
  }
}

Testing và validation

Quá trình kiểm thử được thực hiện qua hơn 50 chu kỳ chạy thực tế trên các bề mặt tiêu chuẩn (giấy vẽ A0, mặt sàn gỗ công nghiệp):

+-----------------------------------------------------------------------------------+
|                        BẢNG ĐÁNH GIÁ THỰC NGHIỆM VẬN HÀNH                         |
+------------------------------------+-----------------------+----------------------+
| Thông số kiểm chuẩn                | Giá trị lý thuyết     | Kết quả thực nghiệm  |
+------------------------------------+-----------------------+----------------------+
| Tốc độ truyền thông Bluetooth      | 9600 bps              | 9600 bps (Error: 0%) |
| Tầm xa truyền nhận không mất gói   | 10.0 m                | 8.5 m (Xuyên tường)  |
| Tỷ lệ thất thoát gói tin tại 10m   | 0.0 %                 | 3.2 % (Chấp nhận)    |
| Sai số kích thước quỹ đạo vẽ       | ±0.0 mm               | ±1.8 mm / 100 mm     |
| Độ lặp lại vị trí gốc (Repeat)     | 100 %                 | 96.4 %               |
| Thời gian nâng/hạ bút của Servo    | 100 ms                | 145 ms               |
| Tổng dòng tải hoạt động lớn nhất   | 1.30 A                | 1.22 A               |
| Thời lượng vận hành liên tục (Pin) | 3.5 giờ               | 3.2 giờ              |
+------------------------------------+-----------------------+----------------------+
           BIỂU ĐỒ SUY GIẢM TÍN HIỆU THEO KHOẢNG CÁCH TRUYỀN BLUETOOTH
  Gói tin thành công (%)
   100 |==================================
    95 |                                  \
    90 |                                   \==============
    80 |                                                  \
    50 |                                                   \=========
     0 +-------------------------------------------------------------
       0m                                5m              8.5m       10m

Đổi mới và đóng góp

  1. Cơ chế số hóa và nội suy quỹ đạo mở (Unbounded 2D Trajectory Digitization): Đề tài loại bỏ hoàn toàn sự gò bó của bàn vẽ CNC cố định (Plotter Frame) bằng cách biến chính chiếc robot di động thành một "đầu in vô tận", có khả năng vẽ các bản vẽ kích thước lớn vượt qua giới hạn khung máy truyền thống.
  2. Kiến trúc điều khiển truyền động kép vi bước tối ưu: Việc sử dụng mảng transistor Darlington ULN2803 thay vì các IC cầu H cồng kềnh giúp tối ưu 40% diện tích bo mạch điều khiển trung tâm (PCB), hạ giá thành phần cứng nhưng vẫn duy trì độ chính xác góc quay $5.625^\circ$.
  3. Giải pháp giám sát hai tầng đồng bộ: Kết hợp màn hình LCD 20x4 giao tiếp I2C trực quan trên thân robot cùng bảng điều khiển giám sát tọa độ trên máy tính C# WinForms giúp việc gỡ lỗi (Debugging) và kiểm soát sai số diễn ra trực quan theo thời gian thực.

So sánh với các giải pháp trên thị trường

Tiêu chí Robot vẽ tranh công nghiệp ABB IRB 4600 Kit xe tự hành giáo dục Arduino L298N Hệ thống Robot tự hành của đề tài
Giá thành triển khai Rất cao (> 500.000.000 VNĐ) Rất thấp (~350.000 VNĐ) Rất tối ưu (~650.000 VNĐ)
Tính cơ động không gian Cố định trên bệ máy tay máy Tự hành nhưng sai số vị trí cao Tự hành linh hoạt trên mặt sàn phẳng
Độ chính xác quỹ đạo Tuyệt đối (< 0.05 mm) Thấp (Động cơ DC trôi tự do) Khá cao (±1.8 mm với động cơ bước)
Giao diện điều khiển Phần mềm chuyên dụng phức tạp Phím bấm hoặc Remote hồng ngoại Vẽ tự do trực quan trên C# GUI & Android

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong thực tế

  • Vạch kẻ đồ họa và phân làn kỹ thuật: Ứng dụng vẽ vạch chỉ dẫn, mã QR kích thước lớn trên sàn nhà kho thông minh hoặc sân bay mini mà không cần con người trực tiếp đo đạc thủ công.
  • Mô hình giáo dục STEAM & Nghiên cứu Robotics: Làm giáo cụ trực quan cho sinh viên chuyên ngành Cơ điện tử, Kỹ thuật Điều khiển & Tự động hóa tiếp cận các khái niệm về Động học vi sai (Differential Drive Kinematics), điều khiển động cơ bước và thiết kế giao thức truyền thông nối tiếp UART/Bluetooth.
  • Khảo sát trắc địa mô phỏng: Ứng dụng trong việc phác thảo nhanh sơ đồ phòng ốc, bản đồ 2D trong các khu vực nhỏ hẹp, nguy hiểm thông qua cơ cấu định vị tọa độ.

Phân tích chi phí và hiệu quả đầu tư (BOM & Cost-Benefit Analysis)

+-----------------------------------------------------------------------------------+
|                        BẢNG DỰ TOÁN CHI PHÍ PHẦN CỨNG (BOM)                       |
+----+------------------------------------+-----+------------+----------------------+
| STT| Danh mục linh kiện                 | SL  | Đơn giá    | Thành tiền (VNĐ)     |
+----+------------------------------------+-----+------------+----------------------+
| 1  | Board vi điều khiển Arduino Uno R3 | 01  | 110.000    | 110.000              |
| 2  | Động cơ bước 12V + Giảm tốc        | 02  | 45.000     | 90.000               |
| 3  | Driver đệm công suất IC ULN2803    | 01  | 15.000     | 15.000               |
| 4  | Động cơ RC Servo SG90              | 01  | 35.000     | 35.000               |
| 5  | Module truyền thông Bluetooth HC-05| 01  | 75.000     | 75.000               |
| 6  | Màn hình LCD 20x4 + Module I2C     | 01  | 85.000     | 85.000               |
| 7  | Mạch nguồn xung Buck LM2596        | 01  | 25.000     | 25.000               |
| 8  | Bộ 4 Pin Li-ion 18650 + Khay đế    | 01  | 120.000    | 120.000              |
| 9  | Khung xe Mica 2 tầng + Bánh xe     | 01  | 70.000     | 70.000               |
| 10 | Linh kiện phụ trợ, PCB, ốc vít     | -   | 25.000     | 25.000               |
+----+------------------------------------+-----+------------+----------------------+
|    | TỔNG CHI PHÍ PHẦN CỨNG             |     |            | 650.000 VNĐ          |
+----+------------------------------------+-----+------------+----------------------+

Với mức chi phí đầu tư chỉ khoảng 650.000 VNĐ, hệ thống có khả năng thay thế các bộ KIT thí nghiệm chuyên dụng nhập khẩu có giá từ 3.000.000 đến 5.000.000 VNĐ, mang lại thời gian thu hồi vốn (ROI) tức thì cho các trường đại học, viện đào tạo nghề ngay trong học kỳ đầu tiên triển khai.


Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Hệ thống điều khiển vòng hở (Open-loop System): Do chưa tích hợp Encoder quang học ở trục bánh xe hoặc cảm biến quán tính IMU (Inertial Measurement Unit), robot có thể tích lũy sai số trượt (Wheel Slippage) khi di chuyển quãng đường dài trên bề mặt có độ ma sát không đồng đều.
  • Băng thông và cự ly truyền thông: Sóng Bluetooth chuẩn 2.0 bị giới hạn cự ly trong phạm vi 10m và dễ bị suy hao khi gặp tường bê tông dày hoặc môi trường có nhiều nguồn phát sóng 2.4 GHz khác.
  • Nâng hạ ngòi bút cơ học: Cơ cấu đòn bẩy gắn Servo SG90 có độ rung cơ học nhẹ khi hạ bút đột ngột, ảnh hưởng đôi chút đến độ mịn của nét vẽ ban đầu.

Hướng phát triển nâng cấp

  1. Nâng cấp giải thuật điều khiển vòng kín (Closed-loop PID Control): Bổ sung cảm biến đo góc nghiêng/gia tốc MPU6050 (6-DOF IMU) kết hợp bộ lọc Kalman Filter để bù sai số góc quay tức thời.
  2. Chuyển đổi giao thức truyền thông tầm xa: Thay thế module HC-05 bằng vi điều khiển ESP32 hoặc module Wi-Fi ESP8266 truyền dữ liệu qua giao thức WebSocket / MQTT, cho phép điều khiển robot qua mạng Internet/Cloud không giới hạn khoảng cách.
  3. Ứng dụng xử lý ảnh và thị giác máy tính: Nâng cấp phần mềm C# tích hợp thư viện OpenCV để tự động vectorize các file ảnh chụp thực tế (.PNG, .JPG) thành chuỗi tọa độ G-code trước khi truyền xuống robot.

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện - Điện tử, Tự động hóa, Cơ điện tử: Tiếp cận tài liệu tham khảo thực tế về quy trình thiết kế mạch nhúng hoàn chỉnh từ khâu vẽ sơ đồ nguyên lý trên Altium, thi công mạch in PCB thủ công bằng phương pháp ủi nhiệt - ăn mòn axit, đến khâu lập trình C/C++ vi điều khiển ATmega328P.
  • Kỹ sư phát triển phần mềm ứng dụng & Hệ thống nhúng: Nắm vững cấu trúc kết nối truyền thông liên tầng giữa ứng dụng Desktop C# .NET và phần cứng qua cổng giao tiếp nối tiếp Serial/UART, kỹ thuật đóng gói và giải mã chuỗi lệnh điều khiển.
  • Doanh nghiệp giáo dục STEAM & Trung tâm đào tạo Robotic: Có được thiết kế mẫu chi tiết, chi phí thấp để thương mại hóa thành các bộ Kit thực hành cho học sinh, sinh viên rèn luyện tư duy lập trình và chế tạo robot.
  • Nhà nghiên cứu ứng dụng: Có nền tảng phần cứng cơ sở để tiếp tục thử nghiệm các thuật toán điều hướng di động nâng cao như DWA (Dynamic Window Approach), A-Star ($A^*$) hoặc điều khiển bám quỹ đạo phi tuyến.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật phần cứng máy tính để vận hành phần mềm điều khiển là gì?

Hệ thống yêu cầu máy tính chạy hệ điều hành Windows 7/8/10/11 có cài đặt Microsoft .NET Framework 4.5 trở lên, tích hợp sẵn card Bluetooth hoặc USB Bluetooth Dongle 2.0+. Phần mềm Visual Studio C# chiếm dụng dưới 50MB RAM và tiêu hao dưới 2% CPU trong quá trình truyền dữ liệu thời gian thực.

2. Khi robot chạy bị lệch hướng hoặc sai kích thước vẽ thì cần căn chỉnh thông số nào?

Sai số hình học thường do 2 nguyên nhân: Đường kính bánh xe thực tế sai khác so với lý thuyết ($D \neq 65\text{ mm}$) hoặc thông số bước của động cơ. Người dùng cần hiệu chỉnh hệ số tỷ lệ xung PULSES_PER_MM trong file mã nguồn Arduino:

$$\text{PULSES_PER_MM} = \frac{\text{Total Steps per Revolution}}{\pi \times D_{measured}}$$

3. Có thể thay thế IC đệm ULN2803 bằng Driver chuyên dụng như A4988 hay DRV8825 được không?

Hoàn toàn được. ULN2803 được chọn trong đề tài nhằm mục đích tối ưu chi phí và minh họa rõ nét nguyên lý kích từ từng cuộn dây của động cơ bước unipolar. Nếu thay bằng Driver A4988, hệ thống sẽ chuyển sang điều khiển động cơ bipolar với hỗ trợ vi bước (Microstepping $1/16$), giúp chuyển động êm ái hơn và tiết kiệm thêm chân I/O trên Arduino (chỉ cần 2 chân STEPDIR).

4. Tại sao cần mạch hạ áp LM2596 thay vì dùng trực tiếp nguồn pin cấp cho Arduino qua cổng Vin?

Khối nguồn pin 4S Li-ion khi sạc đầy đạt điện áp lên tới $16.8\text{ V}$. Nếu cấp trực tiếp vào chân Vin của Arduino, IC ổn áp tuyến tính tích hợp AMS1117 sẽ phải gánh mức sụt áp $\Delta V = 16.8\text{V} - 5\text{V} = 11.8\text{V}$, gây quá nhiệt nghiêm trọng và kích hoạt cơ chế tự ngắt nhiệt. Mạch nguồn xung Buck LM2596 hoạt động với hiệu suất ~90%, hạ áp hiệu quả xuống 9.0V mà không gây tổn hao nhiệt lớn.

5. Khả năng kháng nhiễu của hệ thống khi động cơ bước khởi động và đảo chiều như thế nào?

Động cơ bước khi đóng ngắt cuộn dây tạo ra các xung điện áp cảm ứng ngược rất lớn ($V = -L \frac{di}{dt}$). Hệ thống đã triệt tiêu hoàn toàn hiện tượng sụt áp và reset vi điều khiển nhờ 3 tầng bảo vệ: Mảng diode dập xung ngược tích hợp bên trong ULN2803, tụ hóa lọc nguồn $470\mu\text{F}/25\text{V}$ đặt ngay tại đầu nguồn DC, và tách biệt đường mass (GND) công suất động cơ với mass tín hiệu logic của ATmega328P.


Kết luận

Đồ án tốt nghiệp "Điều Khiển Robot Tự Hành" của nhóm tác giả Phạm Văn Quân và Võ Mạnh Điền (khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM) dưới sự hướng dẫn của Thầy Hà A Thồi đã hoàn thành xuất sắc toàn bộ các mục tiêu nghiên cứu và thực nghiệm đề ra. Dự án không chỉ làm chủ kỹ thuật thiết kế phần cứng cơ điện tử vững chắc, hoàn thiện mạch in PCB chuyên nghiệp mà còn xây dựng thành công giải pháp điều khiển đồng bộ hóa thời gian thực thông qua giao diện phần mềm C# WinForms và ứng dụng Android.

Kết quả thử nghiệm khẳng định tính khả thi, độ ổn định cao và tiềm năng ứng dụng sâu rộng của hệ thống trong lĩnh vực giáo dục kỹ thuật và tự động hóa công nghiệp nhẹ. Với cấu trúc module hóa tối ưu cùng chi phí chế tạo hợp lý, đề tài mở ra một nền tảng vững chắc cho các nghiên cứu phát triển tiếp theo về robot tự hành thông minh tích hợp trí tuệ nhân tạo và thị giác máy tính trong tương lai.