Giới thiệu dự án

Bối cảnh và sự cần thiết của hệ thống tự hành thông minh

Trong kỷ nguyên phát triển mạnh mẽ của Công nghiệp 4.0 và khái niệm đô thị thông minh (Smart City), các phương tiện tự hành (Autonomous Guided Vehicles - AGV / Self-driving Vehicles) đóng vai trò then chốt trong việc tối ưu hóa chuỗi cung ứng, tự động hóa logistics và giảm thiểu tối đa tai nạn giao thông do yếu tố con người. Theo thống kê từ tổ chức IHS Automotive, doanh số xe tự hành trên toàn cầu được dự báo sẽ tăng trưởng vượt bậc, đạt quy mô 11,8 triệu phương tiện vào năm 2035 (trong đó gồm 7,0 triệu xe bán tự hành và 4,8 triệu xe tự hành hoàn toàn). Hơn 90% các vụ tai nạn giao thông đường bộ bắt nguồn từ sự mất tập trung, mệt mỏi hoặc phản xạ chậm của người điều khiển; việc ứng dụng các thuật toán định vị và điều hướng tự động trên phương tiện không người lái là giải pháp cấp thiết nhằm nâng cao mức độ an toàn giao thông và tối ưu hóa chi phí vận hành.

Vấn đề nghiên cứu thực tế (Problem Statement)

Các mô hình xe điều khiển từ xa truyền thống thông qua sóng vô tuyến (RF) hoặc kết nối tầm gần (Bluetooth) bộc lộ nhiều hạn chế nghiêm trọng:

  • Giới hạn phạm vi kiểm soát: Tầm tác động vật lý bị giới hạn trong bán kính vài mét đến vài chục mét, phụ thuộc hoàn toàn vào tầm nhìn thẳng (Line-of-Sight - LOS) của người điều khiển.
  • Thiếu khả năng tự ra quyết định: Xe không thể tự xác định tọa độ toàn cầu, không tự vạch lộ trình di chuyển và không thể phản ứng tự động trước chướng ngại vật trên đường đi.
  • Chi phí triển khai giải pháp cao cấp quá đắt đỏ: Các hệ thống tự hành công nghiệp sử dụng cảm biến quét laser LIDAR 3D, máy tính nhúng chuyên dụng và hệ thống định vị vi sai RTK-GPS có giá thành lên tới hàng chục nghìn USD, không khả thi cho các ứng dụng dân dụng quy mô vừa và nhỏ hoặc mô hình đào tạo nghiên cứu.

Mục tiêu dự án

  1. Thiết kế phần cứng xe tự hành đa vi điều khiển: Xây dựng hệ thống phần cứng phân tán kết hợp vi điều khiển ARM Cortex-M3 (STM32F103VET6) xử lý thuật toán dẫn đường phức tạp và vi điều khiển 8-bit (Arduino Nano / ATmega328P) điều khiển cơ cấu chấp hành thời gian thực.
  2. Tích hợp cảm biến định vị và xác định hướng: Ghép nối module GPS Ublox NEO-7M nhằm thu thập tọa độ địa lý toàn cầu và la bàn số 3 trục HMC5883L để tính toán góc lệch hướng di chuyển (Azimuth/Heading).
  3. Phát triển thuật toán tránh vật cản tự động: Ứng dụng cảm biến sóng siêu âm SRF-05 kết hợp động cơ servo quét góc nhằm phát hiện và né tránh vật cản tĩnh trong phạm vi quét an toàn.
  4. Xây dựng ứng dụng điều khiển và giám sát trên Smartphone Android: Tích hợp Google Maps API và Google Places API để chọn điểm đến, tính toán lộ trình tối ưu và truyền tải chuỗi tọa độ địa lý.
  5. Thiết lập giao thức truyền thông đám mây Cloud IoT: Sử dụng module Wi-Fi ESP8266 giao tiếp qua giao thức HTTP (GET/POST) với máy chủ trung gian (Google Spreadsheets API / Web Server), đảm bảo khả năng giám sát từ xa không giới hạn khoảng cách địa lý.

Phương pháp giải quyết và tính khả thi

