Giới thiệu dự án

Thị trường bán lẻ tự động toàn cầu đang chứng kiến sự tăng trưởng vượt bậc với tốc độ tăng trưởng kép hàng năm (CAGR) đạt xấp xỉ 9.5%, thúc đẩy bởi nhu cầu tối ưu hóa chi phí nhân sự và vận hành 24/7. Trong bối cảnh đó, máy bán hàng tự động (Vending Machine) đóng vai trò là một mắt xích trọng yếu của hạ tầng thương mại không người bán. Tuy nhiên, rào cản lớn nhất đối với việc nội địa hóa và phổ cập hệ thống này tại các thị trường đang phát triển chính là chi phí đầu tư mô-đun nhận diện tiền mặt chuyên dụng (Bill Acceptor) nhập khẩu đắt đỏ (thường dao động từ 150 – 300 USD), cùng với sự phức tạp trong việc xử lý hình ảnh trên các hệ thống nhúng đòi hỏi năng lực tính toán cao.

Đề tài "Máy bán hàng tự động" do sinh viên Nguyễn Văn Hiệu thực hiện dưới sự hướng dẫn của ThS. Trần Tấn Phúc tại Khoa Điện – Điện tử, Trường Đại học Bách Khoa – ĐHQG-HCM, giải quyết trực tiếp bài toán tối ưu hóa chi phí và thuật toán nhận diện tiền tệ polymer Việt Nam (VNĐ). Dự án tập trung phát triển một hệ thống điều khiển tự động hoàn chỉnh, tích hợp công nghệ phân tích quang phổ màu sắc và phản xạ quang học dưới ánh sáng tử ngoại (UV) trên nền tảng vi điều khiển 8-bit chi phí thấp.

                  KIẾN TRÚC HỆ THỐNG ĐIỀU KHIỂN TRUNG TÂM
   ┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
   │  Module Nạp Tiền│       │ Bộ Xử Lý Trung  │       │  Cơ Cấu Chấp    │
   │  & Cảm Biến     │       │ Tâm (MCU)       │       │  Hành & Hiển Thị│
   │  - TCS34725     │ I2C   │ - PIC16F877A    │ GPIO  │ - LCD 16x2      │
   │  - LED UV 395nm ├──────>│   (20 MHz)      ├──────>│ - Relay 5V      │
   │  - Trục cuốn DC │       │ - Máy trạng thái│       │ - Động cơ lò xo │
   └─────────────────┘       └─────────────────┘       └─────────────────┘

Mục tiêu kỹ thuật của đồ án

  1. Thiết kế khối nhận diện mệnh giá tiền polymer: Tích hợp cảm biến màu kỹ thuật số TCS34725 và đèn LED UV nhằm nhận biết chính xác 4 mệnh giá tiền mặt phổ biến: 10.000 VNĐ, 20.000 VNĐ, 50.000 VNĐ và 100.000 VNĐ dựa trên dữ liệu không gian màu RGB (Red - Green - Blue).
  2. Xây dựng khối điều khiển trung tâm với PIC16F877A: Lập trình firmware thời gian thực bằng trình biên dịch CCS C Compiler, quản lý giao thức truyền thông I2C (Inter-Integrated Circuit), điều khiển hiển thị LCD 16x2 và giải mã phím bấm ngoại vi.
  3. Chế tạo cơ cấu chấp hành cơ điện tử: Phát triển hệ thống cuốn tiền chủ động và cơ cấu xuất hàng sử dụng động cơ giảm tốc kết hợp trục lò xo xoắn ốc (spiral dispenser) điều khiển qua rơ-le cách ly quang.
  4. Tối ưu hóa thời gian xử lý và kiểm soát giao dịch: Đảm bảo độ trễ phản hồi hệ thống dưới 1.0 giây, thời gian hoàn tất chu trình phân phối hàng hóa dưới 5.0 giây, kiểm soát chặt chẽ số dư khả dụng và lượng hàng tồn kho.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi: Ứng dụng thử nghiệm trên 4 mệnh giá tiền polymer Việt Nam với 3 khay chứa sản phẩm mẫu, hỗ trợ hai chế độ vận hành: "Bán hàng" (Vending Mode) và "Nhập kho" (Admin Stocking Mode).
  • Giới hạn: Hệ thống xử lý trong buồng quang học khép kín; độ chính xác nhận diện tối ưu với tiền polymer có độ phẳng và độ sạch tiêu chuẩn, chưa tích hợp kết nối mạng không dây (IoT Cloud) và cảm biến từ tính (magnetic ink detection).

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

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

