Giới thiệu dự án

Trong kỷ nguyên Công nghiệp 4.0, tự động hóa dây chuyền sản xuất đóng vai trò quyết định đến năng suất, độ chính xác và năng lực cạnh tranh của doanh nghiệp sản xuất. Theo thống kê từ Tổ chức Năng suất Châu Á (APO), các khâu phân loại thủ công sử dụng sức người thường có tỷ lệ sai sót dao động từ 5% đến 15% do hiện tượng mỏi mắt, giảm tập trung và giới hạn về tốc độ phản xạ sinh học. Việc áp dụng thị giác máy tính (Machine Vision) và trí tuệ nhân tạo vào hệ thống sản xuất linh hoạt (FMS) giúp hạ thấp tỷ lệ lỗi xuống dưới 1%, đồng thời tăng tốc độ vận hành lên gấp nhiều lần.

Đề tài "Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm" được thực hiện bởi nhóm tác giả tại Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE), chuyên ngành Công nghệ Kỹ thuật Điện tử - Truyền thông (Bộ môn Điện tử Công nghiệp - Y sinh). Nghiên cứu giải quyết bài toán tự động hóa quá trình nhận dạng, phân loại và đếm phôi sản phẩm công nghiệp đa màu sắc (Đỏ, Xanh lá, Vàng) trên hệ thống băng tải tự động theo thời gian thực.

+-------------------------------------------------------------------------+
|                           PROBLEM STATEMENT                             |
|                                                                         |
|  - Phân loại thủ công: Năng suất thấp, tỷ lệ lỗi 5-15%, tốn chi phí.    |
|  - Cảm biến màu sắc rời rạc (TCS3200): Nhạy cảm với cự ly, dễ nhiễu    |
|    quang học, không nhận diện được biên dạng hay kích thước vật thể.    |
|  - Máy tính công nghiệp (IPC): Chi phí đầu tư phần cứng quá cao.        |
+-------------------------------------------------------------------------+
                                    │
                                    ▼
+-------------------------------------------------------------------------+
|                           PROPOSED SOLUTION                             |
|                                                                         |
|  Hệ thống Phân loại Băng tải Kết hợp Xử lý ảnh Nhúng (Edge Vision):     |
|  - Raspberry Pi 3 Model B (Xử lý ảnh OpenCV trong không gian màu HSV)   |
|  - Camera Pi V2 8MP (Thu nhận dữ liệu hình ảnh độ nét cao qua CSI)      |
|  - Arduino Uno R3 (Vi điều khiển chấp hành: Động cơ DC, Servo MG996R)   |
|  - Cảm biến E18-D80NK (Kích hoạt ngắt thời gian thực)                   |
|  - Giao thức truyền thông UART Master-Slave ổn định, chống nghẽn        |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thiết kế và chế tạo cơ cấu cơ điện tử: Xây dựng khung băng tải mini vận hành bằng động cơ DC 24V, tích hợp cảm biến hồng ngoại E18-D80NK và các tay gạt phân loại dẫn động bằng động cơ RC Servo MG996R bánh răng kim loại.
  2. Xây dựng thuật toán thị giác máy tính nhúng: Phát triển module phần mềm trên nền tảng Python 3 và thư viện OpenCV nhằm trích xuất đặc trưng màu sắc dựa trên không gian màu HSV (Hue - Saturation - Value), lọc nhiễu hình thái học (Morphology) và xác định tọa độ vùng trọng tâm phôi.
  3. Thiết lập giao thức truyền thông phân tầng (Master - Slave): Kết nối đồng bộ dữ liệu giữa máy tính nhúng Raspberry Pi 3 (Master xử lý ảnh) và vi điều khiển Arduino Uno R3 (Slave điều khiển cơ cấu chấp hành) qua giao tiếp UART 9600 baud.
  4. Tích hợp giao diện giám sát cục bộ: Hiển thị số lượng sản phẩm phân loại theo từng màu sắc (Đỏ, Xanh, Vàng) và tổng sản phẩm lên màn hình LCD 16x2 qua giao thức I2C.
  5. Đánh giá và tối ưu hóa hiệu năng: Đạt độ chính xác nhận dạng tối thiểu 95%, thời gian đáp ứng của toàn hệ thống dưới 1.5 giây/sản phẩm.

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

  • Phạm vi nghiên cứu: Nhận dạng và phân loại các khối phôi hình học tiêu chuẩn mang 3 màu cơ bản: Đỏ (Red), Xanh lá (Green), Vàng (Yellow).
  • Giới hạn kỹ thuật: Hệ thống thử nghiệm ở quy mô mô hình phòng Lab; khu vực camera chụp ảnh cần hộp che chắn quang học kín (Dark Box) tích hợp đèn LED trợ sáng để cô lập nhiễu từ ánh sáng môi trường bên ngoài.

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

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