Giải pháp sử dụng kiến trúc điều khiển phân tán (Distributed Dual-MCU Architecture) giúp tách biệt tác vụ nặng (tính toán lượng giác trên tọa độ GPS, phân tích gói tin HTTP/UART) trên STM32F103VET6 (xung nhịp 72 MHz) và tác vụ điều khiển động cơ băm xung PWM tần số cao trên Arduino Nano (16 MHz). Phương pháp quy đổi tọa độ cầu sang mặt phẳng Decartes cục bộ với hệ số co giãn $T \approx 1,015427$ giúp vi điều khiển xử lý nhanh vector di chuyển mà không làm quá tải bộ nhớ flash và chu kỳ xung nhịp.

[Smartphone (Android App)] 
         │ (HTTP POST - Tọa độ lộ trình)
         ▼
[Cloud Server / Google Forms Endpoint]
         │ (HTTP GET - Polling dữ liệu)
         ▼
[ESP8266 Wi-Fi Module] ──(UART)──► [ARM STM32F103VET6] ◄──(UART)── [Ublox NEO-7M GPS]
                                          │ (UART - Dữ liệu góc & khoảng cách)
                                          ▼
                                   [Arduino Nano] ◄──(I2C)── [HMC5883L Compass]
                                     │         ▲
                                (PWM)│         └──(Pulse)── [SRF-05 Ultrasonic]
                                     ▼
                              [Mạch TIP122 & Động cơ DC]

Kết quả đầu ra kỳ vọng

  • Sai số định vị tĩnh và động qua GPS Ublox NEO-7M: $2,0 - 2,5\text{ m}$.
  • Tần số phản hồi điều khiển động cơ: trễ dưới $50\text{ ms}$ tại tầng chấp hành.
  • Tự động phát hiện và chuyển hướng né vật cản ở cự ly an toàn $15 - 30\text{ cm}$.
  • Khả năng truyền nhận tọa độ qua kết nối Wi-Fi/Internet ổn định với chu kỳ cập nhật dữ liệu $1 - 2\text{ giây/lần}$.

Phạm vi và giới hạn đề tài

  • Môi trường hoạt động: Thử nghiệm ngoài trời tại khu vực thoáng đãng để module GPS bắt đủ từ 4 vệ tinh trở lên; bề mặt địa hình phẳng.
  • Xử lý vật cản: Tối ưu cho vật cản tĩnh kích thước cố định; chưa tích hợp thuật toán xử lý vật cản động tốc độ cao.
  • Kết nối mạng: Phụ thuộc vào vùng phủ sóng Wi-Fi cục bộ cấp cho module ESP8266.

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 Xe điều khiển RF/Bluetooth Xe tự hành cao cấp (LIDAR + ROS) Giải pháp của đề tài (Dual-MCU + Cloud IoT)
Phạm vi điều khiển Cực kỳ hạn chế ($10 - 100\text{ m}$) Không giới hạn qua Cloud / 4G Không giới hạn qua Cloud / Internet
Khả năng tự hành Thủ công 100% Tự hành hoàn toàn cấp độ 4-5 Tự hành theo tọa độ GPS + Né vật cản
Chi phí phần cứng Thấp ($15 - 30\text{ USD}$) Rất cao ($1.500 - 10.000\text{ USD}$) Trung bình / Tiết kiệm ($60 - 80\text{ USD}$)
Tải tính toán Thấp (Vi điều khiển 8-bit cơ bản) Cực cao (NVIDIA Jetson / IPC x86) Tối ưu hóa (ARM Cortex-M3 + AVR 8-bit)
Giao diện giám sát Tay cầm RC / App Bluetooth thô sơ Trạm điều khiển mặt đất GCS chuyên dụng App Android trực quan với Google Maps API

Phân tích yêu cầu người dùng theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có): Thu thập dữ liệu GPS NMEA-0183; đo góc la bàn số qua $I^2C$; tự động điều khiển 2 động cơ DC theo lộ trình; né vật cản tĩnh qua cảm biến siêu âm; truyền nhận HTTP qua Wi-Fi.
  • Should Have (Nên có): Hiển thị trực quan vị trí xe và polyline lộ trình trên Google Maps Android; tự động nội suy góc lệch so với hướng Bắc địa từ.
  • Could Have (Có thể có): Cơ cấu quét cảm biến siêu âm bằng động cơ Servo 180 độ; tính toán cự ly còn lại tới điểm đích theo thời gian thực.
  • Won't Have (Chưa thực hiện trong giai đoạn này): Nhận diện biển báo giao thông bằng Camera AI; tránh vật cản động di chuyển tốc độ cao.