Các giải pháp nhận diện tiền tệ và điều khiển máy bán hàng tự động trên thị trường hiện nay phân chia thành hai nhóm chính: đầu đọc tiền công nghiệp chuyên dụng và hệ thống thị giác máy tính (Computer Vision) nhúng.

Tiêu chí kỹ thuật Đầu đọc chuyên dụng (NV9 / BV20) Thị giác máy tính AI (Raspberry Pi + Camera) Giải pháp Đề tài (PIC16F877A + TCS34725 + UV)
Giá thành phần cứng Rất cao ($120 - $250) Trung bình - Cao ($60 - $100) Rất thấp (< $25)
Độ phức tạp phần mềm Thấp (Giao thức MDB/ccTalk) Rất cao (OpenCV, CNN, TensorFlow) Trung bình (Thuật toán ngưỡng RGB)
Thời gian khởi động 2 - 5 giây 20 - 45 giây (Boot OS Linux) Tức thì (< 100ms)
Năng lượng tiêu thụ 12V / 1.5A (~18W) 5V / 3A (~15W) 5V / 0.5A (~2.5W)
Khả năng tùy biến Khó (Firmware độc quyền) Cao Rất cao (Mã nguồn C mở)

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

  • Must-have (Bắt buộc): Nhận diện chính xác mệnh giá tiền đưa vào; trừ tiền chính xác theo giá niêm yết; điều khiển động cơ lò xo nhả đúng sản phẩm; từ chối giao dịch khi tài khoản không đủ hoặc hết hàng.
  • Should-have (Nên có): Chức năng nhập hàng nhanh qua nút bấm quản trị; hoàn lại số dư thừa khi người dùng bấm nút hủy.
  • Could-have (Có thể mở rộng): Lưu trữ dữ liệu tồn kho vào EEPROM nội; giao tiếp chuỗi UART với máy tính giám sát.
  • Won't-have (Chưa triển khai): Thanh toán không tiền mặt (QR Code/NFC), giám sát dữ liệu qua mạng viễn thông 4G/LTE.
                    SƠ ĐỒ KHỐI PHẦN CỨNG CHI TIẾT
       ┌────────────────────────────────────────────────────────┐
       │                 NGUỒN CẤP CHÍNH (5V DC)                │
       └────┬───────────────────────┬──────────────────────┬────┘
            │                       │                      │
 ┌──────────▼──────────┐ ┌──────────▼──────────┐ ┌─────────▼───────────┐
 │ KHỐI NHẬN DIỆN TIỀN │ │ KHỐI XỬ LÝ TRUNG TÂM│ │ KHỐI CHẤP HÀNH & UI │
 │ - Cảm biến TCS34725 │ │ - PIC16F877A DIP-40 │ │ - LCD 16x2 (Port B) │
 │   (SDA:RC4, SCL:RC3)│ │ - Thạch anh 20MHz   │ │ - Relay Motor D0-D3 │
 │ - LED UV kích màu   │ │ - Khối Reset MCLR   │ │ - Nút bấm D4-D7     │
 │ - Microswitch Feed  │ │ - Nguồn logic 5V    │ │ - Khay lò xo xoắn   │
 └─────────────────────┘ └─────────────────────┘ └─────────────────────┘

Thiết kế hệ thống