Tiêu chí so sánh Phân loại thủ công (Manual) Cảm biến màu rời rạc (TCS3200 + PLC) Thị giác máy tính nhúng (Hệ thống đề xuất)
Độ chính xác 85% - 92% (giảm theo ca làm việc) 88% - 93% (lỗi khi sai khoảng cách) 96% - 98% (ổn định liên tục)
Tính linh hoạt Rất thấp, khó tái cấu hình Thấp, chỉ đo được 1 điểm cố định Rất cao (thay đổi thuật toán phần mềm)
Chi phí bảo trì/vận hành Cao (chi phí nhân công định kỳ) Trung bình Thấp (phần cứng tiêu chuẩn, mã nguồn mở)
Khả năng mở rộng (AI/IoT) Không thể Rất khó, bị giới hạn I/O Dễ dàng nâng cấp Deep Learning / Cloud
Thời gian chu kỳ (Cycle Time) 2.5 - 4.0 giây/vật 0.8 - 1.2 giây/vật 0.8 - 1.0 giây/vật

Ma trận yêu cầu hệ thống theo phương pháp MoSCoW

  • Must have (Bắt buộc phải có): Thu nhận khung hình qua Camera Pi CSI; chuyển đổi không gian màu RGB sang HSV; lọc nhiễu nhị phân (Erosion/Dilation); phân loại chính xác 3 màu Đỏ, Xanh, Vàng; truyền tín hiệu điều khiển qua UART; gạt sản phẩm đúng máng bằng Servo MG996R; hiển thị số liệu lên LCD 16x2.
  • Should have (Nên có): Cơ cấu băng tải tự dừng/chạy thông minh khi phát hiện vật cản bằng cảm biến E18-D80NK; hệ thống đèn LED chiếu sáng ổn định; script tự động chạy ứng dụng khi khởi động OS (systemd/rc.local).
  • Could have (Có thể phát triển thêm): Giao diện Web Dashboard giám sát từ xa qua Wi-Fi; nhận dạng hình dạng (tròn, vuông, tam giác) kết hợp màu sắc.
  • Won't have (Chưa thực hiện trong giai đoạn này): Phân loại tốc độ siêu cao công nghiệp (>150 sản phẩm/phút); phân loại sản phẩm có bề mặt phản quang kim loại phức tạp.

Thiết kế hệ thống

graph TD
    A[Nguồn tổng 24VDC - 5A] --> B[Mạch hạ áp LM2596: 24V -> 5V 3A]
    A --> C[Động cơ DC 24V Băng tải qua Relay]
    B --> D[Arduino Uno R3 ATmega328P]
    B --> E[Động cơ Servo MG996R x2]
    B --> F[Cảm biến hồng ngoại E18-D80NK]
    B --> G[LCD 16x2 qua I2C Backpack]
    
    H[Nguồn 5V 2.5A Micro-USB] --> I[Raspberry Pi 3 Model B]
    J[Sony IMX219 8MP Camera Pi V2] -- Cáp Ribbon CSI --> I
    
    I -- UART Serial TX/RX 9600bps --> D
    F -- Tín hiệu ngắt Digital Out --> D
    D -- PWM Control 50Hz --> E
    D -- I2C SDA/SCL --> G
    D -- Tín hiệu kích Logic --> C

