Giới thiệu dự án

Trong bối cảnh nền nông nghiệp và công nghiệp chế biến thực phẩm tại Việt Nam đang từng bước chuyển mình theo định hướng tự động hóa, việc phân loại nông sản sau thu hoạch giữ vai trò sống còn trong chuỗi giá trị thương phẩm. Theo số liệu thống kê ngành nông nghiệp, sự thiếu hụt quy trình phân loại chuẩn hóa tại nguồn khiến giá trị nông sản biến động tiêu cực: giá cà chua hoặc dưa chuột vào chính vụ có thể giảm từ 7.000 VNĐ/kg xuống chỉ còn 500 – 1.000 VNĐ/kg do tình trạng thương lái ép giá hàng loạt sản phẩm chưa phân loại. Ngược lại, các sản phẩm đạt tiêu chuẩn đồng đều về độ chín và trọng lượng xuất khẩu luôn duy trì mức biên lợi nhuận cao hơn 35 – 50%.

Phương pháp thủ công truyền thống bộc lộ rõ các điểm nghẽn (pain points): phụ thuộc hoàn toàn vào cảm tính chủ quan của nhân công, tốc độ phân loại chậm (trung bình 15 – 20 quả/phút/người), độ chính xác giảm sút nhanh chóng sau 3 – 4 giờ làm việc liên tục do mệt mỏi, và chi phí nhân công tăng cao vào mùa cao điểm.

Đề tài “Nghiên cứu, thiết kế và thi công mô hình đếm và phân loại sản phẩm theo cân nặng, màu sắc” được thực hiện nhằm giải quyết bài toán trên thông qua giải pháp tự động hóa nhúng giá thành thấp, tích hợp thị giác máy tính và cảm biến lực điện tử.

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

  1. Thiết kế và thi công hệ thống cơ khí băng tải con lăn kết hợp buồng chụp ảnh cách ly ánh sáng nhiễu môi trường.
  2. Xây dựng thuật toán xử lý ảnh trên không gian màu HSV bằng thư viện OpenCV và ngôn ngữ Python để phân tách 3 cấp độ chín của quả cà chua (Đỏ/Chín hồng, Vàng/Chuyển màu, Xanh/Chưa chín).
  3. Tích hợp cảm biến tải Loadcell 1kg kết hợp module chuyển đổi ADC 24-bit HX711 để cân trọng lượng tĩnh/động với độ phân giải dưới 1g.
  4. Phát triển hệ thống điều khiển cơ cấu chấp hành khí nén (xi-lanh, van điện từ solenoid 24V) để đẩy sản phẩm vào 5 ngăn phân loại tương ứng.
  5. Thiết lập giao diện điều khiển và giám sát thời gian thực qua Web localhost, đồng bộ dữ liệu số lượng và tùy biến ngưỡng phân loại lên Google Firebase Realtime Database.

Phạm vi đề tài tập trung vào việc nhận dạng quả cà chua đơn lẻ di chuyển trên băng tải đơn làn với năng suất thí nghiệm từ 30 – 45 sản phẩm/phút, trọng lượng tối đa 1.000g/quả.


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

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

Thị trường hiện nay tồn tại ba hướng tiếp cận phân loại nông sản với các ưu nhược điểm rõ rệt:

Tiêu chí Phân loại thủ công Hệ thống PLC & Robot công nghiệp Giải pháp nhúng Raspberry Pi + OpenCV (Đề tài)
Độ chính xác 65% – 75% (phụ thuộc thị lực) 98% – 99.5% 94% – 96.5%
Chi phí đầu tư Rất thấp (dưới 5 triệu ban đầu) Rất cao (200 – 800 triệu VNĐ) Thấp (8 – 15 triệu VNĐ)
Tốc độ xử lý 15 – 20 sản phẩm/phút 120 – 300 sản phẩm/phút 35 – 50 sản phẩm/phút
Khả năng tùy biến Khó định lượng Cần lập trình viên chuyên sâu PLC Tùy biến trực quan qua Web/App
Bảo trì, sửa chữa Không Phức tạp, phụ tùng đắt tiền Linh kiện mô-đun hóa, dễ thay thế

