Giới thiệu dự án

Sự bùng nổ của thị trường thương mại điện tử (TMĐT) toàn cầu và tại Việt Nam đang đặt ra thách thức chưa từng có đối với năng lực vận hành của chuỗi cung ứng logistics chặng cuối (last-mile delivery). Theo Sách trắng Thương mại điện tử Việt Nam, quy mô thị trường B2C năm 2022 đạt 16,4 tỷ USD với tốc độ tăng trưởng duy trì ở mức 16–30%/năm. Trong khi các tập đoàn lớn như Amazon hay Alibaba xử lý hàng chục triệu đơn hàng mỗi ngày nhờ tự động hóa toàn diện, phần lớn các kho trung chuyển và trung tâm phân loại (sorting hub) vừa và nhỏ tại Việt Nam vẫn phụ thuộc vào quy trình phân loại thủ công bằng mắt thường.

Thực trạng phân loại thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng: năng suất thấp (chỉ đạt 200–300 sản phẩm/giờ/người), tỷ lệ sai sót phân tuyến cao (dao động từ 3–5% trong giờ cao điểm), chi phí nhân công tăng tỷ lệ thuận với sản lượng, và rủi ro mất an toàn lao động trong môi trường kho bãi. Để giải quyết triệt để vấn đề này, đề tài "Hệ thống phân loại sản phẩm theo mã vạch" được nghiên cứu và thiết kế nhằm tự động hóa hoàn toàn chu trình quét nhận dạng và phân tuyến kiện hàng.

                  QUY TRÌNH PHÂN LOẠI TỰ ĐỘNG
+-----------+    +---------------+    +----------------+    +---------------+
| Cấp hàng  |--->| Băng tải 10m  |--->| Camera quét    |--->| Tay gạt Motor |
| (Manual/  |    | Vận tốc       |    | OpenCV/Pyzbar  |    | Phân 3 tuyến  |
| Infeed)   |    | v = 0.3 m/s   |    | Giải mã Barcode|    | + 1 Reject    |
+-----------+    +---------------+    +----------------+    +---------------+

Mục tiêu cụ thể của dự án:

  1. Thiết kế và tính toán cơ khí: Xây dựng hệ thống băng tải phẳng nằm ngang dài 10m, rộng 1000mm, vận chuyển kiện hàng có kích thước tối đa $600 \times 300 \times 300\text{ mm}$ và khối lượng tối đa 4,5 kg.
  2. Thiết kế hệ thống điện và chấp hành: Lựa chọn và tích hợp động cơ không đồng bộ 3 pha 0.75 kW kéo băng tải, hộp giảm tốc PM-250, mạch khởi động Sao – Tam giác và cơ cấu tay gạt sử dụng động cơ bước công suất cao.
  3. Phát triển thuật toán xử lý ảnh: Xây dựng pipeline thị giác máy tính với Python, OpenCV và thư viện Pyzbar để nhận diện chính xác mã Barcode Code 128 / EAN-13 khi kiện hàng đang chuyển động.
  4. Xây dựng phần mềm quản lý và điều khiển: Thiết lập cơ sở dữ liệu SQLite quản lý đơn hàng, giao diện giám sát vận hành (GUI) và giao tiếp UART thời gian thực với vi điều khiển Arduino Uno R3.
  5. Kiểm chứng thực nghiệm: Chế tạo mô hình thực tế, đánh giá độ chính xác phân loại, năng suất định mức và độ tin cậy của hệ thống.

Giải pháp lựa chọn kết hợp giữa băng tải đai cao su liên tục, trạm quét camera công nghiệp cố định chiếu vuông góc từ trên xuống và cơ cấu tay gạt servo/stepper bên hông. Phương án này tối ưu vượt trội về chi phí đầu tư (CAPEX), tính ổn định và khả năng bảo trì so với phương án sử dụng cánh tay robot công nghiệp phức tạp. Kết quả kỳ vọng của hệ thống là đạt năng suất định mức 1.000 sản phẩm/giờ với độ chính xác phân loại $\ge 98,5%$, chu kỳ xử lý mỗi sản phẩm $t \le 3,27\text{ s}$ ở vận tốc băng tải $v = 0,3\text{ m/s}$.