Technology Stack & Hardware Specifications

  • Raspberry Pi 3 Model B: Broadcom BCM2837 SoC, Quad-Core ARM Cortex-A53 @ 1.2GHz, 1GB LPDDR2 RAM, hệ điều hành Raspbian Buster (Debian 10, Linux Kernel 4.19).
  • Camera Pi Module V2: Cảm biến Sony IMX219 8 Megapixel, độ phân giải chụp tĩnh 3280 × 2464 px, chế độ video phân tích 640 × 480 px @ 30fps qua bus MIPI-CSI (Camera Serial Interface) triệt tiêu độ trễ USB.
  • Arduino Uno R3: Vi điều khiển Microchip ATmega328P 8-bit, xung nhịp 16MHz, 32KB Flash, 2KB SRAM, 14 chân Digital I/O (6 chân PWM), 6 chân Analog.
  • Cơ cấu chấp hành & Cảm biến:
    • Cảm biến hồng ngoại E18-D80NK: Khoảng cách quét 3 - 80cm điều chỉnh qua biến trở, ngõ ra NPN Open-Collector.
    • Động cơ Servo MG996R: Momen xoắn cực đại 11 kg-cm @ 6V, góc quay 0° - 180°, thời gian đáp ứng 0.17s/60°.
    • Mạch nguồn xung LM2596: Hiệu suất chuyển đổi > 90%, cấp dòng tải 3A liên tục.

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

Dự án áp dụng mô hình phát triển phần cứng - phần mềm lặp (Iterative Engineering Workflow) kéo dài trong 17 tuần:

  • Tuần 1 - 5: Khảo sát yêu cầu, nghiên cứu lý thuyết xử lý ảnh số, lựa chọn linh kiện và lập sơ đồ khối hệ thống.
  • Tuần 6 - 11: Thi công khung cơ khí băng tải, thiết kế mạch phân phối nguồn 24V/5V, lắp ráp module quang học và mạch điều khiển.
  • Tuần 12 - 14: Lập trình thuật toán phân đoạn màu sắc trên Python/OpenCV; lập trình firmware điều khiển thời gian thực trên Arduino IDE; xây dựng giao thức truyền thông Serial.
  • Tuần 15 - 17: Thử nghiệm tích hợp toàn hệ thống, cân chỉnh ngưỡng màu HSV, xử lý nhiễu cơ học, đo đạc thống kê và hoàn thiện báo cáo khoa học.

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

Quy trình xử lý ảnh trên Raspberry Pi 3 được triển khai qua các bước biến đổi ma trận ảnh sau:

  1. Thu nhận ảnh (Acquisition): Đọc frame hình ảnh độ phân giải $640 \times 480$ từ Camera Pi V2.
  2. Làm mờ Gauss (Gaussian Blur): Khử nhiễu tần số cao với kernel size $5 \times 5$, $\sigma = 0$: $$G(x,y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}}$$
  3. Chuyển đổi không gian màu (RGB $\to$ HSV): Không gian màu HSV phân tách thông tin độ màu ($H$) khỏi cường độ sáng ($V$), giúp hệ thống hoạt động ổn định trước biến thiên ánh sáng: $$H = \arccos\left(\frac{\frac{1}{2}[(R-G)+(R-B)]}{\sqrt{(R-G)^2 + (R-B)(G-B)}}\right)$$
  4. Phân ngưỡng nhị phân (Thresholding Mask): Xác định ngưỡng biên dưới và biên trên cho từng màu sắc:
    • Màu đỏ (Red): Hai dải do tính chất chu kỳ của kênh Hue: $[0, 100, 100] - [10, 255, 255]$ và $[170, 100, 100] - [180, 255, 255]$.
    • Màu xanh lá (Green): $[35, 100, 100] - [85, 255, 255]$.
    • Màu vàng (Yellow): $[20, 100, 100] - [35, 255, 255]$.
  5. Xử lý hình thái học (Morphological Operations): Áp dụng phép co (Erosion) và giãn (Dilation) với phần tử cấu trúc hình chữ nhật $5 \times 5$ để loại bỏ các điểm nhiễu lẻ và lấp đầy vùng rỗng: $$A \circ B = (A \ominus B) \oplus B$$
  6. Trích xuất Contour và Tọa độ trọng tâm (Centroid): Tìm đường bao ngoài lớn nhất; nếu diện tích contour $S > S_{\min} = 1500 \text{ px}$ thì xác nhận phát hiện sản phẩm hợp lệ.