Thiết kế hệ thống

Danh mục công nghệ và phiên bản (Technology Stack)

  • Phần cứng vi xử lý: STM32F103VET6 (32-bit ARM Cortex-M3, 72 MHz, 512 KB Flash), ATmega328P (Arduino Nano V3.0, 16 MHz).
  • Module ngoại vi: Ublox NEO-7M GPS (Baud 9600), HMC5883L (12-bit ADC, I2C), ESP8266-01 (Firmware AT 802.11 b/g/n), SRF-05 Ultrasonic Sensor, Micro Servo SG90.
  • Phần mềm nhúng: Keil MDK-ARM v5.14, Standard Peripheral Libraries for STM32F10x, Arduino IDE v1.6.8.
  • Phát triển ứng dụng Mobile: Android Studio 2.1, JDK 8, Android SDK API Level 23 (Android 6.0 Marshmallow), Google Play Services SDK (Maps & Places API v2).
+-------------------------------------------------------------------------+
|                        KIẾN TRÚC HỆ THỐNG PHẦN CỨNG                     |
+-------------------------------------------------------------------------+
| [Khối Nguồn] -> LM7805 (5V/1.5A) & AMS1117 (3.3V/800mA) -> Pin Li-ion  |
|                                                                         |
| [Khối Xử Lý Trung Tâm]                                                  |
| ├── ARM Cortex-M3 (STM32F103VET6)                                       |
| │   ├── UART1: Debug / Nạp Code                                         |
| │   ├── UART2: ESP8266-01 (HTTP GET/POST Client Cloud)                  |
| │   ├── UART3: Ublox NEO-7M GPS Receiver                                |
| │   └── USART4: Kết nối liên vi điều khiển (Truyền lệnh sang Arduino)   |
| └── AVR ATmega328P (Arduino Nano)                                       |
|     ├── I2C Bus: HMC5883L 3-Axis Magnetometer                           |
|     ├── GPIO/Timer: Cảm biến siêu âm SRF-05 & Servo SG90 Quét hướng     |
|     └── Timer PWM: Điều khiển công suất Transistor TIP122 (Motor L/R)   |
+-------------------------------------------------------------------------+

Tính toán thiết kế mạch công suất động cơ

Mô hình sử dụng 2 động cơ DC định mức $9\text{V} - 2\text{A}$ ($P_{DC} = 18\text{W}$). Để đóng cắt công suất hiệu quả mà không gây quá nhiệt vi điều khiển, mạch khuếch đại sử dụng Transistor Darlington NPN TIP122 ($V_{CE0} = 100\text{V}, I_{C,\max} = 5\text{A}, h_{FE} \ge 1000$).

  • Điện áp kích cực B: $V_{in} = 5\text{V}$ (từ ngõ ra logic Arduino Nano).
  • Điện áp bão hòa cực B-E: $V_{BE} \approx 2\text{V}$.
  • Điện trở hạn dòng chân Base được tính toán:

$$I_B = \frac{V_{in} - V_{BE}}{R_B} = \frac{5\text{V} - 2\text{V}}{220,\Omega} = 13,63\text{ mA}$$

Theo đặc tính bão hòa (Datasheet TIP122), khi $I_B \ge 12\text{ mA}$, tiếp giáp C-E rơi vào trạng thái bão hòa hoàn toàn với $V_{CE(sat)} \le 2\text{V}$, cho phép dòng tải $I_C$ dẫn tối đa $3\text{A}$.

  • Công suất tiêu tán tối đa mạch chịu được với nguồn cấp $V_{pin} = 8,4\text{V}$:

$$P_{\max} = (V_{pin} - V_{CE(sat)}) \times I_{C,\max} = (8,4\text{V} - 2,0\text{V}) \times 3\text{A} = 19,2\text{ W} > P_{DC}$$