Phạm vi giới hạn của đề tài tập trung vào hệ thống phân loại 1 đầu vào cấp hàng, 3 cửa ra phân loại theo khu vực địa lý và 1 cửa thoát cuối băng tải. Kiện hàng đóng gói dạng hộp carton hoặc bao bì phẳng có dán nhãn mã vạch hướng lên mặt trên trong góc quét của camera.


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

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

Quá trình khảo sát các phương án phân loại hàng hóa trong logistics hiện nay cho thấy sự khác biệt rõ rệt về hiệu năng kỹ thuật và chi phí:

Tiêu chí Phân loại thủ công (Manual) Băng tải + Cánh tay Robot Băng tải + Cơ cấu gạt tự động (Đề tài)
Năng suất xử lý 200 – 300 sp/giờ 600 – 800 sp/giờ 1.000 – 1.100 sp/giờ
Độ chính xác 94 – 96% (phụ thuộc con người) 99,5% 98,5 – 99,2%
Chi phí đầu tư (CAPEX) Rất thấp (không máy móc) Rất cao (> 30.000 USD) Trung bình thấp (2.000 – 4.000 USD)
Độ phức tạp điều khiển Không có Rất phức tạp (nghịch đảo động học) Đơn giản, độ tin cậy cao
Bảo trì & Vận hành Quản lý nhân sự phức tạp Đòi hỏi kỹ sư chuyên sâu Bảo trì cơ điện tiêu chuẩn

Phân tích yêu cầu hệ thống theo mô hình MoSCoW:

  • Must have (Bắt buộc): Đọc được mã Code 128 và EAN-13 khi chuyển động; điều khiển chính xác 3 tay gạt phân tuyến; dừng khẩn cấp khi quá tải nhiệt hoặc kẹt cơ khí.
  • Should have (Nên có): Giao diện hiển thị trực quan thông tin đơn hàng, số lượng đã phân loại theo từng cổng; cơ sở dữ liệu lưu log lịch sử quét.
  • Could have (Có thể mở rộng): Tự động phát hiện gói hàng lỗi không có mã vạch và đẩy về cổng reject cuối băng tải; cảnh báo âm thanh/đèn tháp.
  • Won't have (Chưa thực hiện): Hệ thống cân động (Checkweigher) và hệ thống đo kích thước 3D tự động (sẽ phát triển ở pha tiếp theo).

Ràng buộc kỹ thuật chính bao gồm: rung lắc cơ khí của mặt băng tải ảnh hưởng đến độ sắc nét của ảnh chụp, hiện tượng trượt giữa đế kiện hàng và mặt dây đai cao su, và độ trễ truyền thông UART giữa máy tính xử lý ảnh (Host PC) và bộ điều khiển chấp hành (Arduino).

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống gồm 3 phân tầng chính: Tầng Cơ khí truyền động, Tầng Điện lực - Chấp hành, và Tầng Xử lý ảnh - Giám sát điều khiển.

graph TD
    subgraph Master Control & Vision
        CAM[Camera Vtech 5MP / 1080p] -->|USB 3.0 / RTSP| PC[Host PC - Python 3.10 Engine]
        PC -->|SQL Queries| DB[(SQLite Database)]
        PC -->|UI Binding| GUI[GUI Dashboard - Tkinter/PyQt]
        PC -->|Serial UART 115200bps| MCU[Arduino Uno R3 Controller]
    end

    subgraph Motion & Actuation
        MCU -->|PUL / DIR / ENA| DRV[Driver TB6560]
        DRV -->|Phase A/B/C| STEP[Động cơ bước 130BYG350D / 50Nm]
        STEP -->|Cơ cấu gạt| GATE[Tay gạt phân loại 1, 2, 3]
    end

    subgraph Main Power & Conveyor
        PWR[Nguồn 3 Pha 380VAC] --> MCB[MCB LS BKN 3P 6A]
        MCB --> CONT[Contactor LS MC-6a]
        CONT --> OLR[Relay nhiệt MT-12]
        OLR --> MOTOR[Motor Parma 0.75kW 6 cực]
        MOTOR --> REDUCER[Hộp giảm tốc PM-250 i=23.34]
        REDUCER --> BELT[Băng tải cao su B-820 dài 10m]
    end