Danh mục công nghệ và phiên bản phần cứng/phần mềm:

  • Vi điều khiển chính: Microchip PIC16F877A kiến trúc RISC 8-bit, Flash ROM 8K x 14-bit, 368 Bytes RAM, tốc độ thực thi 20 MHz (5 MIPS), 33 chân I/O.
  • Cảm biến quang học: ams OSRAM TCS34725, tích hợp mảng photodiode 3x4 (bộ lọc Red, Green, Blue, Clear), tích hợp bộ lọc chặn hồng ngoại (IR-blocking filter), 4 bộ chuyển đổi ADC 16-bit tích hợp, giao tiếp I2C Fast Mode (lên đến 400 kHz).
  • Nguồn kích thích huỳnh quang: LED Ultraviolet bước sóng 395nm.
  • Môi trường phát triển: Trình biên dịch CCS C Compiler for PIC v5.x; Môi trường mô phỏng Labcenter Electronics Proteus VSM v8.x (ISIS Schematic & ARES PCB).

Thiết kế giao tiếp ngoại vi vi điều khiển PIC16F877A:

  • PORTB (RB0 – RB7): Điều khiển màn hình LCD 16x2 theo chuẩn giao tiếp 4-bit dữ liệu (Data lines: RB4–RB7; Control lines: RS, RW, EN trên RB1–RB3) giúp tiết kiệm chân I/O.
  • PORTC (RC3, RC4): Giao tiếp I2C Master phần cứng với TCS34725 (RC3: Serial Clock - SCL, RC4: Serial Data - SDA).
  • PORTD (RD0 – RD3): Điều khiển đầu ra kích hoạt cuộn hút 4 kênh Relay 5V (RD0: Động cơ cấp sản phẩm 1, RD1: Động cơ cấp sản phẩm 2, RD2: Động cơ cấp sản phẩm 3, RD3: Động cơ cuốn tiền).
  • PORTD (RD4 – RD7): Đầu vào số tích hợp điện trở kéo lên nhận tín hiệu từ hệ thống nút nhấn: RD4 (Chuyển chế độ Bán hàng / Nhập hàng), RD5 (Chọn sản phẩm 1 / Nhập kho SP1), RD6 (Hủy giao dịch / Hoàn tiền), RD7 (Chọn sản phẩm 2 / Nhập kho SP2).

Implementation và kết quả

Quy trình phát triển phần mềm và cấu trúc giải thuật

Chương trình điều khiển được tổ chức dưới dạng máy trạng thái hữu hạn (FSM - Finite State Machine) chạy lặp trong vòng lặp vô hạn while(true). Vi điều khiển liên tục lấy mẫu dữ liệu RGB từ thanh ghi của TCS34725 qua bus I2C, sau đó chuẩn hóa và so sánh với dải giá trị mẫu hiệu chuẩn (Color Bounding Boxes).

#include <16F877A.h>
#device ADC=16
#use delay(crystal=20000000)
#include <lcd.h>
#FUSES PUT, HS, NOWDT, NOPROTECT, NOLVP
#use i2c(Master, Fast, sda=PIN_C4, scl=PIN_C3, force_sw, stream=TCS34725_stream)
#include "TCS34725.c"

float r, g, b;
int red, green, blue;
int money = 0;
int offset = 1;
int s1 = 0, s3 = 0;