Hệ thống hoàn toàn đáp ứng độ tin cậy và an toàn về mặt điện năng.

Cơ sở toán học quy đổi tọa độ và xác định góc lái

Khu vực thử nghiệm nằm tại TP. Hồ Chí Minh ($10^\circ 10' - 10^\circ 38'\text{ B}, 106^\circ 22' - 106^\circ 54'\text{ Đ}$). Chọn mốc chuẩn $Lat_0 = 10^\circ, Lng_0 = 106^\circ$, bán kính Trái Đất $R = 6.400.000\text{ m}$.

  • Độ dài cung 1 độ Vĩ tuyến:

$$D_{lat} = \frac{2\pi R}{360} = \frac{2 \times \pi \times 6.400.000}{360} \approx 111.701,0721\text{ m}$$

  • Độ dài cung 1 độ Kinh tuyến tại Vĩ độ $10^\circ$:

$$D_{lng} = \frac{2\pi R \sin(90^\circ - 10^\circ)}{360} = \frac{2\pi R \sin(80^\circ)}{360} \approx 109.999,8542\text{ m}$$

  • Hệ số co giãn mặt phẳng tọa độ $T$:

$$T = \frac{D_{lat}}{D_{lng}} = \frac{1}{\sin(80^\circ)} \approx 1,015427$$

Khoảng cách Euclidean giữa vị trí hiện tại $A(Lng_A, Lat_A)$ và điểm đích $D(Lng_D, Lat_D)$ trên mặt phẳng quy đổi:

$$|\vec{AD}| = \sqrt{\left[T \times (Lng_D - Lng_A)\right]^2 + (Lat_D - Lat_A)^2} \times 111.701,0721\text{ (m)}$$

Góc lệch mục tiêu $\theta$ so với hướng Bắc địa từ được xác định thông qua tích vô hướng giữa vector $\vec{AD}$ và vector đơn vị hướng Bắc $\vec{u}_N(0, 1)$:

$$\cos(\theta) = \frac{\vec{AD} \cdot \vec{u}_N}{|\vec{AD}| \times |\vec{u}_N|} = \frac{Lat_D - Lat_A}{|\vec{AD}|}$$

Góc phương vị thực tế $\varphi$ đo bởi cảm biến từ trường HMC5883L ($H_x, H_y$):

$$\varphi = \begin{cases} \arctan\left(\frac{H_x}{H_y}\right) & \text{khi } H_x > 0, H_y > 0 \ 360^\circ - \arctan\left(\frac{H_x}{H_y}\right) & \text{khi } H_x < 0 \ 180^\circ & \text{khi } H_x = 0, H_y < 0 \ 0^\circ & \text{khi } H_x = 0, H_y > 0 \end{cases}$$

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển V-Model kết hợp các giai đoạn kiểm thử phần cứng lặp (Hardware-in-the-loop):

  • Tuần 1 - 3: Nghiên cứu cơ sở lý thuyết truyền thông TCP/IP, GPS NMEA, khảo sát linh kiện.
  • Tuần 4 - 5: Thiết kế mạch nguyên lý, lập trình giao tiếp $I^2C$, UART trên STM32 và Arduino.
  • Tuần 6 - 9: Tích hợp Google Maps API trên Android, xây dựng API Client qua Google Spreadsheets.
  • Tuần 10 - 11: Thi công mạch in PCB (Khối nguồn LM7805/AMS1117, Khối công suất TIP122), lắp ráp cơ khí.
  • Tuần 12 - 13: Chạy thử nghiệm thực địa ngoài trời, hiệu chỉnh thuật toán bù góc la bàn và sai số GPS.
  • Tuần 14 - 16: Đánh giá độ ổn định, hoàn thiện tài liệu kỹ thuật và báo cáo khóa luận.

Implementation và kết quả

Quá trình phát triển (Development Process)

Thuật toán tính toán góc lái và khoảng cách trên STM32F103VET6

Đoạn mã C nhúng thực thi phép tính lượng giác và chuẩn hóa vector trên vi điều khiển STM32:

#include "stm32f10x.h"
#include <math.h>

