Giới thiệu dự án

Trong bối cảnh đô thị hóa và sự gia tăng của các mối đe dọa an ninh dân dụng, nhu cầu về hệ thống giám sát tự động, độ tin cậy cao trở thành ưu tiên hàng đầu. Theo các thống kê từ ngành an ninh gia đình, các hệ thống báo động truyền thống sử dụng cảm biến hồng ngoại thụ động (PIR - Passive Infrared Sensor) ghi nhận tỷ lệ báo động giả (false positive rate) lên tới 35–40% do ảnh hưởng từ vật nuôi, rèm cửa chuyển động hoặc biến thiên nhiệt độ môi trường. Ngược lại, các hệ thống camera giám sát truyền thống (CCTV) phần lớn mang tính chất ghi hình thụ động (passive recording), thiếu cơ chế phản hồi thời gian thực tới chủ sở hữu khi có xâm nhập bất hợp pháp.

Đồ án tốt nghiệp "Ứng dụng xử lý ảnh phát hiện người và báo động dùng Sim900" (Ngành Công nghệ Kỹ thuật Điện tử - Truyền thông, Trường Đại học Sư phạm Kỹ thuật TP.HCM) giải quyết trực tiếp bài toán này bằng cách kết hợp thuật toán thị giác máy tính (Computer Vision) và hệ thống nhúng viễn thông GSM (Global System for Mobile Communications).