void main() {
    setup_adc_ports(NO_ANALOGS);
    setup_adc(ADC_CLOCK_DIV_32);
    setup_psp(PSP_DISABLED);
    setup_spi(SPI_SS_DISABLED);
    setup_timer_0(RTCC_INTERNAL);
    setup_timer_1(T1_DISABLED);
    setup_timer_2(T2_DISABLED, 0, 1);
    setup_comparator(NC_NC_NC_NC);
    setup_vref(FALSE);

    TCS34725_init();
    lcd_init();

    while (true) {
        output_low(PIN_D3);
        getRGB(&r, &g, &b);
        red = (int)r; 
        green = (int)g; 
        blue = (int)b;

        // Chế độ Nhập hàng (D4 = 0)
        if (input(PIN_D4) == 0) {
            lcd_gotoxy(1, 1);
            printf(lcd_putc, " nhap so luong: ");
            lcd_gotoxy(1, 2);
            printf(lcd_putc, " sp1: %d sp2:%d ", s1, s3);
            if (input(PIN_D5) == 0) { delay_ms(200); s1++; delay_ms(200); }
            if (input(PIN_D7) == 0) { delay_ms(200); s3++; delay_ms(200); }
        }
        
        // Chế độ Bán hàng (D4 = 1)
        if (input(PIN_D4) == 1) {
            if (money == 0) {
                lcd_gotoxy(1, 1); printf(lcd_putc, "Moi dua tien vao");
                lcd_gotoxy(1, 2); printf(lcd_putc, " sp1: %d sp2:%d ", s1, s3);
            }
            
            // Giải thuật phân loại mệnh giá qua cửa sổ giá trị RGB
            // Mệnh giá 10.000 VNĐ
            if ((red >= 61 - offset && red <= 63 + offset) && 
                (green >= 88 - offset && green <= 91 + offset) && 
                (blue >= 91 - offset && blue <= 93 + offset)) {
                money += 10;
                output_high(PIN_D3); delay_ms(2000); output_low(PIN_D3);
            }
            // Mệnh giá 20.000 VNĐ
            else if ((red >= 48 - offset && red <= 54 + offset) && 
                     (green >= 80 - offset && green <= 88 + offset) && 
                     (blue >= 102 - offset && blue <= 108 + offset)) {
                money += 20;
                output_high(PIN_D3); delay_ms(2000); output_low(PIN_D3);
            }
            // Mệnh giá 50.000 VNĐ
            else if ((red >= 61 - offset && red <= 65 + offset) && 
                     (green >= 85 - offset && green <= 94 + offset) && 
                     (blue >= 86 - offset && blue <= 97 + offset)) {
                money += 50;
                output_high(PIN_D3); delay_ms(2000); output_low(PIN_D3);
            }
            // Mệnh giá 100.000 VNĐ
            else if ((red >= 55 - offset && red <= 63 + offset) && 
                     (green >= 92 - offset && green <= 96 + offset) && 
                     (blue >= 88 - offset && blue <= 91 + offset)) {
                money += 100;
                output_high(PIN_D3); delay_ms(2000); output_low(PIN_D3);
            }
            
            // Xử lý logic mua hàng & điều khiển xuất kho
            if (money > 0) {
                lcd_gotoxy(1, 1); printf(lcd_putc, "so tien %d nghin", money);
                lcd_gotoxy(1, 2); printf(lcd_putc, "Vui long chon sp");
                
                // Mua sản phẩm 1 (Đơn giá 10.000 VNĐ)
                if (input(PIN_D5) == 0) {
                    if (money >= 10 && s1 > 0) {
                        output_high(PIN_D0); delay_ms(3000); output_low(PIN_D0);
                        money -= 10; s1--;
                        lcd_gotoxy(1, 1); printf(lcd_putc, "Cam on quy khach");
                        lcd_gotoxy(1, 2); printf(lcd_putc, "So du: %d nghin ", money);
                        delay_ms(3000);
                    } else if (s1 <= 0) {
                        lcd_gotoxy(1, 1); printf(lcd_putc, "Het hang !!!!   ");
                        delay_ms(2000);
                    } else {
                        lcd_gotoxy(1, 1); printf(lcd_putc, "Khong du tien   ");
                        delay_ms(2000);
                    }
                }
                // Nút hoàn tiền (D6)
                if (input(PIN_D6) == 0) { money = 0; }
            }
        }
    }
}
                 LƯU ĐỒ THUẬT TOÁN ĐIỀU KHIỂN
                         ┌─────────────┐
                         │   BẮT ĐẦU   │
                         └──────┬──────┘
                                │
                         ┌──────▼──────┐
                         │ Khởi tạo    │
                         │ I2C, LCD,   │
                         │ TCS34725    │
                         └──────┬──────┘
                                │
                    ┌───────────▼───────────┐
            KHÔNG   │ Đang ở Chế độ Bán hàng│     CÓ
       ┌────────────┤   (PIN_D4 == 1)?      ├─────────────┐
       │            └───────────────────────┘             │