Mã nguồn xử lý ảnh trên Raspberry Pi 3 (Python 3 & OpenCV)

import cv2
import numpy as np
import serial
import time

# Khoi tao ket noi Serial UART voi Arduino Uno
ser = serial.Serial('/dev/ttyAMA0', baudrate=9600, timeout=1)
time.sleep(2) # Cho on dinh ket noi

# Dinh nghia nguong HSV cho 3 mau phoi
COLOR_RANGES = {
    'RED': [
        (np.array([0, 120, 70]), np.array([10, 255, 255])),
        (np.array([170, 120, 70]), np.array([180, 255, 255]))
    ],
    'GREEN': [
        (np.array([36, 100, 100]), np.array([86, 255, 255]))
    ],
    'YELLOW': [
        (np.array([20, 100, 100]), np.array([35, 255, 255]))
    ]
}

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

def detect_color(hsv_frame):
    detected_color = None
    max_area = 1500 # Nguong dien tich loc nhieu pixel

    for color_name, ranges in COLOR_RANGES.items():
        mask = np.zeros(hsv_frame.shape[:2], dtype="uint8")
        for (lower, upper) in ranges:
            sub_mask = cv2.inRange(hsv_frame, lower, upper)
            mask = cv2.bitwise_or(mask, sub_mask)
            
        # Phep toan hinh thai hoc loai bo nhieu trang/den
        kernel = np.ones((5, 5), np.uint8)
        mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
        mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

        contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        for cnt in contours:
            area = cv2.contourArea(cnt)
            if area > max_area:
                max_area = area
                detected_color = color_name

    return detected_color

while True:
    ret, frame = cap.read()
    if not ret:
        break

    blurred = cv2.GaussianBlur(frame, (5, 5), 0)
    hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)
    
    result = detect_color(hsv)
    if result:
        # Gui ky tu ma hoa qua UART: 'R' (Red), 'G' (Green), 'Y' (Yellow)
        command = result[0] 
        ser.write(command.encode('utf-8'))
        print(f"[LOG] Nhan dang thanh cong: {result} -> Gui UART: {command}")
        time.sleep(1.0) # Khoa tranh gui trung lap khi phoi dang di chuyen

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
ser.close()

Firmware điều khiển cơ cấu chấp hành trên Arduino Uno R3 (C/C++)

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

LiquidCrystal_I2C lcd(0x27, 16, 2); // Dia chi I2C 0x27
Servo servoRed;
Servo servoGreen;

const int PIN_SENSOR = 2;    // Cam bien E18-D80NK (Ngat ngoai INT0)
const int PIN_RELAY_DC = 7;  // Dieu khien role dong co bang tai
const int PIN_SERVO_R = 9;   // Servo phan loai Mau Do
const int PIN_SERVO_G = 10;  // Servo phan loai Mau Xanh

int countRed = 0, countGreen = 0, countYellow = 0;

void setup() {
  Serial.begin(9600); // Khoi tao Serial UART 9600 baud
  lcd.init();
  lcd.backlight();
  
  servoRed.attach(PIN_SERVO_R);
  servoGreen.attach(PIN_SERVO_G);
  servoRed.write(0);   // Vi tri dong ban dau
  servoGreen.write(0);
  
  pinMode(PIN_SENSOR, INPUT_PULLUP);
  pinMode(PIN_RELAY_DC, OUTPUT);
  digitalWrite(PIN_RELAY_DC, HIGH); // Bat bang tai chay
  
  updateLCD();
}