Yêu cầu người dùng được phân loại theo mô hình MoSCoW:

  • Must Have: Nhận diện chính xác 3 vùng màu (Đỏ, Vàng/Cam, Xanh); đo trọng lượng sai số $\le \pm 2\text{g}$; cơ cấu khí nén tác động chính xác vị trí; đếm số lượng từng loại.
  • Should Have: Giao diện Web hiển thị số lượng theo thời gian thực; cho phép người dùng thay đổi dải ngưỡng trọng lượng và tỷ lệ màu trên giao diện.
  • Could Have: Đồng bộ dữ liệu đa nền tảng qua Cloud Firebase; cảnh báo khi ngăn chứa đầy.
  • Won't Have: Phân loại khuyết tật vỏ sâu bệnh bằng mô hình Deep Learning phức tạp (giới hạn phần cứng nhúng); hệ thống nhiều làn băng tải song song.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình điều khiển phân tầng:

Technology Stack:

  • Phần cứng xử lý: Raspberry Pi 3 Model B (Broadcom BCM2837 Quad-Core 1.2GHz ARM Cortex-A53, 1GB LPDDR2 RAM).
  • Cảm biến thị giác: USB Camera Module (Độ phân giải video $640 \times 480$, F6.0mm, tiêu cự 20mm).
  • Chiếu sáng chuẩn hóa: 4 cụm LED siêu sáng K3E19-3 (3W, 3.5V, $600 - 750\text{mA}$, quang thông 180 – 200 lm, nhiệt độ màu 6500K).
  • Cảm biến lực: Loadcell thanh nhôm chuẩn cầu Wheatstone 1kg kết hợp chip khuếch đại vi sai 24-bit $\Sigma$-$\Delta$ ADC HX711 (tốc độ lấy mẫu 10/80 SPS).
  • Cơ cấu phân loại: 4 Xi-lanh tác động kép hành trình 50mm, van điện từ đảo chiều 5/2 Airtac 24VDC/120mA, nguồn cấp khí nén 0.6 – 0.8 MPa.
  • Truyền động: Động cơ giảm tốc DC 12V JGB37-3530 kết hợp mạch điều chế độ rộng xung PWM (IC NE555 + MOSFET 10A).
  • Hệ điều hành & Thư viện: Raspbian OS (Linux kernel 4.19), Python 3.7.3, OpenCV 4.1.0, Flask 1.1.1, Pyrebase (Firebase Realtime API wrapper).

Methodology

Dự án áp dụng mô hình phát triển gia tăng (Incremental Engineering Methodology) kết hợp kỹ thuật kiểm thử phần cứng lặp (Hardware-in-the-loop):

  • Giai đoạn 1 (Tuần 1 – 4): Nghiên cứu lý thuyết xử lý ảnh HSV, hiệu chuẩn cảm biến Loadcell và xây dựng thuật toán lọc nhiễu số.
  • Giai đoạn 2 (Tuần 5 – 8): Thiết kế mạch in PCB, gia công khung cơ khí băng tải và buồng chụp ảnh quang học.
  • Giai đoạn 3 (Tuần 9 – 12): Tích hợp phần cứng – phần mềm, lập trình giao tiếp GPIO thời gian thực và đồng bộ dữ liệu Firebase.
  • Giai đoạn 4 (Tuần 13 – 15): Kiểm thử thực nghiệm với 100 mẫu sản phẩm thực tế, tinh chỉnh tham số và đóng gói tài liệu.

Implementation và kết quả

Development process

Quá trình trích xuất đặc trưng màu sắc được thực hiện trong không gian màu HSV thay vì RGB để loại bỏ sự ảnh hưởng của cường độ sáng. Thuật toán trích chọn vùng ảnh quả cà chua, tạo mặt nạ nhị phân (Binary Mask) và đếm số lượng pixel của từng dải màu theo công thức:

$$\text{Tỷ lệ màu } (%) = \frac{\sum \text{Pixel}{\text{Màu}}}{\sum \text{Pixel}{\text{Tổng bề mặt}}} \times 100%$$

import cv2
import numpy as np