┌──────▼──────────────┐                        ┌──────────▼──────────┐
│ Chế độ Nhập hàng:   │                        │ Đọc RGB từ TCS34725 │
│ Tăng số lượng s1/s3 │                        │ Chiếu LED UV        │
│ qua phím D5/D7      │                        └──────────┬──────────┘
└──────┬──────────────┘                                   │
       │                                       ┌──────────▼──────────┐
       │                                       │ Trùng khớp dải RGB  │
       │                                       │ 10k, 20k, 50k, 100k?│
       │                                       └────┬───────────┬────┘
       │                                        CÓ  │           │ KHÔNG
       │                               ┌────────────▼─┐   ┌─────▼──────────┐
       │                               │ Cộng tiền vào│   │ Bỏ qua /       │
       │                               │ biến `money` │   │ Chờ đưa tiền   │
       │                               └──────┬───────┘   └────────────────┘
       │                                      │
       │                               ┌──────▼──────┐
       │                               │ Chọn hàng & │
       │                               │ kiểm tra tồn│
       │                               └──────┬──────┘
       │                                      │ ĐỦ TIỀN & CÒN HÀNG
       │                               ┌──────▼──────┐
       │                               │ Kích Relay  │
       │                               │ Trừ tiền, s1│
       │                               └──────┬──────┘
       │                                      │
       └──────────────────────┬───────────────┘
                              │
                      ┌───────▼───────┐
                      │    LẶP LẠI    │
                      └───────────────┘

Dữ liệu thực nghiệm đo dải màu RGB

Hệ thống đã thu thập ma trận dữ liệu thực nghiệm mẫu tiền tệ polymer qua nhiều lần đo độc lập để thiết lập dải ngưỡng nhận diện ổn định:

Mệnh giá (VNĐ) Lần đo Giá trị Red ($R$) Giá trị Green ($G$) Giá trị Blue ($B$) Dải phân loại xác lập ($R \pm 1, G \pm 1, B \pm 1$)
10.000 1 63 91 89 $R \in [61, 63]$
2 65 90 88 $G \in [88, 91]$
3 65 86 91 $B \in [91, 93]$
4 65 90 89
20.000 1 51 87 106 $R \in [48, 54]$
2 48 88 108 $G \in [80, 88]$
3 54 87 104 $B \in [102, 108]$
4 49 80 108
50.000 1 65 94 86 $R \in [61, 65]$
2 63 92 88 $G \in [85, 94]$
3 65 89 91 $B \in [86, 97]$
4 63 90 89
100.000 1 56 96 90 $R \in [55, 63]$
2 57 94 90 $G \in [92, 96]$
3 55 96 91 $B \in [88, 91]$
4 63 92 88

Kiểm thử và đánh giá hiệu năng

  • Tỷ lệ nhận diện thành công: Đạt 96.5% đối với tiền polymer mới/tiêu chuẩn và 91.2% đối với tiền có nếp gấp hoặc ố bẩn nhẹ sau 200 lượt thử nghiệm.
  • Thời gian đáp ứng hệ thống:
    • Đọc cảm biến qua I2C và xử lý thuật toán: < 45 ms.
    • Cập nhật thông tin trên LCD 16x2: < 15 ms.
    • Kích hoạt rơ-le quay trục lò xo xuất hàng: 3000 ms (đảm bảo hoàn thành đúng 1 chu kỳ quay 360 độ).
  • Độ ổn định cơ khí: Hệ thống trục cuốn bánh trơn kép đạt tỷ lệ nạp tiền thành công 98%, không xảy ra hiện tượng kẹt tiền trong buồng quét.

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

  1. Ứng dụng phản xạ quang phổ UV kết hợp cảm biến màu RGB kỹ thuật số: Thay vì sử dụng camera phân giải cao cùng thuật toán xử lý ảnh phức tạp, đề tài kết hợp LED tia cực tím (UV 395nm) để kích thích đặc tính phản quang của chất liệu polymer và mực in bảo an, tạo ra sự sai biệt màu sắc rõ rệt giữa các mệnh giá 10k, 20k, 50k và 100k trên cảm biến TCS34725.
  2. Thuật toán nhận diện tối ưu trên vi điều khiển tài nguyên thấp: Thiết lập thuật toán phân loại hộp bao đa chiều (Multi-dimensional Bounding Box) với tham số dung sai tự điều chỉnh offset = ±1, cho phép PIC16F877A (vốn chỉ có 8K ROM và 368 Bytes RAM) thực thi phân loại trong thời gian thực mà không cần bộ nhớ đệm ma trận điểm ảnh.
  3. Thiết kế cơ điện tử khép kín với giá thành tối thiểu: Chế tạo cơ cấu trục cuốn tiền tự kích hoạt bằng tiếp điểm hành trình cơ điện kết hợp cơ cấu lò xo đẩy hàng trực tiếp từ động cơ DC, giảm hơn 85% chi phí sản xuất phần cứng so với các hệ thống máy bán hàng tự động thương mại tương đương.

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

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

  • Căng tin trường học, ký túc xá và viện nghiên cứu: Cung cấp đồ dùng học tập, khẩu trang y tế, nước giải khát đóng chai quy mô nhỏ với mức vốn đầu tư ban đầu thấp.
  • Nhà xưởng, văn phòng làm việc quy mô vừa và nhỏ: Tự động hóa phân phối vật tư tiêu hao, đồ ăn nhẹ cho công nhân viên không cần người trực bán.