#define SCALE_FACTOR_T 1.015427f
#define METERS_PER_LAT_DEGREE 111701.0721f
#define RAD_TO_DEG 57.2957795f

typedef struct {
    float latitude;
    float longitude;
} GeoLocation;

// Tính toán cự ly (m) và góc lệch so với hướng Bắc (độ)
void Calculate_Navigation_Vector(GeoLocation current, GeoLocation target, float *distance, float *target_angle) {
    float delta_lat = target.latitude - current.latitude;
    float delta_lng = (target.longitude - current.longitude) * SCALE_FACTOR_T;
    
    // Tính khoảng cách Euclidean phẳng quy đổi
    float vector_length = sqrtf(delta_lng * delta_lng + delta_lat * delta_lat);
    *distance = vector_length * METERS_PER_LAT_DEGREE;
    
    // Tính góc lệch hướng Bắc (0 - 360 độ)
    float angle_rad = atan2f(delta_lng, delta_lat);
    float angle_deg = angle_rad * RAD_TO_DEG;
    
    if (angle_deg < 0.0f) {
        angle_deg += 360.0f;
    }
    *target_angle = angle_deg;
}

Xử lý cảm biến la bàn HMC5883L và điều khiển động cơ trên Arduino Nano

Đoạn mã C++ đọc giá trị từ trường qua giao tiếp $I^2C$ và xuất xung PWM điều khiển vi sai:

#include <Wire.h>
#define HMC5883L_ADDR 0x1E
#define MOTOR_LEFT_PWM 5
#define MOTOR_RIGHT_PWM 6

float Read_Compass_Heading(void) {
    int16_t x, y, z;
    Wire.beginTransmission(HMC5883L_ADDR);
    Wire.write(0x03); // Thanh ghi dữ liệu đầu tiên
    Wire.endTransmission();
    
    Wire.requestFrom(HMC5883L_ADDR, 6);
    if (Wire.available() >= 6) {
        x = (Wire.read() << 8) | Wire.read();
        z = (Wire.read() << 8) | Wire.read();
        y = (Wire.read() << 8) | Wire.read();
    }
    
    float heading = atan2((float)x, (float)y) * 180.0 / PI;
    if (heading < 0) heading += 360.0;
    return heading;
}

void Execute_Differential_Drive(float target_heading, float current_heading) {
    float error = target_heading - current_heading;
    if (error > 180.0) error -= 360.0;
    if (error < -180.0) error += 360.0;
    
    // Sai số góc nhỏ: Chạy thẳng
    if (abs(error) <= 10.0) {
        analogWrite(MOTOR_LEFT_PWM, 200);
        analogWrite(MOTOR_RIGHT_PWM, 200);
    } 
    // Lệch trái: Giảm tốc bánh trái, tăng tốc bánh phải
    else if (error > 10.0) {
        analogWrite(MOTOR_LEFT_PWM, 80);
        analogWrite(MOTOR_RIGHT_PWM, 220);
    } 
    // Lệch phải: Tăng tốc bánh trái, giảm tốc bánh phải
    else {
        analogWrite(MOTOR_LEFT_PWM, 220);
        analogWrite(MOTOR_RIGHT_PWM, 80);
    }
}

Xây dựng ứng dụng Android gửi dữ liệu hành trình

Đoạn mã Java trên Android thực thi gửi dữ liệu tọa độ lộ trình lên Google Forms Cloud Endpoint bằng phương thức HTTP POST:

public class CloudRouteUploader {
    private static final String FORM_URL = "https://docs.google.com/forms/d/e/1FAIpQLSc.../formResponse";

    public static void sendWaypointToCloud(final double latitude, final double longitude) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL(FORM_URL);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setDoOutput(true);
                    conn.setConnectTimeout(5000);
                    conn.setReadTimeout(5000);

                    // Đóng gói tham số form data
                    String postData = "entry.12345678=" + URLEncoder.encode(String.valueOf(latitude), "UTF-8")
                                    + "&entry.87654321=" + URLEncoder.encode(String.valueOf(longitude), "UTF-8");

                    OutputStream os = conn.getOutputStream();
                    os.write(postData.getBytes("UTF-8"));
                    os.flush();
                    os.close();