void loop() {
  if (Serial.available() > 0) {
    char colorCode = Serial.read();
    
    switch (colorCode) {
      case 'R':
        countRed++;
        updateLCD();
        delay(600); // Thoi gian phoi chay tu Camera den vi tri Servo Red
        actuateServo(servoRed);
        break;
      case 'G':
        countGreen++;
        updateLCD();
        delay(1200); // Thoi gian phoi chay den vi tri Servo Green
        actuateServo(servoGreen);
        break;
      case 'Y':
        countYellow++; // Mau vang chay thang xuong cuoi mang
        updateLCD();
        break;
    }
  }
}

void actuateServo(Servo &sv) {
  sv.write(90);  // Mo goc 90 do gat san pham vao mang
  delay(1000);   // Giu nguyen vi tri trong 1 giay
  sv.write(0);   // Thu ve vi tri 0 do
}

void updateLCD() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("R:"); lcd.print(countRed);
  lcd.setCursor(6, 0);
  lcd.print("G:"); lcd.print(countGreen);
  lcd.setCursor(12, 0);
  lcd.print("Y:"); lcd.print(countYellow);
  lcd.setCursor(0, 1);
  lcd.print("TOTAL: ");
  lcd.print(countRed + countGreen + countYellow);
}

Thử nghiệm và đánh giá định lượng

Nhóm nghiên cứu tiến hành 150 lượt thử nghiệm thực tế (50 lượt cho mỗi màu phôi) trên dây chuyền băng tải vận tốc $0.15 \text{ m/s}$.

Màu sắc phôi Số lần thử nghiệm Nhận dạng đúng Phân loại đúng máng Tỷ lệ chính xác (%) Thời gian xử lý trung bình (ms)
Màu Đỏ (Red) 50 49 49 98.0% 118 ms
Màu Xanh (Green) 50 48 48 96.0% 124 ms
Màu Vàng (Yellow) 50 47 46 92.0% 129 ms
Tổng thể (Average) 150 144 143 95.33% 123.6 ms
+-------------------------------------------------------------------------+
|                  BREAKDOWN THỜI GIAN ĐÁP ỨNG TOÀN HỆ THỐNG              |
|                                                                         |
|  [Thu nhận ảnh CSI]        ■■■■ (80ms)                                  |
|  [Lọc Gauss + HSV + Mask]  ■■ (35ms)                                    |
|  [Morphology + Contour]    ■ (8.6ms)                                    |
|  [Truyền thông UART]       ▏(2.1ms)                                     |
|  [Đáp ứng Servo MG996R]    ■■■■■■■■■■■■■ (250ms)                        |
|                                                                         |
|  Tổng thời gian chu kỳ tính toán (Cycle Latency): ~375.7 ms             |
+-------------------------------------------------------------------------+

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

  1. Kiến trúc tính toán phân tán (Decoupled Master-Slave Architecture):

    • Đổi mới: Tách biệt hoàn toàn tầng xử lý tính toán giải thuật nặng (Computer Vision chạy đa luồng trên ARM Cortex-A53 của Raspberry Pi) khỏi tầng điều khiển I/O thời gian thực (Deterministic Hard Real-Time chạy ngắt cứng trên ATmega328P của Arduino).
    • Bằng chứng: Hệ thống không xảy ra hiện tượng drop frame hình ảnh hay giật góc quay servo khi xử lý các chuỗi phôi di chuyển liên tục với mật độ cao.
  2. Thuật toán phân đoạn màu sắc HSV 2 dải bù trừ quang thông:

    • Cải tiến: Kỹ thuật xử lý kênh Hue kết hợp phép toán OR bitwise trên hai dải con giúp nhận diện màu đỏ tuyệt đối (vốn trải dài ở hai đầu trục tọa độ màu $0^\circ-10^\circ$ và $170^\circ-180^\circ$). Khắc phục hoàn toàn tình trạng sai màu do khúc xạ ánh sáng trên phôi nhựa bóng.
  3. Tối ưu hóa chi phí đầu tư phần cứng công nghiệp:

    • Hiệu quả kinh tế: Tổng chi phí linh kiện để dựng mô hình hoàn chỉnh chỉ xấp xỉ 2.800.000 VNĐ (~120 USD), thấp hơn 85% so với việc trang bị hệ thống Smart Camera công nghiệp chuyên dụng (như Cognex In-Sight hay Keyence CV-X) nhưng vẫn đáp ứng đầy đủ yêu cầu phân loại tự động tại các xưởng sản xuất vừa và nhỏ.

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