def classify_tomato_color(image_path):
    # Đọc ảnh từ buồng chụp và chuyển sang không gian màu HSV
    img = cv2.imread(image_path)
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # Định nghĩa dải ngưỡng HSV cho quả cà chua đã qua thực nghiệm hiệu chuẩn
    lower_red = np.array([0, 50, 50])
    upper_red = np.array([10, 255, 255])
    
    lower_yellow = np.array([11, 50, 50])
    upper_yellow = np.array([65, 255, 255])
    
    lower_green = np.array([66, 50, 50])
    upper_green = np.array([160, 255, 255])
    
    # Tạo mặt nạ nhị phân cho từng dải màu
    mask_red = cv2.inRange(hsv, lower_red, upper_red)
    mask_yellow = cv2.inRange(hsv, lower_yellow, upper_yellow)
    mask_green = cv2.inRange(hsv, lower_green, upper_green)
    
    # Tính tổng số pixel của từng màu
    red_pixels = cv2.countNonZero(mask_red)
    yellow_pixels = cv2.countNonZero(mask_yellow)
    green_pixels = cv2.countNonZero(mask_green)
    total_pixels = red_pixels + yellow_pixels + green_pixels
    
    if total_pixels == 0:
        return "UNKNOWN"
        
    red_ratio = (red_pixels / total_pixels) * 100
    yellow_ratio = (yellow_pixels / total_pixels) * 100
    
    # Đưa ra nhãn phân loại màu sắc
    if red_ratio >= 85.0:
        return "RED"       # Quả chín đỏ / chín hồng (Loại 1)
    elif yellow_ratio >= 30.0 or (red_ratio > 20.0 and red_ratio < 85.0):
        return "YELLOW"    # Quả chuyển màu / chín vàng (Loại 2)
    else:
        return "GREEN"     # Quả xanh / chưa chín (Loại 3)

Thuật toán đọc tín hiệu ADC 24-bit từ module HX711 trên Raspberry Pi sử dụng phương pháp hiệu chuẩn tuyến tính và lọc trung bình động 10 mẫu để triệt tiêu dao động cơ học khi băng tải vận hành:

import time
import RPi.GPIO as GPIO

class WeightSensor:
    def __init__(self, dout_pin=5, pd_sck_pin=6, scale_factor=420.5):
        self.DOUT = dout_pin
        self.PD_SCK = pd_sck_pin
        self.SCALE = scale_factor
        self.OFFSET = 0
        
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(self.DOUT, GPIO.IN)
        GPIO.setup(self.PD_SCK, GPIO.OUT)
        self.tare()

    def read_raw(self):
        # Đọc dữ liệu 24-bit vi sai từ HX711
        while GPIO.input(self.DOUT) == 1:
            pass
        count = 0
        for _ in range(24):
            GPIO.output(self.PD_SCK, True)
            count = count << 1
            GPIO.output(self.PD_SCK, False)
            if GPIO.input(self.DOUT):
                count += 1
        # Xung thứ 25 để thiết lập Gain 128 cho chu kỳ kế tiếp
        GPIO.output(self.PD_SCK, True)
        GPIO.output(self.PD_SCK, False)
        if count & 0x800000:
            count -= 0x1000000
        return count

    def tare(self):
        sum_val = sum([self.read_raw() for _ in range(10)])
        self.OFFSET = sum_val / 10.0

    def get_weight(self):
        # Lọc trung bình động 5 mẫu liên tiếp
        samples = [self.read_raw() for _ in range(5)]
        avg_raw = sum(samples) / 5.0
        weight = (avg_raw - self.OFFSET) / self.SCALE
        return max(0.0, round(weight, 2))

Testing và validation

Hệ thống được thử nghiệm với bộ dữ liệu kiểm chứng gồm 100 quả cà chua thực tế chia đều thành 5 nhóm tiêu chuẩn:

Nhóm phân loại Quy cách tiêu chuẩn (Màu sắc & Cân nặng) Số mẫu thử Nhận diện đúng Tỷ lệ chính xác (%)
Loại 1 Đỏ chín ($\text{Red} \ge 85%$), $W < 120\text{g}$ 20 19 95.0%
Loại 2 Đỏ chín ($\text{Red} \ge 85%$), $W \ge 120\text{g}$ 20 20 100.0%
Loại 3 Vàng/Cam ($30% \le \text{Yellow} < 85%$), $W < 120\text{g}$ 20 18 90.0%
Loại 4 Vàng/Cam ($30% \le \text{Yellow} < 85%$), $W \ge 120\text{g}$ 20 19 95.0%
Loại 5 Xanh ($\text{Green} > 70%$) hoặc Trọng lượng bất thường 20 19 95.0%
Tổng thể Toàn bộ hệ thống 100 95 95.0%