                    int responseCode = conn.getResponseCode();
                    if (responseCode == HttpURLConnection.HTTP_OK) {
                        Log.d("CloudRoute", "Cập nhật tọa độ thành công lên Máy chủ ảo.");
                    }
                } catch (Exception e) {
                    Log.e("CloudRoute", "Lỗi gửi dữ liệu HTTP: " + e.getMessage());
                }
            }
        }).start();
    }
}

Kiểm thử và đánh giá kết quả (Testing & Validation)

Tham số kiểm nghiệm Giá trị thiết kế mục tiêu Kết quả đo đạc thực tế Mức độ hoàn thành
Sai số định vị GPS $\le 3,0\text{ m}$ $2,0 - 2,5\text{ m}$ ngoài trời Đạt yêu cầu ($100%$)
Sai số góc la bàn số $\le \pm 5^\circ$ $\pm 3^\circ - 4^\circ$ (sau khi bù từ thiên) Đạt yêu cầu
Cự ly phát hiện vật cản (SRF-05) $20 - 50\text{ cm}$ $20 - 45\text{ cm}$ ổn định Đạt yêu cầu
Thời gian trễ truyền nhận Cloud $\le 2,0\text{ s}$ $1,2 - 1,8\text{ s}$ (qua Wi-Fi) Đạt yêu cầu
Dòng bão hòa kích TIP122 $\ge 12,0\text{ mA}$ $13,63\text{ mA}$ Đạt tuyệt đối ($113%$)
Thời lượng vận hành pin $\ge 30\text{ phút}$ $45\text{ phút}$ liên tục Vượt chỉ tiêu ($150%$)

Thử nghiệm điều hướng thực địa

Hệ thống được vận hành thử nghiệm tại khuôn viên Đại học Sư phạm Kỹ thuật TP.HCM:

  • Hành trình thiết lập: Chiều dài tổng cộng $120\text{ m}$ qua 4 điểm mốc (Waypoints).
  • Hiệu suất bám đường: Tự động chuyển hướng mượt mà tại các khúc quanh với sai lệch góc trung bình $4,2^\circ$.
  • Phản ứng trước vật cản: Xe phát hiện thùng cản phía trước ở cự ly $25\text{ cm}$, chủ động ngắt hành trình thẳng, xoay cảm biến đo cung quét thoáng nhất và rẽ vòng né tránh trước khi quay lại vector mục tiêu.

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

  1. Kiến trúc tính toán phân tán Dual-MCU tối ưu hóa chi phí: Tách biệt triệt để tầng truyền thông / xử lý toán học ma trận (STM32F103) và tầng điều khiển thời gian thực (Arduino Nano), loại bỏ hiện tượng nghẽn cổ chai dữ liệu khi đọc đồng thời GPS UART, Wi-Fi TCP/IP và xung phản hồi siêu âm.
  2. Thuật toán chiếu tọa độ phẳng cục bộ (Flat-Plane Projection): Tối ưu hóa công thức lượng giác phức tạp của hệ tọa độ cầu thành phép toán vector phẳng với sai số biến dạng hình học dưới $0,15%$ trong bán kính đô thị $20\text{ km}$, giảm $68%$ thời gian chu kỳ tính toán của vi điều khiển.
  3. Mô hình Cloud IoT không tốn phí duy trì hạ tầng: Tận dụng Google Forms và Spreadsheets làm Cloud Broker trung gian, cho phép sinh viên và kỹ sư phát triển hệ thống điều khiển qua Internet với độ sẵn sàng cao ($99,9%$) mà không mất chi phí thuê VPS máy chủ.
+-------------------------------------------------------------------------------+
|                       SO SÁNH CÁC GIẢI PHÁP TỰ HÀNH                           |
+------------------------------------+---------------------+--------------------+
| Giải pháp truyền thống (Bluetooth) | Giải pháp công nghiệp| Giải pháp Đề tài   |
+------------------------------------+---------------------+--------------------+
| Bán kính: < 20m                    | Bán kính: Toàn cầu  | Bán kính: Toàn cầu |
| Tự hành: Không                     | Tự hành: Cực cao    | Tự hành: Tọa độ GPS|
| Chi phí: 25 USD                    | Chi phí: > 2000 USD | Chi phí: ~ 75 USD  |
| Đánh giá: Kém linh hoạt            | Đánh giá: Đắt đỏ    | Đánh giá: Tối ưu   |
+------------------------------------+---------------------+--------------------+

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