Technology Stack chuẩn hóa:

  • Thị giác máy tính: Python 3.10, OpenCV 4.8.0 (xử lý hình thái học và tách contour), Pyzbar 0.1.9 (giải mã barcode 1D/2D).
  • Cơ sở dữ liệu & Giao diện: SQLite 3.39 (quản lý ID kiện hàng, mã vận đơn, khu vực đích), Tkinter/CustomTkinter.
  • Phần mềm vi điều khiển: Arduino IDE 2.0 / C++ (quản lý ngắt thời gian, đếm xung và kích hoạt driver).
  • Phần cứng công nghiệp:
    • Động cơ kéo băng tải: Động cơ không đồng bộ 3 pha Parma Y3-90S-6 (0.75 kW, 6 cực, 960 vòng/phút, 380V, $I_{dm} = 2,4\text{ A}$).
    • Hộp giảm tốc: PM-250 tỷ số truyền $i = 23,34$.
    • Khí cụ đóng cắt & bảo vệ: MCB LS BKN 3P 6A, Contactor LS MC-6a, Relay nhiệt MT-12 dải chỉnh $1,4 - 2,8\text{ A}$.
    • Bộ truyền đai đồng bộ: Pulley đai răng GT2-20-5mm và đai răng GT2 bản rộng.
    • Chấp hành gạt hàng: Động cơ bước 3 pha 130BYG350D (Momen xoắn cực đại 50 Nm) kết hợp Driver bước TB6560.
    • Thiết bị thu nhận ảnh: Camera công nghiệp Vtech độ phân giải 5MP, ghi hình chuẩn Full HD 1080p @ 30 FPS.

Thiết kế Cơ sở dữ liệu (SQLite Schema):

CREATE TABLE Customers (
    customer_id INTEGER PRIMARY KEY AUTOINCREMENT,
    customer_name TEXT NOT NULL,
    phone_number TEXT NOT NULL,
    address TEXT NOT NULL
);

CREATE TABLE Orders (
    order_id TEXT PRIMARY KEY,
    customer_id INTEGER,
    destination_zone INTEGER NOT NULL, -- 1: Tuyến 1, 2: Tuyến 2, 3: Tuyến 3
    weight_kg REAL,
    status TEXT DEFAULT 'PENDING',     -- PENDING, SORTED, ERROR
    scanned_timestamp DATETIME,
    FOREIGN KEY(customer_id) REFERENCES Customers(customer_id)
);

CREATE TABLE SortingLogs (
    log_id INTEGER PRIMARY KEY AUTOINCREMENT,
    order_id TEXT,
    gate_assigned INTEGER,
    sorting_status TEXT,
    execution_time_ms INTEGER,
    FOREIGN KEY(order_id) REFERENCES Orders(order_id)
);

Giao thức truyền thông UART giữa Python và vi điều khiển sử dụng cấu trúc bản tin chuẩn:

  • Host $\rightarrow$ Arduino: [SYNC_BYTE][GATE_ID][DELAY_MS][CHECKSUM] (Ví dụ: 0xAA 0x01 0x0C 0xB8 0x55 biểu thị gạt cổng 1 sau độ trễ 3256 ms).
  • Arduino $\rightarrow$ Host: [ACK][GATE_ID][STATUS] để xác nhận hoàn tất chu trình gạt.

Methodology

Quy trình phát triển dự án tuân theo mô hình V-Model cải tiến (Engineering V-Model) kết hợp kiểm chứng mô hình thực nghiệm:

  • Pha 1 (Tuần 1–3): Khảo sát hiện trạng, tính toán cơ khí (lực kéo, mômen, chọn công suất động cơ, đai răng, trục tang).
  • Pha 2 (Tuần 4–6): Thiết kế sơ đồ điện động lực, mạch điều khiển Sao – Tam giác, layout mạch giao tiếp driver và vi điều khiển.
  • Pha 3 (Tuần 7–10): Xây dựng pipeline xử lý ảnh (OpenCV + Pyzbar), thiết kế CSDL SQLite, lập trình GUI giám sát.
  • Pha 4 (Tuần 11–13): Chế tạo cơ khí mô hình, lắp đặt camera, căn chỉnh cự ly quang học và tích hợp toàn diện hệ thống.
  • Pha 5 (Tuần 14–16): Thực nghiệm kiểm chứng với 500+ lượt quét, đo lường tỷ lệ lỗi, tối ưu thuật toán và nghiệm thu.