Thông số đo lường hiệu năng (Benchmarks):

  • Thời gian xử lý ảnh HSV (OpenCV): $120\text{ms} \pm 15\text{ms}$ trên Raspberry Pi 3.
  • Thời gian đọc và ổn định Loadcell (HX711): $250\text{ms}$.
  • Độ trễ phản hồi xi-lanh khí nén: $85\text{ms}$ kể từ khi nhận lệnh kích hoạt Relay.
  • Tổng chu kỳ phân loại một sản phẩm: $1.4\text{s} - 1.8\text{s}$ (đáp ứng tốc độ băng tải $0.15\text{m/s}$).

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

Hệ thống hoàn thành 100% các chức năng thiết kế ban đầu:

  • Phân loại chính xác 5 nhóm sản phẩm dựa trên tương quan logic 2 chiều giữa màu sắc và trọng lượng.
  • Cơ cấu khí nén tác động dứt khoát, không làm dập nát bề mặt vỏ quả nhờ bộ đệm cao su tại đầu piston.
  • Hệ thống web điều khiển cho phép cập nhật tức thời các tham số ngưỡng $W_{\text{threshold}}$, ngưỡng HSV và lưu trữ sản lượng theo ca làm việc trên cơ sở dữ liệu đám mây.

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

  • Hợp nhất đa tiêu chí (Dual-metric Fusion): Thay vì chỉ phân loại theo kích thước cơ học hoặc màu sắc đơn thuần như các máy sàng tuyển rung truyền thống, hệ thống kết hợp đồng thời thị giác máy tính và cảm biến lực điện tử, giảm thiểu tối đa sai số do quả to nhưng rỗng ruột hoặc quả nhỏ nhưng chín ép.
  • Kiến trúc buồng chiếu sáng chuẩn hóa: Thiết kế buồng chụp hình học tối ưu ($30 \times 15 \times 50\text{ cm}$) sử dụng ánh sáng khuếch tán từ 4 đèn LED K3E19-3 giúp loại bỏ 98% hiện tượng phản xạ gương (specular reflection) trên bề mặt bóng của vỏ cà chua.
  • Giải pháp IoT chi phí siêu thấp: Toàn bộ hệ thống điều khiển được hiện thực hóa trên phần cứng mã nguồn mở với tổng chi phí linh kiện chỉ bằng $5% - 8%$ so với hệ thống PLC công nghiệp nhập khẩu, mang lại cơ hội tự động hóa cao cho các hợp tác xã quy mô vừa và nhỏ.

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

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

  • Hợp tác xã nông sản sạch: Phân loại nông sản đóng gói theo tiêu chuẩn VietGAP trước khi phân phối vào chuỗi siêu thị bán lẻ.
  • Cơ sở chế biến tương cà & đồ hộp: Tách riêng quả chín đỏ đạt chuẩn (chuyển sang dây chuyền nghiền ép) và quả xanh/chuyển màu (chuyển sang kho ủ chín).

Phân tích tài chính & ROI

Tổng chi phí đầu tư mô hình thực tế: ~12.500.000 VNĐ
Chi phí thuê 01 nhân công phân loại thủ công: 6.000.000 VNĐ/tháng
Năng suất hệ thống: Tương đương 2.5 nhân công làm việc liên tục
Tiết kiệm chi phí vận hành hàng tháng: ~12.000.000 VNĐ
Thời gian thu hồi vốn đầu tư (ROI): 1.5 - 2.0 tháng hoạt động trong mùa vụ.

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

Hạn chế kỹ thuật

  • Năng suất đơn làn: Băng tải đơn chỉ cho phép xử lý từng quả nối tiếp nhau, chưa hỗ trợ luồng sản phẩm hỗn loạn mật độ cao.
  • Góc chụp camera cố định: Chỉ phân tích được diện tích mặt trên của quả cà chua hướng về phía ống kính; các điểm lỗi màu ở mặt dưới có thể bị bỏ sót.
  • Rung động cơ khí: Tín hiệu loadcell bị nhiễu động nếu tốc độ băng tải vượt quá $0.3\text{m/s}$.