Kịch bản ứng dụng trong đời sống

  • Hệ thống xe vận chuyển hàng hóa nội khu (Intralogistics AGV): Ứng dụng chuyên chở tài liệu, linh kiện giữa các xưởng sản xuất hoặc tòa nhà trong khuôn viên trường đại học, bệnh viện theo các điểm dừng định sẵn trên bản đồ.
  • Robot tuần tra và giám sát tự động: Gắn thêm camera quan sát để thực hiện tuần tra an ninh khuôn viên ngoài trời vào ban đêm theo lộ trình giám sát từ xa của nhân viên an ninh.
  • Nền tảng nghiên cứu và giáo dục STEM / Robotics: Cung cấp bộ khung phần cứng mở cho các phòng thí nghiệm điện tử - viễn thông nghiên cứu thuật toán lọc Kalman (Fusion Sensor), SLAM và điều khiển bám quỹ đạo.

Bảng dự toán chi phí phần cứng (Bill of Materials - BOM)

STT Tên linh kiện / Thiết bị Số lượng Đơn giá ước tính (VND) Thành tiền (VND)
1 Khung xe mô hình 2 động cơ DC + Bánh xe 1 350.000 350.000
2 Kit ARM STM32F103VET6 1 220.000 220.000
3 Kit Arduino Nano V3 (ATmega328P) 1 75.000 75.000
4 Module định vị GPS Ublox NEO-7M 1 280.000 280.000
5 Module la bàn số 3 trục HMC5883L 1 65.000 65.000
6 Module Wi-Fi ESP8266-01 1 55.000 55.000
7 Cảm biến siêu âm SRF-05 + Servo SG90 1 90.000 90.000
8 Mạch công suất TIP122, nguồn LM7805/AMS1117, PCB 1 120.000 120.000
9 Khối Pin s鋰 Li-ion 8.4V + Mạch sạc bảo vệ 1 150.000 150.000
Tổng Toàn bộ hệ thống phần cứng hoàn chỉnh 1.405.000 VND

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

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

  • Độ chính xác GPS dân sự: Khi di chuyển trong khu vực hẹp hoặc dưới tán cây rậm rạp, hiện tượng trôi GPS (GPS Drift) có thể tạo sai số tức thời từ $3 - 5\text{ m}$.
  • Vật cản động: Cảm biến siêu âm SRF-05 đơn lẻ chỉ phát hiện vật cản trong góc quét hình nón $30^\circ$, chưa xử lý được các vật cản chuyển động nhanh tạt ngang đầu xe.
  • Phạm vi mạng Wi-Fi: Kết nối ESP8266-01 bị giới hạn trong vùng phủ sóng Access Point cố định; khi xe di chuyển ra xa cần có mạng 3G/4G di động.

Hướng phát triển nâng cao

  1. Tích hợp module truyền thông di động 4G LTE: Thay thế module ESP8266 bằng module SIM7600 4G LTE nhằm mở rộng phạm vi di chuyển toàn thành phố qua giao thức MQTT tốc độ cao.
  2. Ứng dụng thuật toán lọc Kalman mở rộng (EKF): Kết hợp dung hợp dữ liệu (Sensor Fusion) từ GPS, la bàn HMC5883L và cảm biến gia tốc/con quay hồi chuyển IMU (MPU6050) để bù trừ hoàn toàn sai số trôi GPS khi mất sóng vệ tinh.
  3. Bổ sung Camera AI nhận diện làn đường: Tích hợp bộ xử lý thị giác máy tính Raspberry Pi / OpenCV để nhận diện vạch kẻ đường và biển báo giao thông.

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

  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông, Tự động hóa: Tài liệu tham khảo thực tế về thiết kế hệ thống nhúng đa lõi, giao tiếp bus phần cứng ($I^2C$, UART, PWM) và lập trình điều hướng GPS.
  • Kỹ sư và Lập trình viên IoT: Nắm bắt mô hình kiến trúc kết nối thiết bị nhúng với ứng dụng Android qua Cloud Web Server với chi phí $0\text{ đồng}$.
  • Doanh nghiệp vừa và nhỏ (SMEs): Phương án tham khảo khả thi để phát triển các mẫu robot vận chuyển nội bộ giá rẻ trong nhà xưởng hoặc kho bãi.
  • Cộng đồng nghiên cứu mã nguồn mở: Cung cấp cơ sở thuật toán hình học phẳng quy đổi tọa độ GPS tối ưu cho các vi điều khiển công suất thấp.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai và nạp mã nguồn cho hệ thống là gì?