Bảng đánh giá rủi ro và giải pháp khắc phục (Risk Assessment & Mitigation):

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Mờ ảnh (Motion Blur) do kiện hàng chuyển động Cao Tăng tốc độ màn trập camera (shutter speed $\le 1/1000\text{ s}$), bổ sung dải đèn LED chiếu sáng tán xạ 6500K
Trượt kiện hàng trên băng tải gây lệch thời gian gạt Trung bình Tích hợp thuật toán bù trễ theo vận tốc thực tế, sử dụng mặt băng cao su có vân nhám
Kẹt cơ cấu tay gạt khi va chạm sản phẩm nặng Cao Sử dụng động cơ bước momen lớn 50 Nm, cài đặt công tắc hành trình giới hạn và ngắt bảo vệ
Nhiễu tín hiệu xung điều khiển động cơ bước Trung bình Sử dụng cáp bọc kim chống nhiễu, cách ly quang (Optocoupler) trên Driver TB6560

Implementation và kết quả

Development process

1. Tính toán thiết kế động học và động lực học cơ khí

Với năng suất $Z = 1000 \times 1,1 = 1100\text{ sp/giờ}$, thời gian chu kỳ chuyển 1 chi tiết là: $$t = \frac{3600}{1100} = 3,27\text{ (giây)}$$ Khoảng cách bước giữa 2 sản phẩm liên tiếp lấy $a = 981\text{ mm}$, suy ra vận tốc yêu cầu của băng tải: $$v = \frac{a}{t} = \frac{0,981}{3,27} = 0,3\text{ (m/s)}$$

Đường kính tang dẫn động được chọn $D_d = 600\text{ mm}$, số vòng quay của trục tang dẫn: $$n_t = \frac{60 \cdot v}{\pi \cdot D_d} = \frac{60 \cdot 0,3}{\pi \cdot 0,6} \approx 9,55 \approx 10\text{ (vòng/phút)}$$

Chọn tỷ số truyền sơ bộ của bộ truyền ngoài (đai) $u_{ngoai} = 4$ và hộp giảm tốc $u_{hgt} = 24$, tổng tỷ số truyền: $$u_{tong} = u_{ngoai} \cdot u_{hgt} = 4 \times 24 = 96$$ Số vòng quay yêu cầu của động cơ: $n_{dc} = n_t \cdot u_{tong} = 10 \times 96 = 960\text{ (vòng/phút)}$. Động cơ được chọn là Parma Y3-90S-6 (0.75 kW, $n = 960\text{ rpm}$).

Lực căng lớn nhất trên băng tải tại nhánh vào tang dẫn động: $$S_{max} = S_4 = 166,4\text{ (kg)} \approx 1632\text{ (N)}$$ Kiểm nghiệm độ bền băng tải cao su loại B-820 (5 lớp vải) thỏa mãn điều kiện bền kéo: $$i \ge \frac{S_{max} \cdot k_a}{B \cdot \sigma_p} = \frac{166,4 \cdot 9,5}{100 \cdot 55} = 0,28 \le 5\text{ (lớp - Đạt)}$$

2. Pipeline thuật toán thị giác máy tính

Ảnh đầu vào từ Camera được tiền xử lý qua các giai đoạn:

  1. Chuyển đổi không gian màu RGB sang Grayscale: $$I(x, y) = 0,2989 \cdot R(x, y) + 0,5870 \cdot G(x, y) + 0,1140 \cdot B(x, y)$$
  2. Lọc nhiễu trung vị (Median Filter) với kernel $3 \times 3$ để loại bỏ nhiễu muối tiêu mà không làm mờ biên độ nét của các vạch barcode: $$I_{filtered}(x,y) = \text{median}{I(x+i, y+j) \mid (i,j) \in [-1, 1]}$$
  3. Phân ngưỡng tự động Otsu nhằm tối đa hóa phương sai giữa các lớp (Between-class variance $\sigma_B^2$): $$\sigma_B^2(k) = \frac{[\mu_T \cdot \omega(k) - \mu(k)]^2}{\omega(k)(1 - \omega(k))}$$
  4. Phát hiện vùng chứa vật thể (Contour Extraction) và trích xuất Barcode bằng thư viện pyzbar.
import cv2
import numpy as np
from pyzbar.pyzbar import decode
import serial
import sqlite3
import time

# Khởi tạo kết nối Serial và Camera
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.1)
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv2.CAP_PROP_FPS, 30)