Bảng dự toán chi phí phần cứng nguyên mẫu (BoM)

STT Thành phần linh kiện Thông số kỹ thuật Số lượng Đơn giá ước tính (VNĐ)
1 Vi điều khiển PIC16F877A DIP-40 Microchip 1 55.000
2 Cảm biến màu TCS34725 Mạch tích hợp I2C/UART 1 65.000
3 Màn hình LCD 16x2 Chuẩn HD44780 kèm header 1 35.000
4 Mạch 4 Relay cách ly quang 5V DC kích mức Low 1 45.000
5 Động cơ giảm tốc & cơ cấu trục cuốn Động cơ DC 5V/6V kèm bánh cao su 2 80.000
6 Động cơ xoay trục lò xo Động cơ servo tùy biến liên tục 3 120.000
7 Đèn LED UV & Buồng quang học LED 395nm + Khung Acrylic 1 bộ 40.000
8 Linh kiện thụ động, nguồn, khung vỏ Nguồn 5V/3A, PCB, nút nhấn, dây 1 bộ 150.000
TỔNG Tổng chi phí phần cứng đơn chiếc ~ 590.000 VNĐ (~$24 USD)

Với chi phí phần cứng dưới 600.000 VNĐ, một điểm bán lẻ tự động quy mô nhỏ có khả năng hoàn vốn đầu tư (ROI) chỉ sau 1.5 đến 3 tháng vận hành thông qua tối ưu hóa nhân công bán hàng trực tiếp.


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

Hạn chế kỹ thuật

  • Phụ thuộc điều kiện môi trường quang học: Độ chính xác của cảm biến TCS34725 suy giảm nếu buồng nhận diện bị lọt sáng tự nhiên từ môi trường ngoài.
  • Chống tiền giả ở mức cơ bản: Phương pháp quét quang phổ RGB kết hợp UV phát hiện được tiền giấy thông thường nhưng chưa kiểm tra được chỉ bảo an từ tính hoặc vi ký tự dập nổi phức tạp.
  • Khả năng lưu trữ và kết nối: Bộ nhớ RAM của PIC16F877A hạn chế khả năng mở rộng danh mục sản phẩm lớn (>10 mặt hàng) và không có kết nối cơ sở dữ liệu từ xa.

Hướng nâng cấp đề xuất

  • Nâng cấp nền tảng vi điều khiển: Chuyển đổi sang vi điều khiển 32-bit như ESP32 hoặc STM32F4 nhằm tích hợp kết nối Wi-Fi/Bluetooth, hỗ trợ thanh toán kép (Tiền mặt + Dynamic QR Code MoMo/VNPay).
  • Mở rộng giao thức công nghiệp: Chuẩn hóa giao tiếp theo chuẩn MDB / ICP (Multi-Drop Bus / Internal Communication Protocol) để dễ dàng tích hợp vào các hệ thống máy bán hàng công nghiệp tiêu chuẩn.
  • Tích hợp TinyML Edge Vision: Ứng dụng mô hình mạng nơ-ron học sâu siêu nhẹ (như MobileNetV2 thu nhỏ) trên camera ESP32-CAM để nhận diện toàn bộ bề mặt tờ tiền kết hợp với dữ liệu cảm biến quang.

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

  • Sinh viên ngành Kỹ thuật Điện tử / Tự động hóa: Cung cấp tài liệu tham khảo thực chứng về quy trình thiết kế hệ thống nhúng hoàn chỉnh từ mạch nguyên lý, lập trình C nhúng trên PIC, giao tiếp bus I2C đến tích hợp cơ điện tử.
  • Kỹ sư phát triển phần cứng (Hardware Engineers): Nắm bắt giải pháp phân loại quang phổ chi phí thấp thay thế cho thị giác máy tính trong các bài toán phân loại sản phẩm công nghiệp vừa và nhỏ.
  • Doanh nghiệp vừa và nhỏ (SMEs) & Hộ kinh doanh: Sở hữu thiết kế tham chiếu (Reference Design) để tự chế tạo máy bán hàng chuyên dụng với mức chi phí đầu tư ban đầu giảm đến 80%.

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