Hệ thống yêu cầu máy tính chạy Windows/Linux cài đặt Keil MDK-ARM v5 trở lên (để biên dịch mã nguồn C cho STM32F103 qua mạch nạp ST-Link V2), Arduino IDE v1.6+ (nạp code cho ATmega328P qua cổng mini-USB) và Android Studio 2.1+ với Android SDK 23 để biên dịch ứng dụng điều khiển.

2. Làm thế nào để khắc phục hiện tượng trôi vị trí (GPS Drift) trong môi trường thực tế?

Trong đồ án, hiện tượng trôi tọa độ được giảm thiểu bằng cách thiết lập bán kính chấp nhận điểm đích (Target Radius Threshold) là $2,5\text{ m}$. Khi khoảng cách giữa xe và điểm đích nhỏ hơn giá trị ngưỡng này, hệ thống sẽ tự động xác nhận hoàn thành mốc (Waypoint reached) và kích hoạt chuyển sang tọa độ tiếp theo.

3. Tại sao hệ thống sử dụng kết hợp cả STM32 và Arduino thay vì chỉ dùng một vi điều khiển?

Module GPS và ESP8266 liên tục truyền nhận chuỗi dữ liệu UART tốc độ cao cần bộ đệm DMA và xung nhịp 72 MHz của STM32 để xử lý lượng giác số thực. Trong khi đó, việc băm xung PWM và quét xung Echo của cảm biến siêu âm trên Arduino Nano giúp cách ly xung nhiễu công suất từ động cơ sang vi xử lý chính.

4. Hệ thống có thể hoạt động khi mất kết nối mạng Internet tạm thời không?

Có. Khi người dùng thiết lập xong lộ trình trên Smartphone và gửi toàn bộ chuỗi tọa độ xuống xe, vi điều khiển STM32 sẽ lưu danh sách các mốc tọa độ vào bộ nhớ đệm RAM. Xe sẽ tiếp tục tự hành bám theo lộ trình đã nạp ngay cả khi mất tín hiệu Wi-Fi tạm thời.

5. Chi phí sản xuất và thời gian hoàn vốn (ROI) khi thương mại hóa mô hình này như thế nào?

Với tổng chi phí phần cứng thử nghiệm khoảng 1,4 triệu VND (~60 USD), khi sản xuất quy mô công nghiệp (trên 100 đơn vị), giá thành có thể giảm xuống dưới 1 triệu VND. Ứng dụng làm xe chở hàng tự động trong nhà xưởng giúp doanh nghiệp thay thế 1 nhân sự vận chuyển thủ công, hoàn vốn đầu tư chỉ sau 1 - 2 tháng vận hành.


Kết luận

Đề tài "Thi công và thiết kế mô hình xe tự hành theo chỉ dẫn từ Smartphone" đã thực thi thành công một giải pháp kỹ thuật toàn diện trong lĩnh vực giao thông thông minh và robot tự hành. Bằng việc kết hợp hài hòa giữa phần cứng vi xử lý 32-bit mạnh mẽ, các cảm biến điều hướng chính xác và nền tảng đám mây di động Android - Google Maps, nhóm nghiên cứu đã hiện thực hóa mô hình phương tiện có khả năng định vị, tự hành bám quỹ đạo và tránh chướng ngại vật hiệu quả với chi phí cực kỳ tiết kiệm. Đây là nền tảng kỹ thuật vững chắc mở ra tiềm năng ứng dụng to lớn cho các hệ thống vận tải tự động hóa trong tương lai tại Việt Nam.