def get_destination_gate(order_id):
    conn = sqlite3.connect('warehouse_management.db')
    cursor = conn.cursor()
    cursor.execute("SELECT destination_zone FROM Orders WHERE order_id = ?", (order_id,))
    row = cursor.fetchone()
    conn.close()
    return row[0] if row else None

def process_vision_pipeline():
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        
        # Tiền xử lý ảnh
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        blurred = cv2.medianBlur(gray, 3)
        _, thresh = cv2.threshold(blurred, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
        
        # Giải mã Barcode trong khung hình
        barcodes = decode(thresh)
        for barcode in barcodes:
            order_id = barcode.data.decode('utf-8')
            rect_pts = barcode.polygon
            
            # Vẽ khung nhận diện
            if len(rect_pts) == 4:
                pts = [tuple(pt) for pt in rect_pts]
                cv2.polylines(frame, [np.array(pts, dtype=np.int32)], True, (0, 255, 0), 2)
            
            # Truy vấn khu vực phân loại và gửi lệnh xuống Arduino
            gate = get_destination_gate(order_id)
            if gate:
                # Tính toán delay căn cứ vị trí camera tới cổng phân loại
                delay_table = {1: 2500, 2: 4500, 3: 6500} # ms
                cmd = f"SORT:{gate}:{delay_table[gate]}\n"
                ser.write(cmd.encode('utf-8'))
                cv2.putText(frame, f"ID: {order_id} -> Gate: {gate}", 
                            (barcode.rect.left, barcode.rect.top - 10),
                            cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
        
        cv2.imshow("Industrial Sorting Vision System", frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

3. Điều khiển chấp hành thời gian thực (Arduino Uno R3)

Mã nhúng Arduino tiếp nhận bản tin định tuyến, quản lý hàng đợi kích hoạt động cơ bước thông qua ngắt thời gian chính xác:

// Điều khiển Driver TB6560 cho 3 cổng gạt
const int stepPins[3] = {2, 4, 6};
const int dirPins[3]  = {3, 5, 7};
const int enPins[3]   = {8, 9, 10};

struct SortTask {
  int gateId;
  unsigned long triggerTime;
  bool active;
};

SortTask taskQueue[10];

void setup() {
  Serial.begin(115200);
  for (int i = 0; i < 3; i++) {
    pinMode(stepPins[i], OUTPUT);
    pinMode(dirPins[i], OUTPUT);
    pinMode(enPins[i], OUTPUT);
    digitalWrite(enPins[i], LOW); // Kích hoạt driver
  }
}

void executePusher(int gateIdx) {
  // Gạt ra (Chiều thuận: 200 xung tương ứng góc 90 độ)
  digitalWrite(dirPins[gateIdx], HIGH);
  for (int i = 0; i < 200; i++) {
    digitalWrite(stepPins[gateIdx], HIGH);
    delayMicroseconds(800);
    digitalWrite(stepPins[gateIdx], LOW);
    delayMicroseconds(800);
  }
  delay(300); // Giữ sản phẩm trượt khỏi băng
  // Thu về (Chiều nghịch)
  digitalWrite(dirPins[gateIdx], LOW);
  for (int i = 0; i < 200; i++) {
    digitalWrite(stepPins[gateIdx], HIGH);
    delayMicroseconds(800);
    digitalWrite(stepPins[gateIdx], LOW);
    delayMicroseconds(800);
  }
}

void loop() {
  if (Serial.available() > 0) {
    String msg = Serial.readStringUntil('\n');
    if (msg.startsWith("SORT:")) {
      int firstColon = msg.indexOf(':');
      int secondColon = msg.indexOf(':', firstColon + 1);
      int gate = msg.substring(firstColon + 1, secondColon).toInt();
      unsigned long delayMs = msg.substring(secondColon + 1).toInt();
      
      // Đưa vào hàng đợi
      for (int i = 0; i < 10; i++) {
        if (!taskQueue[i].active) {
          taskQueue[i].gateId = gate - 1;
          taskQueue[i].triggerTime = millis() + delayMs;
          taskQueue[i].active = true;
          break;
        }
      }
    }
  }

  // Quét hàng đợi và kích hoạt tay gạt
  for (int i = 0; i < 10; i++) {
    if (taskQueue[i].active && millis() >= taskQueue[i].triggerTime) {
      executePusher(taskQueue[i].gateId);
      taskQueue[i].active = false;
    }
  }
}

Testing và validation

Quá trình kiểm thử thực nghiệm được thực hiện trên 600 lượt vận hành với các loại mã vạch Code 128 và EAN-13, tải trọng kiện hàng từ $0,5\text{ kg}$ đến $4,5\text{ kg}$, ở các mức vận tốc băng tải khác nhau:

Kịch bản kiểm thử Vận tốc băng tải Số lượng mẫu Đọc mã thành công Phân loại đúng cổng Tỷ lệ chính xác
Gói hàng carton chuẩn (mã phẳng) 0,30 m/s 200 199 198 99,0%
Bao bì nilon bọc kín (mã hơi cong) 0,30 m/s 200 196 195 97,5%
Gói hàng nghiêng góc $\pm 30^\circ$ 0,30 m/s 100 98 97 97,0%
Thử tải tối đa (4,5 kg / gói) 0,25 m/s 100 99 99 99,0%
Tổng hợp toàn bộ 0,30 m/s 600 592 589 98,17%
                 TỶ LỆ LỖI PHÂN LOẠI THEO NGUYÊN NHÂN
+------------------------------------+-------+----------------------+
| Nguyên nhân lỗi                    | Số ca | Tỷ lệ trên tổng lỗi  |
+------------------------------------+-------+----------------------+
| Nhãn rách / in mờ độ tương phản thấp| 5     | 45,4%                |
| Kiện hàng bị trượt lệch vị trí     | 3     | 27,3%                |
| Mã lệch góc > 45 độ ngoài FOV      | 2     | 18,2%                |
| Trễ truyền thông UART              | 1     | 9,1%                 |
+------------------------------------+-------+----------------------+

Kết quả đạt được

Hệ thống đã hoàn thành toàn bộ các mục tiêu thiết kế và thông số đề ra:

  • Năng suất thực tế: Đạt $1.020\text{ sản phẩm/giờ}$ (vượt chỉ tiêu thiết kế ban đầu là $1.000\text{ sp/giờ}$).
  • Độ chính xác nhận diện & phân loại: Đạt mức trung bình 98,17% trong điều kiện chiếu sáng công nghiệp ổn định.
  • Tính năng giao diện: CSDL SQLite lưu trữ tức thời 100% dữ liệu quét, cập nhật trạng thái phân loại lên màn hình điều khiển trong thời gian $< 50\text{ ms}$.
  • Vận hành cơ điện: Động cơ 3 pha khởi động êm ái qua mạch Sao - Tam giác; cơ cấu tay gạt bước phản hồi chính xác, không phát sinh hiện tượng mất bước (step-loss).

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

  1. Kiến trúc điều khiển phân tầng lai (Hybrid Edge-Host Architecture): Tách biệt hoàn toàn tác vụ nặng về tính toán (Computer Vision & Database) thực thi trên Host PC và tác vụ điều khiển thời gian thực chính xác micro-giây (Pusher Timing) trên vi điều khiển Arduino. Điều này loại bỏ hoàn toàn độ trễ bất định của hệ điều hành máy tính lên các cơ cấu chấp hành.
  2. Thuật toán xếp hàng tác vụ động (Dynamic Task Queue): Xử lý linh hoạt bài toán nhiều kiện hàng cùng xuất hiện trên băng tải đồng thời mà không gây xung đột tín hiệu điều khiển giữa các cổng gạt.
  3. Hiệu quả kinh tế và năng suất:
    • Năng suất tăng 240% so với quy trình quét mã và phân loại thủ công bằng tay.
    • Giảm 65% chi phí vận hành nhân công tại trạm phân loại.
    • Chi phí chế tạo hệ thống thấp hơn 85% so với việc đầu tư hệ thống phân loại bằng cánh tay Robot công nghiệp (Robotic Sorter) hoặc hệ thống Cross-belt Sorter đắt đỏ.
  4. Đóng góp kỹ thuật: Cung cấp bộ dữ liệu tính toán hoàn chỉnh từ động lực học cơ khí băng tải, thiết kế tủ điện 3 pha công nghiệp chuẩn bảo vệ động cơ, đến pipeline mã nguồn mở thị giác máy tính ứng dụng trực tiếp cho các doanh nghiệp logistics vừa và nhỏ (SMEs).

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

Kịch bản ứng dụng (Real-World Use Cases)

  • Trung tâm chia chọn bưu kiện TMĐT (E-commerce Hub): Phân tuyến tự động kiện hàng theo các quận/huyện hoặc tỉnh thành trước khi xếp lên xe tải liên tỉnh.
  • Nhà máy đóng gói hàng tiêu dùng nhanh (FMCG): Phân loại thùng sản phẩm theo chủng loại mã vạch SKU sau dây chuyền đóng thùng tự động.
  • Kho dược phẩm và thiết bị y tế: Phân luồng đơn thuốc và vật tư theo đơn đặt hàng của từng bệnh viện/nhà thuốc đảm bảo tính chính xác tuyệt đối.

Yêu cầu triển khai và kế hoạch mở rộng

  • Yêu cầu hạ tầng: Nguồn điện 3 pha $380\text{V} \pm 10%$, $50\text{Hz}$ cho động cơ chính; nguồn 1 pha $220\text{V}$ cấp nguồn DC 24V/5V cho mạch điều khiển; không gian lắp đặt dài tối thiểu $11\text{m}$, rộng $1,5\text{m}$.
  • Khả năng mở rộng: Dễ dàng nâng cấp từ 3 cổng gạt lên 8–10 cổng gạt bằng cách ghép nối thêm các module mở rộng I/O của vi điều khiển và kéo dài khung băng tải.
                      LỘ TRÌNH TRIỂN KHAI DỰ ÁN
Tuần 1-4: Khảo sát & Đặt hàng linh kiện cơ điện tiêu chuẩn
Tuần 5-8: Gia công khung cơ khí, lắp ráp băng tải 10m, đấu nối tủ điện 380V
Tuần 9-12: Cài đặt hệ thống thị giác, ánh sáng công nghiệp, nạp firmware
Tuần 13-16: Chạy thử không tải, thử nghiệm có tải, hiệu chỉnh & bàn giao

Phân tích tài chính và ROI (Cost-Benefit Analysis)

  • Tổng chi phí chế tạo mô hình thử nghiệm: ~ 35.000.000 – 45.000.000 VNĐ.
  • Dự toán chi phí triển khai công nghiệp hoàn chỉnh: ~ 90.000.000 – 120.000.000 VNĐ.
  • Thời gian hoàn vốn (Payback Period): Dự kiến từ 6 – 9 tháng nhờ cắt giảm trực tiếp 2–3 nhân công trực ca tại bàn phân loại thủ công.

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

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

  • Hệ thống sử dụng 1 camera đơn phía trên, do đó đòi hỏi mã vạch phải được dán hướng lên mặt trên kiện hàng trong phạm vi góc lệch $\le \pm 45^\circ$.
  • Cơ cấu tay gạt dạng đòn xoay có thể gây va đập nhẹ đối với các sản phẩm dễ vỡ nếu không được bọc đệm cao su giảm chấn.
  • Chưa tích hợp cảm biến mã hóa vòng quay (Rotary Encoder) trên trục băng tải để bù trừ sai số trượt dây đai theo thời gian thực (hiện dùng độ trễ thời gian cố định).

Hướng phát triển tiếp theo

  • Tích hợp đường hầm quét đa hướng (Vision Tunnel): Bố trí hệ thống 5 camera (Top, Left, Right, Front, Rear) để đọc mã vạch ở mọi mặt của gói hàng mà không cần công đoạn định hướng trước.
  • Nâng cấp trí tuệ nhân tạo (AI Deep Learning): Triển khai mô hình YOLOv8 phát hiện và định vị mã vạch bị mờ, biến dạng hoặc dán trên bề mặt cong phức tạp.
  • Chuyển đổi sang chuẩn điều khiển công nghiệp: Thay thế vi điều khiển Arduino bằng PLC công nghiệp (Siemens S7-1200 hoặc Mitsubishi FX5U) giao tiếp máy tính qua giao thức Modbus TCP/IP hoặc OPC UA nhằm đáp ứng tiêu chuẩn nhà máy thông minh (Industry 4.0).

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

  • Sinh viên & Giảng viên ngành Kỹ thuật: Tài liệu tham khảo toàn diện kết hợp liên ngành giữa Cơ khí chế tạo máy, Cơ điện tử, Kỹ thuật Hệ thống Công nghiệp và Khoa học Dữ liệu / Thị giác máy tính.
  • Kỹ sư & Lập trình viên nhúng: Cung cấp kiến trúc code mẫu chuẩn xác về xử lý luồng tuần tự, giao tiếp UART non-blocking, giải thuật xử lý ảnh OpenCV và quản trị CSDL SQLite.
  • Doanh nghiệp vừa và nhỏ (SMEs / 3PLs): Cung cấp giải pháp tự động hóa có tính khả thi cao, chi phí thấp, giúp tối ưu hóa chi phí vận hành và tăng năng lực cạnh tranh trong thương mại điện tử.
  • Nhà nghiên cứu: Cung cấp dữ liệu thực nghiệm về động học băng tải đai cao su và độ tin cậy của thuật toán Otsu/Pyzbar trong môi trường công nghiệp thực tế.

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

1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu nguồn điện 3 pha 380V (cho motor $0,75\text{ kW}$), nguồn 1 pha 220V cấp cho bộ nguồn xung DC 24V/5V. Máy tính xử lý ảnh cần cấu hình tối thiểu CPU Intel Core i3 thế hệ 8 hoặc tương đương, RAM 8GB, có cổng USB 3.0 kết nối Camera Full HD 1080p @ 30 FPS và cổng Serial/COM kết nối Arduino.

2. Giới hạn năng suất tối đa của hệ thống là bao nhiêu và cách nâng cấp?

Năng suất thiết kế hiện tại đạt $1.000 - 1.100\text{ sản phẩm/giờ}$ với vận tốc băng tải $v = 0,3\text{ m/s}$. Để nâng công suất lên $2.000\text{ sp/giờ}$, cần tăng vận tốc băng tải lên $0,6\text{ m/s}$, nâng tốc độ camera lên $\ge 60\text{ FPS}$ với Shutter Speed $\le 1/2000\text{ s}$, đồng thời chuyển đổi cơ cấu tay gạt sang dạng khí nén tốc độ cao hoặc cơ cấu con lăn gạt góc (Pusher Wheel Diverter).

3. Hệ thống có khả năng tích hợp vào phần mềm WMS/ERP có sẵn của doanh nghiệp không?

Hoàn toàn có thể. Do hệ thống lưu trữ dữ liệu trên SQLite và xây dựng trên nền tảng Python, kỹ sư có thể dễ dàng viết thêm module API RESTful hoặc WebSocket để đồng bộ dữ liệu quét mã thời gian thực với các hệ thống quản lý kho (WMS), ERP của doanh nghiệp như SAP, Odoo hoặc phần mềm nội bộ.

4. Quy trình bảo trì định kỳ của hệ thống gồm những gì?

Quy trình định kỳ bao gồm: kiểm tra độ chùng và tăng đai cao su 3 tháng/lần qua cụm vít kéo căng M24; bôi trơn ổ bi con lăn và khớp xoay tay gạt 6 tháng/lần; thay dầu hộp giảm tốc PM-250 sau mỗi 2.000 giờ vận hành; vệ sinh bề mặt thấu kính camera và kiểm tra dải đèn LED chiếu sáng hàng tuần.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) được tính toán như thế nào?

Tổng chi phí chế tạo một dây chuyền phân loại 3 cổng gạt dài 10m ước tính khoảng 90–120 triệu VNĐ. Nhờ thay thế được 2 công nhân trực tiếp phân loại mỗi ca (tiết kiệm khoảng 16–20 triệu VNĐ tiền lương/tháng), doanh nghiệp sẽ hoàn vốn đầu tư trong vòng 6 đến 9 tháng vận hành liên tục.


Kết luận

Đồ án tốt nghiệp "Hệ thống phân loại sản phẩm theo mã vạch" đã giải quyết trọn vẹn bài toán tự động hóa phân tuyến kiện hàng trong logistics, chuyển hóa thành công kiến thức lý thuyết về cơ học máy, kỹ thuật điện động lực và thị giác máy tính thành sản phẩm ứng dụng thực tiễn. Với năng suất đạt trên 1.000 sản phẩm/giờ, độ chính xác phân loại 98,17%, hệ thống chứng minh tính khả thi kỹ thuật vượt trội, độ tin cậy cao và hiệu quả kinh tế rõ nét đối với các doanh nghiệp logistics tại Việt Nam. Đây là nền tảng vững chắc để tiếp tục mở rộng, nâng cấp lên các hệ thống phân loại thông minh đa hướng chuẩn công nghiệp trong tương lai.