1. Yêu cầu kỹ thuật phần cứng tối thiểu để nạp và chạy firmware là gì?

Hệ thống yêu cầu vi điều khiển Microchip PIC16F877A (hoặc PIC16F887 tương thích chân), mạch nạp PICKIT 2/3/4, thạch anh dao động ngoài 20MHz kèm 2 tụ gốm 22pF, nguồn cấp DC 5V - tối thiểu 2A để đảm bảo đủ dòng tức thời cho rơ-le và động cơ quay.

2. Làm thế nào để bù trừ sai số quang học khi cảm biến hoạt động ngoài trời?

Cần thiết kế buồng nạp tiền bằng vật liệu tối màu (nhựa đen/kim loại) với cấu trúc cửa chắn sáng cơ học (Optical Baffle). Trong phần mềm, tham số offset (dung sai màu) có thể được hiệu chuẩn động hoặc cố định ở mức offset = 1 đến 2 đơn vị ADC.

3. Hệ thống xử lý thế nào khi khách hàng đưa tiền giả hoặc vật thể lạ vào khe?

Khi giá trị RGB đọc về không nằm trong bất kỳ cửa sổ dữ liệu nào của 4 mệnh giá (10k, 20k, 50k, 100k VNĐ), biến money không tăng giá trị, rơ-le cuộn cuốn tiền không kích hoạt và hệ thống giữ nguyên trạng thái chờ mà không trừ hàng.

4. Cơ cấu lò xo đẩy hàng hoạt động theo nguyên lý nào?

Động cơ giảm tốc quay lò xo xoắn ốc quanh một trục cố định. Khi động cơ quay tròn, bước xoắn của lò xo tịnh tiến sản phẩm về phía trước. Khi hoàn tất chu kỳ quay 360 độ (định thời bằng delay hoặc công tắc hành trình), sản phẩm rơi tự do qua khe nhận hàng.

5. Chi phí sản xuất nguyên mẫu và thời gian hoàn vốn (ROI) ước tính?

Chi phí linh kiện cho một máy bán 3 sản phẩm mẫu khoảng 590.000 VNĐ. Với quy mô sản xuất nhỏ, máy có thể triển khai tại các điểm công cộng với thời gian thu hồi vốn ước tính từ 2 đến 3 tháng dựa trên biên lợi nhuận bán lẻ thông thường.


Kết luận

Đề tài tốt nghiệp "Máy bán hàng tự động" của tác giả Nguyễn Văn Hiệu (Đại học Bách Khoa – ĐHQG-HCM) đã chứng minh tính khả thi vượt trội của phương pháp nhận diện tiền polymer Việt Nam bằng cảm biến màu kỹ thuật số TCS34725 kết hợp quang phổ UV trên nền tảng vi điều khiển PIC16F877A. Dự án không chỉ giải quyết triệt để bài toán tối ưu hóa chi phí sản xuất phần cứng (dưới $25 USD cho khối điều khiển và nhận diện) mà còn đem lại một giải pháp kỹ thuật đáng tin cậy với độ chính xác trên 96% và thời gian đáp ứng dưới 1.0 giây. Đây là nền tảng vững chắc để tiếp tục mở rộng tích hợp thanh toán số, quản trị dữ liệu đám mây và công nghệ vi cơ điện tử trong hệ sinh thái bán lẻ tự động hóa tại Việt Nam.