+-----------------------------------------------------------------------------+
|                     CÁC KỊCH BẢN ỨNG DỤNG CÔNG NGHIỆP                       |
|                                                                             |
|  [Nông nghiệp thực phẩm]   Phân loại cà chua, cam, xoài theo độ chín màu sắc|
|  [Dược phẩm & Y tế]        Kiểm tra nắp lọ vaccine, vỉ thuốc viên nang      |
|  [Tái chế chất thải]       Phân loại nắp chai nhựa PET, mảnh kim loại màu   |
|  [Sản xuất linh kiện]      Phân loại tụ điện, điện trở, đầu jack cắm màu    |
+-----------------------------------------------------------------------------+

Yêu cầu triển khai và hướng dẫn vận hành (Deployment Guide)

  1. Thiết lập phần cứng:
    • Cố định Camera Pi V2 vuông góc với mặt phẳng băng tải ở khoảng cách $20 \pm 2\text{ cm}$.
    • Cấp nguồn tổ ong 24VDC - 5A cho động cơ và module LM2596. Điều chỉnh biến trở LM2596 đạt chính xác $5.1\text{VDC}$ trước khi cắm vào Servo MG996R và chân 5V của Arduino.
    • Kết nối dây truyền thông: Chân TX (GPIO 14) của Raspberry Pi nối qua mạch phân áp điện trở ($1\text{k}\Omega / 2\text{k}\Omega$) để hạ từ 5V xuống 3.3V an toàn về chân RX (Pin 0) của Arduino.
  2. Cài đặt môi trường phần mềm:
    # Cài đặt thư viện xử lý ảnh trên Raspberry Pi OS
    sudo apt-get update && sudo apt-get upgrade -y
    sudo apt-get install python3-opencv python3-numpy python3-serial -y
    
    # Cấu hình mở cổng Serial phần cứng
    sudo raspi-config nonint do_serial 2
    

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)

  • Chi phí đầu tư ban đầu (CapEx): ~2.800.000 VNĐ/line phân loại.
  • Chi phí vận hành điện năng (OpEx): Công suất tiêu thụ trung bình $35\text{W} \approx 0.84\text{ kWh/ngày}$ (~1.700 VNĐ/ngày).
  • Thời gian hoàn vốn (ROI): Thay thế 01 nhân công phân loại thủ công (mức lương cơ bản 6.000.000 VNĐ/tháng), thời gian thu hồi toàn bộ chi phí đầu tư chỉ mất dưới 15 ngày vận hành.

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

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

  • Độ phụ thuộc vào ánh sáng: Mặc dù không gian màu HSV kháng nhiễu sáng tốt hơn RGB, hệ thống vẫn có thể phân loại nhầm giữa màu Vàng và Xanh lá non nếu cường độ chiếu sáng của nguồn đèn LED giảm sút dưới $300\text{ lux}$.
  • Giới hạn nhận dạng hình học: Thuật toán phân ngưỡng màu đơn thuần chưa phân biệt được các vật thể có cùng màu sắc nhưng khác biệt về hình học phức tạp hoặc có nhãn mác hoa văn.

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

  • Nâng cấp trí tuệ nhân tạo (Edge AI): Tích hợp mạng nơ-ron tích chập nhẹ (YOLOv8-tiny hoặc MobileNetV3-SSD) kết hợp bộ tăng tốc phần cứng Google Coral USB Accelerator để nhận dạng đồng thời cả lỗi nứt vỡ, biến dạng bề mặt và mã vạch QR Code.
  • Giao thức IoT công nghiệp: Nâng cấp kết nối Modbus TCP/IP hoặc MQTT để truyền dữ liệu đếm sản phẩm thời gian thực lên máy chủ SCADA / Cloud Dashboard phục vụ công tác quản trị sản xuất từ xa.

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

  • Sinh viên & Học viên kỹ thuật: Nắm vững phương pháp thiết kế hệ thống nhúng lai (Raspberry Pi kết hợp Arduino), kỹ năng xử lý ảnh OpenCV và lập trình giao tiếp truyền thông nối tiếp.
  • Kỹ sư R&D / Nhà phát triển: Tham khảo mã nguồn, sơ đồ nguyên lý phần cứng chuẩn để tùy biến thành các thiết bị kiểm tra ngoại quan quang học tự động (Automated Optical Inspection - AOI).
  • Doanh nghiệp vừa và nhỏ (SMEs): Tiếp cận giải pháp tự động hóa dây chuyền đóng gói, phân loại với chi phí siêu rẻ, dễ bảo trì và làm chủ công nghệ không phụ thuộc nhà cung cấp ngoại.

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

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