[Webcam (640x480)] ──> [PC / MATLAB (Trừ nền + PCA)] ──> [RS232/MAX232] ──> [PIC16F887 #1] ──> [PIC16F887 #2] ──> [Module SIM900] ──> [SMS tới Chủ nhà]

Mục tiêu đề tài

  1. Xây dựng thuật toán tiền xử lý ảnh và trích xuất đặc trưng dáng người dựa trên phương pháp phân tích thành phần chính (PCA - Principal Component Analysis).
  2. Thiết kế giao diện xử lý trung tâm trên nền tảng phần mềm MATLAB để nhận diện đối tượng theo thời gian thực.
  3. Thiết kế và thi công phần cứng module điều khiển trung tâm sử dụng vi điều khiển PIC16F887 kết hợp vi mạch chuyển đổi mức logic MAX232.
  4. Tích hợp module viễn thông SIM900 truyền tải cảnh báo SMS tức thời và cho phép điều khiển tắt/bật hệ thống từ xa thông qua tập lệnh AT (Attention Commands).
  5. Đánh giá độ chính xác nhận diện và độ trễ cảnh báo trong môi trường thực tế.

Phương pháp tiếp cận và phạm vi

  • Giải pháp tiếp cận: Sử dụng phương pháp trừ nền kết hợp trích xuất đặc trưng toàn thân bằng PCA nhằm giảm chiều dữ liệu từ không gian điểm ảnh lớn về không gian vector riêng (Eigenfaces/Eigen-bodies), kết hợp phân loại khoảng cách Euclidean. Cơ chế báo động sử dụng kiến trúc vi điều khiển kép (Dual-MCU) để giải quyết hạn chế phần cứng đơn cổng USART.
  • Phạm vi và giới hạn:
    • Khoảng cách quan sát định vị cố định ở $4.0\text{ m}$.
    • Độ phân giải camera tối thiểu $640 \times 480\text{ pixels}$.
    • Môi trường giám sát có phông nền tĩnh và độ tương phản quang học xác định giữa đối tượng và hậu cảnh.

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

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

Tiêu chí Cảm biến PIR truyền thống Xử lý ảnh nhúng (OpenCV / Haar-like) Hệ thống đề xuất (PCA + PIC16F887 + SIM900)
Độ chính xác Thấp (< 65%, dễ nhiễu nhiệt) Cao (85–95%) Cao (> 90% trong điều kiện chuẩn)
Khả năng phân biệt người/vật Không thể Tốt Tốt (dựa trên tập mẫu vector riêng)
Chi phí triển khai Rất thấp (< 20 USD) Cao (Raspberry Pi/IPC > 150 USD) Trung bình (40–60 USD)
Kênh truyền cảnh báo Còi hú tại chỗ Internet / Wi-Fi / Cloud Mạng di động toàn cầu GSM (SMS/Call)
Độ phụ thuộc hạ tầng mạng Độc lập Phụ thuộc Internet/Wi-Fi cố định Độc lập hoàn toàn với Internet

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Tách nền chuyển động, lọc nhiễu trung vị (Median Filter), trích xuất đặc trưng PCA, gửi SMS cảnh báo khi phát hiện người qua SIM900, hiển thị LCD trạng thái.
  • Should have (Nên có): Cơ chế phản hồi SMS để tắt còi báo động từ xa, giao diện người dùng GUI giám sát trạng thái xử lý ảnh.
  • Could have (Có thể có): Khả năng điều chỉnh ngưỡng nhị phân thích nghi (Adaptive Thresholding).
  • Won't have (Chưa thực hiện): Nhận diện đa đối tượng đồng thời trong môi trường ánh sáng phức tạp.

Thiết kế hệ thống

graph TD
    A[Camera quan sát 640x480] -->|USB Video Stream| B[PC: Xử lý ảnh MATLAB]
    B -->|Thuật toán Tiền xử lý & PCA| C{Phát hiện người?}
    C -->|YES| D[Giao tiếp UART COM Port]
    C -->|NO| A
    D -->|RS232 Logic Levels| E[IC MAX232 Level Shifter]
    E -->|TTL Logic| F[Vi điều khiển 1: PIC16F887]
    F -->|Đồng bộ I/O| G[Vi điều khiển 2: PIC16F887]
    G -->|Tập lệnh AT Command UART| H[Module SIM900 GSM/GPRS]
    G -->|Parallel 4-bit| I[LCD 16x2 / LM044L]
    G -->|Transistor Driver C1815| J[Còi báo LS2 + LED Red]
    H -->|Sóng vô tuyến GSM 900/1800MHz| K[Điện thoại di động người dùng]
    K -->|SMS Phản hồi Tắt báo động| H

Ngăn xếp công nghệ (Technology Stack)

  • Môi trường xử lý thuật toán: MATLAB R2014a/R2015b (Image Processing Toolbox).
  • Phần mềm nhúng & Mô phỏng: Proteus Design Suite 8.1, CCS C Compiler / MPLAB XC8.
  • Phần cứng trung tâm: 02 x Vi điều khiển Microchip PIC16F887 (Tần số dao động thạch anh $4.0\text{ MHz}$).
  • Giao tiếp & Truyền dẫn: Chuẩn UART bất đồng bộ (Baud rate: 9600 bps, 8 data bits, 1 stop bit, no parity), IC chuyển đổi mức MAX232.
  • Khối nguồn công suất: Module hạ áp xung LM2596-ADJ Step-Down ($V_{in} = 12\text{VDC}$, $V_{out} = 4.0\text{VDC}$, $I_{peak} = 3.0\text{ A}$).

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

Dự án áp dụng mô hình phát triển hệ thống nhúng lặp tuần tự (V-Model), kết hợp kiểm định chéo giữa phần mềm mô phỏng và phần cứng thực tế:

  1. Thiết kế & Khảo sát: Tính toán mạch định thời, chọn tham số mạch dao động và dòng kích thích LED/Relay.
  2. Xây dựng giải thuật thị giác: Phát triển pipeline tiền xử lý ảnh và hàm đại số tuyến tính cho PCA trên MATLAB.
  3. Thiết kế phần cứng: Vẽ schematic, layout PCB trên Proteus, thi công mạch in và hàn linh kiện.
  4. Tích hợp hệ thống: Lập trình firmware điều khiển ngoại vi và kiểm thử giao tiếp hai chiều giữa PC và khối GSM.

Implementation và kết quả

Quy trình tiền xử lý ảnh và thuật toán PCA

Hệ thống xử lý luồng ảnh đầu vào qua chuỗi thuật toán nghiêm ngặt nhằm triệt tiêu nhiễu môi trường trước khi trích xuất vector đặc trưng:

% 1. Trừ ảnh thu nhận và ảnh nền
Z = imsubtract(X_frame, Y_background);

% 2. Chuyển đổi sang ảnh xám (Grayscale conversion)
% Công thức chuẩn: I(x,y) = 0.2989*R + 0.5870*G + 0.1140*B
I_gray = rgb2gray(Z);

% 3. Mở rộng dải động tương phản (Contrast Stretching)
I_adjusted = imadjust(I_gray, stretchlim(I_gray), []);

% 4. Phân đoạn nhị phân với ngưỡng xác định T
T = graythresh(I_adjusted);
I_binary = im2bw(I_adjusted, T);

% 5. Lọc phi tuyến trung vị (Median Filter 3x3) loại bỏ nhiễu muối tiêu
I_filtered = medfilt2(I_binary, [3 3]);

% 6. Tô lấp vùng rỗng hình thái học (Morphological Hole Filling)
I_filled = imfill(I_filtered, 'holes');

Giải thuật PCA giảm chiều không gian

Mỗi bức ảnh sau khi chuẩn hóa kích thước được chuyển vị thành vector 1 chiều $S_i \in \mathbb{R}^{N}$ với $N = W \times H$. Với tập mẫu huấn luyện gồm $M$ ảnh, vector trung bình $\vec{m}$ được xác định:

$$\vec{m} = \frac{1}{M}\sum_{i=1}^{M} S_i$$

Ma trận sai lệch trung bình: $A = [\Phi_1, \Phi_2, \dots, \Phi_M]$ với $\Phi_i = S_i - \vec{m}$ ($A$ có kích thước $N \times M$).

Để tránh việc trực tiếp tính toán ma trận hiệp phương sai kích thước khổng lồ $C = A \cdot A^T$ ($N \times N$, ví dụ $46000 \times 46000$ khi ảnh có kích thước $200 \times 230$), thuật toán sử dụng kỹ thuật đại số tuyến tính tính toán trên ma trận thay thế $L = A^T \cdot A$ ($M \times M$):

$$A^T A \cdot v_i = \mu_i v_i \implies A A^T (A v_i) = \mu_i (A v_i)$$

Vector riêng của không gian ảnh thực sự là $u_i = A v_i$. Sau khi chuẩn hóa $|u_i| = 1$, ta giữ lại $k$ vector có trị riêng lớn nhất ($k \le M$) để tạo ma trận không gian đặc trưng $U = [u_1, u_2, \dots, u_k]$.

Ảnh cần nhận dạng $R$ được chiếu vào không gian đặc trưng: $\Omega_r = U^T (R - \vec{m})$. Khoảng cách Euclidean phân loại đối tượng:

$$\epsilon_i = |\Omega_r - \Omega_i|2 = \sqrt{\sum{j=1}^{k} (\omega_{r,j} - \omega_{i,j})^2}$$

Nếu $\min(\epsilon_i) < \theta_{threshold}$, hệ thống xác nhận đối tượng xâm nhập là người.

+-----------------------------------------------------------------------------------+
|               BẢNG TÍNH TOÁN THÔNG SỐ PHẦN CỨNG & ĐỊNH THỜI                       |
+-----------------------------------------------------------------------------------+
| 1. Chu kỳ máy PIC16F887 (F_osc = 4MHz):                                           |
|    T_may = 4 / F_osc = 4 / (4 * 10^6) = 1.0 microsecond                           |
| 2. Thời gian Reset tối thiểu yêu cầu: 2 chu kỳ máy (2.0 us)                       |
|    Mạch RC thực tế chọn: R5 = 1k, C1 = 10uF => tau = R*C = 10 ms (an toàn cao)    |
| 3. Dòng hạn chế chân điều khiển LED:                                              |
|    R_limit = (V_cc - V_led) / I_led = (5.0V - 3.0V) / 10mA = 200 Ohm              |
|    => Chuẩn hóa giá trị linh kiện thương mại: R4 = 330 Ohm (I_led = 6.06 mA)      |
+-----------------------------------------------------------------------------------+

Giải pháp kiến trúc phần cứng vi điều khiển kép

Do vi điều khiển PIC16F887 chỉ tích hợp 01 module phần cứng EUSART (chân RC6/TXRC7/RX), việc kết nối đồng thời với máy tính (RS232) và module SIM900 (yêu cầu giao tiếp nối tiếp liên tục) dẫn đến nghẽn bus hoặc xung đột ngắt nhận.

Nhóm tác giả đã đưa ra giải pháp kiến trúc hai vi điều khiển:

  • PIC16F887 #1: Chuyên trách nhận dữ liệu từ cổng COM của PC qua IC MAX232, thực hiện tiền xử lý tín hiệu cảnh báo và gửi tín hiệu logic đồng bộ hóa sang MCU #2.
  • PIC16F887 #2: Quản lý giao tiếp tập lệnh AT với SIM900, xử lý truyền nhận SMS thời gian thực, điều khiển chuông báo LS2 và hiển thị trạng thái lên LCD.
// Mã nguồn Embedded C (PIC16F887 #2) - Điều khiển SIM900
#include <16F887.h>
#use delay(crystal=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=SIM900)

void send_alert_sms(char* phone_num, char* msg) {
    fprintf(SIM900, "AT+CMGF=1\r\n");       // Thiết lập chế độ Text mode
    delay_ms(500);
    fprintf(SIM900, "AT+CMGS=\"%s\"\r\n", phone_num);
    delay_ms(500);
    fprintf(SIM900, "%s%c", msg, 26);       // 26 là mã ASCII của Ctrl+Z (gửi tin nhắn)
    delay_ms(3000);
}

Kết quả kiểm nghiệm và độ chính xác

Hệ thống được đưa vào thử nghiệm thực tế với tập dữ liệu gồm 100 kịch bản kiểm tra độc lập tại khoảng cách 4.0m dưới các điều kiện quang học khác nhau:

Kịch bản kiểm thử Số mẫu thử Phát hiện đúng Báo động sai / Bỏ sót Độ chính xác (%)
Người di chuyển (Độ tương phản cao) 40 38 2 95.0%
Người di chuyển (Độ tương phản thấp) 20 17 3 85.0%
Vật chuyển động (Quạt, thú cưng, đồ vật) 20 18 2 90.0%
Môi trường tĩnh (Không có đối tượng) 20 20 0 100.0%
Tổng kết toàn diện 100 93 7 93.0%
  • Thời gian xử lý thuật toán trên MATLAB: Trung bình $280\text{ ms} / \text{frame}$.
  • Độ trễ truyền nhận tín hiệu UART: $< 10\text{ ms}$.
  • Thời gian gửi tin nhắn SMS từ SIM900 tới mạng di động: Dao động từ $3.2\text{ s}$ đến $5.0\text{ s}$ (phụ thuộc vào chất lượng sóng trạm thu phát BTS).

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

  1. Ứng dụng PCA nhận diện dáng người tổng thể: Thay vì ứng dụng PCA truyền thống cho nhận dạng khuôn mặt (Eigenfaces), đồ án mở rộng áp dụng PCA trên hình thái dáng người (Eigen-bodies) kết hợp tiền xử lý hình thái học (Morphological Filtering), giảm tỷ lệ nhận diện nhầm đồ vật chuyển động xuống dưới 10%.
  2. Giải pháp kiến trúc phần cứng Dual-MCU tối ưu hóa chi phí: Tách biệt tác vụ giao tiếp máy tính và tác vụ điều khiển modem viễn thông trên hai vi điều khiển PIC16F887 giá rẻ, đảm bảo hệ thống không bị treo bộ đệm (buffer overflow) khi nhận lệnh AT phức tạp từ SIM900.
  3. Cơ chế phản hồi và hủy báo động hai chiều qua mạng di động: Tích hợp bộ giải mã chuỗi ký tự nhận từ tin nhắn SMS phản hồi của người dùng để ngắt còi hú và thiết lập lại (reset) trạng thái hệ thống mà không cần tương tác vật lý trực tiếp tại trạm giám sát.
  4. Nâng cao hiệu năng ma trận phân tích: Bằng cách áp dụng phép biến đổi $A^T A$ thay cho $A A^T$, độ phức tạp không gian lưu trữ và thời gian tính toán vector riêng giảm hơn 85%, cho phép thuật toán chạy mượt mà trên máy tính cấu hình văn phòng.

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

+-----------------------------------------------------------------------------------+
|                        BẢNG DỰ TOÁN CHI PHÍ HỆ THỐNG (BOM)                         |
+-----------------------------------------------------------------------------------+
| Linh kiện / Thiết bị           | Số lượng | Đơn giá (VND)    | Thành tiền (VND)   |
+--------------------------------+----------+------------------+--------------------+
| Vi điều khiển PIC16F887        | 02       | 45.000           | 90.000             |
| Module Breakout SIM900         | 01       | 350.000          | 350.000            |
| Module nguồn xung LM2596-ADJ   | 01       | 25.000           | 25.000             |
| IC MAX232 + Đầu cổng DB9       | 01 bộ    | 20.000           | 20.000             |
| LCD 16x2 + Còi báo + Transistor| 01 bộ    | 45.000           | 45.000             |
| Webcam 2.0 MP (USB)            | 01       | 200.000          | 200.000            |
| PCB + Linh kiện thụ động (R,C) | 01 bộ    | 70.000           | 70.000             |
+--------------------------------+----------+------------------+--------------------+
| TỔNG CHI PHÍ PHẦN CỨNG         |          |                  | 800.000 VND        |
+-----------------------------------------------------------------------------------+

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

  • Giám sát kho bãi / Nhà xưởng ngoài giờ: Hoạt động tại các khu vực biệt lập, không có sẵn hạ tầng mạng Internet băng thông rộng. Hệ thống sử dụng mạng viễn thông di động GSM để bảo đảm kênh truyền cảnh báo thông suốt.
  • An ninh nhà ở dân dụng: Cảnh báo xâm nhập lập tức qua điện thoại cá nhân khi chủ nhà đi vắng, loại bỏ rủi ro mất kết nối do kẻ gian cắt đường dây cáp Internet cố định.
  • Hệ thống giám sát trạm biến áp / Trạm viễn thông vùng sâu: Giám sát người xâm nhập trái phép vào các cơ sở hạ tầng kỹ thuật quan trọng.

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

Hạn chế kỹ thuật

  • Độ nhạy sáng: Thuật toán trừ nền tĩnh phụ thuộc vào cường độ chiếu sáng ổn định. Khi môi trường có sự thay đổi ánh sáng đột ngột (bật/tắt đèn, bóng mây), tỷ lệ báo động giả tăng lên.
  • Yêu cầu tương phản trang phục: Trang phục của đối tượng cần có sự phân biệt nhất định về sắc độ so với màu nền.
  • Hạ tầng 2G: Module SIM900 hoạt động trên băng tần GSM/GPRS 2G, vốn đang nằm trong lộ trình tắt sóng của các nhà mạng viễn thông quốc tế.

Hướng phát triển

  1. Nâng cấp thuật toán AI cạnh (Edge AI): Chuyển dịch từ PCA sang các mô hình học sâu hiện đại như MobileNet-SSD, YOLOv8-tiny chạy trên các vi xử lý nhúng hiệu năng cao (Raspberry Pi 4, Jetson Nano).
  2. Hiện đại hóa module viễn thông: Chuyển đổi từ module SIM900 2G sang module SIM7600/EC25 hỗ trợ 4G LTE/5G và giao thức truyền thông IoT (MQTT, HTTPs POST).
  3. Thích nghi ánh sáng đa vùng: Ứng dụng thuật toán trừ nền thích nghi Gaussian Mixture Models (GMM) để bù trừ biến thiên quang học ngoài trời.

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

  • Sinh viên & Học viên ngành Điện tử - Viễn thông, Tự động hóa: Tài liệu tham khảo chuẩn mực về phương pháp tích hợp hệ thống phần cứng vi điều khiển (PIC) với phần mềm máy tính (MATLAB) và module viễn thông.
  • Kỹ sư phát triển phần mềm nhúng: Tiếp cận giải pháp kiến trúc Dual-MCU giải quyết bài toán thiếu hụt tài nguyên ngoại vi UART trên các dòng vi điều khiển 8-bit.
  • Doanh nghiệp vừa và nhỏ (SMEs): Mô hình tham chiếu để thiết kế các thiết bị an ninh tự động giá rẻ với chi phí linh kiện dưới 40 USD nhưng vẫn đảm bảo độ tin cậy vận hành.
  • Các nhà nghiên cứu ứng dụng thị giác máy tính: Nguồn tư liệu thực nghiệm về việc ứng dụng đại số tuyến tính (PCA) trong phân loại hình dáng đối tượng mức độ cơ bản.

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

1. Yêu cầu kỹ thuật tối thiểu của máy tính để triển khai phần mềm xử lý ảnh?

Máy tính cần trang bị hệ điều hành Windows 7/8/10/11, RAM tối thiểu 2GB, cài đặt môi trường MATLAB R2012a trở lên với Image Processing Toolbox. Camera kết nối qua cổng USB 2.0/3.0 với độ phân giải từ 640x480 pixels @ 30fps.

2. Tại sao SIM900 cần bộ nguồn xung riêng LM2596 thay vì dùng chung nguồn 5V của vi điều khiển?

Module SIM900 tiêu thụ dòng đỉnh (peak current) lên tới $2.0\text{ A}$ trong các khoảng thời gian phát xung vô tuyến GSM (truyền tín hiệu tới trạm BTS). Nếu sử dụng chung nguồn với vi điều khiển từ các IC ổn áp tuyến tính như LM7805 (dòng tối đa 1A), sụt áp đột ngột sẽ khiến PIC16F887 bị reset hoặc module SIM900 bị tắt nguồn. Mạch nguồn xung LM2596-ADJ cung cấp dòng tải liên tục $3.0\text{ A}$ với điện áp tối ưu $4.0\text{VDC}$ bảo đảm sự ổn định tuyệt đối.

3. Hệ thống xử lý thế nào khi đối tượng chuyển động có kích thước nhỏ như chó, mèo?

Sau bước trừ nền và nhị phân hóa, ảnh trải qua bước lọc trung vị 3x3 và tính toán diện tích đối tượng (blob analysis). Các đối tượng có kích thước pixel không tương thích với tỷ lệ dáng người được lọc bỏ trước khi đưa vào ma trận chiếu PCA, giúp loại trừ báo động giả từ động vật nhỏ.

4. Giải pháp thay thế khi mạng 2G bị tắt sóng hoàn toàn?

Người phát triển có thể thay thế module SIM900 bằng các module SIM 4G chân cắm tương thích tập lệnh AT như SIM7600E-H hoặc A7672S. Cấu trúc firmware trên vi điều khiển điều khiển tập lệnh AT+CMGS gần như giữ nguyên mà không cần thiết kế lại mạch điều khiển trung tâm.

5. Dự án có thể tích hợp chụp ảnh và gửi qua MMS hoặc Email không?

Hoàn toàn khả thi. Bằng cách kích hoạt chế độ GPRS trên SIM900 thông qua giao thức TCP/IP AT commands (AT+CIPSTART, AT+CIPSEND), ảnh chụp từ webcam có thể được nén định dạng JPEG trên PC và truyền trực tiếp qua email hoặc máy chủ đám mây của người dùng.


Kết luận

Đồ án "Ứng dụng xử lý ảnh phát hiện người và báo động dùng Sim900" là một minh chứng xuất sắc cho việc kết hợp hài hòa giữa toán học ứng dụng (Đại số tuyến tính với thuật toán PCA), thị giác máy tính và kỹ thuật vi điều khiển nhúng. Hệ thống đã hiện thực hóa thành công chu trình khép kín: Thu nhận hình ảnh $\rightarrow$ Phân tích nhận dạng $\rightarrow$ Giao tiếp liên kết $\rightarrow$ Cảnh báo viễn thông thời gian thực. Với độ chính xác nhận diện đạt trên 90% và chi phí chế tạo tối ưu, giải pháp này đặt nền móng vững chắc cho các nghiên cứu mở rộng về nhà thông minh (Smart Home) và các hệ thống giám sát an ninh độc lập trong kỷ nguyên Internet vạn vật (IoT).