Hướng phát triển

  1. Ứng dụng mô hình mạng nơ-ron tích chập (CNN - MobileNetV3 hoặc YOLOv8-tiny) để phát hiện dị tật vỏ, đốm sâu bệnh và nấm mốc với tốc độ thực thi trên 30 FPS.
  2. Tích hợp hệ thống 2 camera đối xứng (gương phản xạ hoặc camera kép) để quét toàn diện 360 độ bề mặt sản phẩm.
  3. Nâng cấp cơ chế phân loại sang cánh tay robot Delta tốc độ cao hoặc vòi phun khí nén tốc độ cao (Air Jet Ejector).

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

  • Sinh viên & Kỹ sư nhúng: Tiếp cận source code hoàn chỉnh kết hợp giữa OpenCV, phần cứng Raspberry Pi và giao tiếp cảm biến tải công nghiệp.
  • Hợp tác xã & Nhà vườn nông sản: Sở hữu giải pháp tự động hóa giá rẻ, nâng cao giá trị hàng xuất khẩu thêm 25 – 40% nhờ đồng đều chất lượng.
  • Nhà nghiên cứu thị giác máy tính: Cung cấp tập tham số thực nghiệm không gian màu HSV chuẩn hóa cho các giống cà chua nhiệt đới tại Việt Nam.

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 220VAC (chuyển đổi qua các bộ nguồn xung 5V/2.5A, 12V/5A, 24V/5A), máy nén khí áp lực tối thiểu 0.6 MPa (dung tích bình chứa $\ge 24\text{L}$), Kit Raspberry Pi 3 Model B trở lên và camera USB độ phân giải tối thiểu 480p.

2. Giới hạn tốc độ phân loại của hệ thống là bao nhiêu?

Hệ thống đạt hiệu suất tối ưu ở tốc độ 35 – 45 sản phẩm/phút. Nếu tăng tốc độ vượt quá 50 sản phẩm/phút, cảm biến cân nặng HX711 cần giảm thời gian trích mẫu, dẫn đến sai số trọng lượng tăng từ $\pm 1.5\text{g}$ lên $\pm 5\text{g}$.

3. Có thể phân loại các loại trái cây khác ngoài cà chua không?

Có. Người dùng chỉ cần truy cập trang Web quản trị localhost, điều chỉnh dải ngưỡng HSV (ví dụ: Chanh, Cam, Xoài, Táo) và đặt lại các mốc trọng lượng $W_{\text{threshold}}$ mà không cần nạp lại mã nguồn hệ thống.

4. Hệ thống cần bảo trì định kỳ những hạng mục nào?

Cần xả nước đọng trong bộ lọc khí nén định kỳ 2 tuần/lần, vệ sinh bụi trên bề mặt kính camera/đèn LED 1 tuần/lần và hiệu chuẩn lại điểm 0 (Tare) của bàn cân Loadcell trước mỗi ca làm việc.

5. Chi phí bảo trì và thay thế linh kiện có đắt không?

Rất thấp. Toàn bộ linh kiện cơ cấu chấp hành (van solenoid, cảm biến HX711, relay, dây curoa) đều là chuẩn công nghiệp thông dụng trên thị trường với chi phí thay thế dao động chỉ từ 30.000 đến 250.000 VNĐ cho mỗi mô-đun.


Kết luận

Đề tài “Nghiên cứu, thiết kế và thi công mô hình đếm và phân loại sản phẩm theo cân nặng, màu sắc” đã chứng minh tính khả thi vượt trội trong việc ứng dụng công nghệ thị giác máy tính kết hợp cảm biến nhúng vào tự động hóa sau thu hoạch. Với độ chính xác phân loại tổng thể đạt 95%, tốc độ xử lý dưới 2 giây/sản phẩm và khả năng tùy biến thông số linh hoạt qua giao diện Web/Cloud, giải pháp mang lại giá trị gia tăng rõ rệt cho quy trình chế biến nông sản hiện đại. Sự kết hợp hài hòa giữa kỹ thuật xử lý ảnh OpenCV, kiến trúc nhúng Raspberry Pi và cơ cấu khí nén chính xác đã mở ra hướng đi đầy tiềm năng cho các giải pháp nông nghiệp thông minh “Make in Vietnam”.