Hệ thống yêu cầu nguồn điện 220VAC chuyển tiếp qua nguồn tổ ong 24VDC 5A; Raspberry Pi 3 Model B chạy hệ điều hành Raspbian Buster đã cài đặt sẵn Python 3.7+ và OpenCV 4.x; cáp kết nối Camera Pi CSI nguyên bản dài 15cm; khung băng tải mini gắn động cơ DC có hộp giảm tốc.

2. Làm thế nào để mở rộng phân loại thêm nhiều màu sắc hoặc hình dạng mới?

Trong mã nguồn Python COLOR_RANGES, người phát triển chỉ cần khai báo thêm tuple chứa ngưỡng HSV [Lower_Bound, Upper_Bound] của màu mong muốn, đồng thời mở rộng thêm các case điều khiển servo trên Arduino Uno.

3. Tại sao không chạy toàn bộ cơ cấu chấp hành trực tiếp từ GPIO của Raspberry Pi?

Raspberry Pi chạy trên nền tảng Linux (hệ điều hành đa nhiệm không thời gian thực - Non-Real-time OS), việc tạo xung PWM điều khiển servo có thể bị jitter (rung giật) khi CPU chịu tải cao. Giao việc tạo xung PWM và đọc cảm biến ngắt cho Arduino Uno đảm bảo tính chính xác và an toàn phần cứng.

4. Hệ thống xử lý thế nào khi có 2 sản phẩm đi liền kề nhau trên băng tải?

Cảm biến hồng ngoại E18-D80NK đóng vai trò mắt thần phát hiện vật cản. Khi phát hiện sản phẩm thứ nhất, Arduino kích hoạt ngắt và tạm thời ngắt role cấp nguồn động cơ băng tải (khoảng 0.5s) để tạo khoảng cách vật lý an toàn giữa các phôi trước khi kích hoạt tay gạt servo.

5. Chi phí chế tạo và thời gian thu hồi vốn của hệ thống là bao nhiêu?

Tổng chi phí linh kiện phần cứng khoảng 2.800.000 VNĐ (tương đương 120 USD). Với năng suất phân loại ổn định 25 - 30 sản phẩm/phút không cần nghỉ ca, thời gian hoàn vốn thực tế của hệ thống ước tính dưới 0.5 tháng so với chi phí thuê nhân công trực tiếp.


Kết luận

Đề tài tốt nghiệp "Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm" đã nghiên cứu, chế tạo và thử nghiệm thành công mô hình phân loại sản phẩm tự động dựa trên thị giác máy tính nhúng. Việc kết hợp hài hòa giữa máy tính nhúng Raspberry Pi 3 và vi điều khiển Arduino Uno R3 đã tạo ra một kiến trúc điều khiển mạnh mẽ, đạt độ chính xác phân loại $95.33%$ với độ trễ đáp ứng trung bình chỉ $123.6\text{ ms}$. Nghiên cứu minh chứng tính khả thi vượt trội của các giải pháp tự động hóa mã nguồn mở, mở ra hướng đi chi phí thấp nhưng hiệu quả cao cho các nhà máy thông minh tại Việt Nam.