Giới thiệu dự án

Thị trường quảng cáo kỹ thuật số ngoài trời (Digital Out-of-Home - DOOH) và hệ thống hiển thị thông tin công cộng đang chứng kiến tốc độ tăng trưởng mạnh mẽ với tỷ lệ tăng trưởng kép hàng năm (CAGR) đạt hơn 11.2% trên toàn cầu. Mặc dù nhu cầu truyền tải thông điệp đa phương tiện (hình ảnh động, video, biểu đồ thời gian thực) ngày càng cao, các hệ thống bảng điện tử LED truyền thống vẫn tồn tại nhiều rào cản kỹ thuật:

  • Quy trình cập nhật thủ công: Đa số các biển báo LED quảng cáo cơ bản yêu cầu nạp dữ liệu ngoại tuyến (offline) thông qua cổng USB hoặc chuẩn giao tiếp nối tiếp RS-232/RS-485, gây tốn kém nhân lực và thời gian khi thay đổi nội dung.
  • Chi phí phần cứng độc quyền cao: Các giải pháp thương mại quy mô lớn phụ thuộc vào các bộ điều khiển chuyên dụng (Sending/Receiving Cards như Novastar, Huidu) với chi phí bản quyền và thiết bị đắt đỏ, khó tùy biến hoặc tích hợp vào hệ thống quản lý tập trung.
  • Thiếu cơ chế phản hồi trạng thái thực: Hệ thống vận hành một chiều (blind transmission), không có khả năng giám sát trực quan xem nội dung hiển thị thực tế trên panel có bị lỗi điểm ảnh, lệch màu hoặc treo màn hình hay không.

Đồ án tốt nghiệp "Ứng dụng IoT vào hệ thống quang báo sử dụng KIT Raspberry Pi" của sinh viên ngành Công nghệ Kỹ thuật Điện tử - Viễn thông (Trường Đại học Sư phạm Kỹ thuật TP.HCM) được phát triển nhằm giải quyết triệt để các hạn chế trên.

                                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+------------------+         HTTP / WebSocket         +------------------------+
|  User Dashboard  | <=============================> |  Raspberry Pi 3B (SBC)  |
| (PC/Smartphones) |                                  |  - Web Server (Flask)  |
+------------------+                                  |  - Media Processing    |
                                                      |  - GPIO FrameBuffer    |
+------------------+         MJPEG Video Stream       +-----------+------------+
|    ESP32-CAM     | -------------------------------> |           | HUB75 (3.3V->5V)
| (Visual Feedback)|                                  +-----------v------------+
+------------------+                                  | 3x3 LED Panel Matrix   |
                                                      | (P5 RGB 192x96 Pixels) |
                                                      +------------------------+

Mục tiêu đề tài

  1. Nghiên cứu và làm chủ phần cứng: Khảo sát nguyên lý quét ma trận 1/16, giao thức HUB75 và cơ chế định thời điều khiển của tấm LED Panel P5 RGB (kích thước 64x32 pixels/tấm).
  2. Thiết kế mạch chuyển đổi và giao tiếp: Xây dựng khối đệm điện áp tương thích logic 3.3V (Raspberry Pi GPIO) sang 5V (HUB75) bằng IC đệm 74HC245, chống suy hao và nhiễu tín hiệu clock tần số cao.
  3. Xây dựng bộ xử lý FrameBuffer trên máy tính nhúng: Phát triển module phần mềm trên Raspberry Pi 3 Model B để giải mã, dựng khung hình (FrameBuffer 24-bit màu) và quét dữ liệu hiển thị hình ảnh tĩnh, ảnh động (GIF) và video đạt tốc độ làm mới (refresh rate) cao.
  4. Tích hợp nền tảng Web IoT và Visual Feedback: Thiết kế web server quản trị từ xa qua mạng Wi-Fi và tích hợp module camera ESP32-CAM phục vụ giám sát trực tiếp (live monitoring) trạng thái quang báo.

Phương pháp tiếp cận và kết quả kỳ vọng

  • Phương pháp: Tận dụng năng lực xử lý đa luồng của CPU lõi tứ Broadcom BCM2837 trên nền tảng Linux kết hợp kỹ thuật điều chế độ rộng xung (PWM) và quét dồn kênh thời gian thực.
  • Chỉ số định lượng: Mô hình ghép nối 9 tấm panel P5 (cấu hình 3x3) tạo độ phân giải $192 \times 96$ pixels, hỗ trợ hiển thị 24-bit TrueColor (16.7 triệu màu), tần số quét hiển thị đạt từ 768 Hz đến 1920 Hz loại bỏ hiện tượng nhấp nháy (flicker-free), độ trễ truyền dữ liệu qua Wi-Fi dưới 200 ms.
  • Phạm vi và giới hạn: Hệ thống thử nghiệm tập trung vào kết nối mạng cục bộ (LAN/Wi-Fi chuẩn IEEE 802.11n), truyền phát video nén định dạng tiêu chuẩn ở khung hình $192 \times 96$ pixels mà không sử dụng thêm card giải mã FPGA rời.

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

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

Tiêu chí kỹ thuật Mạch vi điều khiển (STM32/ESP32) Hệ thống thương mại (Novastar/HD) Giải pháp Raspberry Pi IoT (Đề tài)
Khả năng hiển thị đa phương tiện Giới hạn (Chỉ chữ, icon đơn giản, video giật do tràn RAM) Rất cao (Hỗ trợ 4K/Full HD qua card FPGA) Tốt (Xử lý mượt Video, GIF, Image $192 \times 96$ qua RAM 1GB)
Cơ chế cập nhật dữ liệu Offline qua UART/USB hoặc Web cơ bản Cáp mạng LAN nội bộ, phần mềm độc quyền Web Dashboard qua Wi-Fi / RESTful API / WebSockets
Chi phí triển khai Rất thấp (~500.000 - 1.000.000 VNĐ) Rất cao (> 10.000.000 VNĐ/hệ thống) Trung bình tối ưu (~2.500.000 - 3.500.000 VNĐ)
Giám sát trực quan (Feedback loop) Không có Có (yêu cầu camera IP đắt tiền) Tích hợp sẵn ESP32-CAM streaming thời gian thực
Khả năng tùy biến phần mềm Khó mở rộng tính năng cao cấp Đóng kín, không can thiệp được firmware Mã nguồn mở (Python, Linux OS), dễ mở rộng AI/Cloud

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Hiển thị văn bản, hình ảnh chuẩn màu RGB, chạy video/GIF mượt mà; điều khiển qua giao diện web; giao thức quét HUB75 ổn định.
  • Should have (Nên có): Tích hợp luồng phát video giám sát từ ESP32-CAM; xác thực bảo mật tài khoản quản trị (login system).
  • Could have (Có thể có): Mở rộng kích thước ma trận linh hoạt (4x4, 5x5); lập lịch chạy nội dung quảng cáo tự động theo giờ.
  • Won't have (Chưa thực hiện): Tích hợp module AI nhận diện khuôn mặt người xem để target quảng cáo trong phạm vi nghiên cứu này.

Thiết kế hệ thống

                                  SƠ ĐỒ KHỐI PHẦN CỨNG PANEL LED
   +-----------------------------------------------------------------------------------+
   | Raspberry Pi 3B (GPIO 3.3V Logic)                                                 |
   | [R0, G0, B0, R1, G1, B1]  [CLK]  [LAT/STB]  [OE]  [A, B, C, D]                   |
   +------------------------------------+----------------------------------------------+
                                        | Bus 16-pin
                                        v
   +-----------------------------------------------------------------------------------+
   | Khối Đệm Mức Điện Áp (IC 74HC245: Chuyển đổi 3.3V Logic -> 5.0V Logic)             |
   +------------------------------------+----------------------------------------------+
                                        | Giao tiếp HUB75
                                        v
   +-----------------------------------------------------------------------------------+
   | Tấm LED Panel P5 (64x32 Pixels)                                                   |
   |                                                                                   |
   | +-----------------------------+       +-----------------------------------------+ |
   | | IC Giải Mã Hàng: 74HC138    | ----> | Mosfet Kênh P: SSF4953 (Cấp dòng Anode) | |
   | | (Địa chỉ 3 sang 8: A, B, C) |       | (Quét luân phiên 16 cặp hàng: 1/16 Scan)| |
   | +-----------------------------+       +-----------------------------------------+ |
   |                                                                                   |
   | +-------------------------------------------------------------------------------+ |
   | | IC Điều Khiển Cột: TLC5926 (24 IC mắc nối tiếp Shift-Register)               | |
   | | - Nhận dữ liệu nối tiếp (SDI/SDO)                                             | |
   | | - Chốt dữ liệu qua chân LE (Latch Enable)                                     | |
   | | - Bật/Tắt dòng hằng qua chân OE (PWM Output Enable)                          | |
   | +-------------------------------------------------------------------------------+ |
   +-----------------------------------------------------------------------------------+

Technology Stack và phiên bản sử dụng

  • Bộ xử lý trung tâm: Raspberry Pi 3 Model B (SoC Broadcom BCM2837 64-bit Quad-Core ARM Cortex-A53 @ 1.2 GHz, 1GB LPDDR2 RAM).
  • Hệ điều hành: Raspberry Pi OS (Linux kernel 5.15/Debian-based).
  • Mô-đun thu hình: Ai-Thinker ESP32-CAM tích hợp cảm biến Omnivision OV2640 (2 Megapixels), 4MB External PSRAM.
  • Tấm nền hiển thị: 09 module LED P5 RGB $64 \times 32$ pixels, cấu hình ma trận $3 \times 3$ (tổng độ phân giải $192 \times 96$ pixels, khoảng cách điểm ảnh pitch = 5 mm).
  • IC chuyên dụng:
    • 74HC138: IC giải mã 3 sang 8 đường (Line Decoder).
    • TLC5926: 16-Channel Constant-Current LED Sink Driver (độ phân giải dòng điện cố định thông qua điện trở $R_{EXT}$).
    • SSF4953: Dual P-Channel MOSFET (chịu dòng đỉnh lớn, chuyển mạch cấp nguồn $V_{CC}$ cho các hàng LED).
    • 74HC245: Octal 3-State Non-Inverting Bus Transceiver (đệm dữ liệu và chuyển mức logic $3.3\text{V} \to 5.0\text{V}$).
  • Ngôn ngữ và Framework: Python 3.9 (Flask Web Server, Pillow Image Processing Library, OpenCV-Python), C/C++ (High-performance Direct GPIO Bit-Banging & FrameBuffer Driver), HTML5/CSS3/JavaScript (UI/UX Dashboard).

Thiết kế FrameBuffer và giải thuật quét

Khung hình hiển thị được tổ chức dưới dạng mảng nhị phân 24-bit màu tương ứng với kích thước ma trận $192 \times 96$ pixels:

$$\text{FrameBuffer Size} = \text{Width} \times \text{Height} \times \text{Bytes per Pixel} = 192 \times 96 \times 3 = 55,296 \text{ Bytes} \approx 54 \text{ KB}$$

Với tỷ lệ quét 1/16 ($1/16 \text{ scan}$), màn hình chia thành 2 nửa trên và dưới hoạt động song song:

  • Nửa trên ($Rows\ 0 \to 15$): Nhận dữ liệu qua bus chân $R_0, G_0, B_0$.
  • Nửa dưới ($Rows\ 16 \to 31$): Nhận dữ liệu qua bus chân $R_1, G_1, B_1$.
# Cấu trúc giải thuật nạp FrameBuffer và quét dữ liệu xuống HUB75
import time
import numpy as np

class LEDMatrixP5:
    def __init__(self, rows=96, cols=192):
        self.rows = rows
        self.cols = cols
        # Khởi tạo Double FrameBuffer 24-bit (Height, Width, RGB)
        self.frame_buffer = np.zeros((rows, cols, 3), dtype=np.uint8)
        self.scan_lines = 16  # Chu kỳ quét 1/16

    def load_image(self, rgb_matrix):
        """Nạp dữ liệu ảnh đã scale vào bộ nhớ đệm (Double Buffering)"""
        self.frame_buffer = np.copy(rgb_matrix)

    def scan_display(self):
        """Chu kỳ quét 16 bước sử dụng 74HC138 và TLC5926"""
        for line in range(self.scan_lines):
            # 1. Tắt hiển thị (OE = HIGH) để chống bóng ma (ghosting effect)
            self.set_gpio_pin('OE', 1)

            # 2. Xuất địa chỉ dòng giải mã A, B, C, D tới IC 74HC138
            self.set_address_lines(line)

            # 3. Dịch 192 bits dữ liệu cột vào 24 IC TLC5926 qua chân CLK
            for col in range(self.cols):
                # Đọc trạng thái bit RGB cho nửa trên và nửa dưới
                r0, g0, b0 = self.frame_buffer[line, col] > 128
                r1, g1, b1 = self.frame_buffer[line + 16, col] > 128
                
                self.write_serial_bits(r0, g0, b0, r1, g1, b1)
                self.pulse_pin('CLK')

            # 4. Chốt dữ liệu hàng (Latch Enable - STB/LAT = HIGH)
            self.pulse_pin('STB')

            # 5. Bật hiển thị (OE = LOW) trong khoảng thời gian PWM
            self.set_gpio_pin('OE', 0)
            time.sleep(0.0005) # Chu kỳ giữ độ sáng cho mắt lưu ảnh

Thiết kế API Endpoints

+---------------------------------------------------------------------------------+
|                                 REST API MATRIX                                 |
+---------------------+--------+-------------------------------+------------------+
| Endpoint            | Method | Payload / Format              | Chức năng        |
+---------------------+--------+-------------------------------+------------------+
| /api/v1/auth/login  | POST   | {"user": "...", "pass": "..."}| Xác thực admin   |
| /api/v1/display/text| POST   | {"text": "...", "color": "..."}| Đẩy chữ chạy     |
| /api/v1/display/img | POST   | multipart/form-data (.jpg/.png)| Nạp và đổi ảnh   |
| /api/v1/display/vid | POST   | multipart/form-data (.mp4)    | Stream video     |
| /api/v1/cam/stream  | GET    | multipart/x-mixed-replace     | Luồng video feed |
+---------------------+--------+-------------------------------+------------------+

Methodology

Dự án được triển khai theo mô hình lai Agile/Iterative Development gồm 5 giai đoạn chính trong 20 tuần (08/2023 – 01/2024):

                                  TIẾN ĐỘ THỰC HIỆN ĐỀ TÀI
[Tuần 1-4]    Khảo sát tài liệu, phân tích IC (74HC138, TLC5926, SSF4953, 74HC245)
[Tuần 5-8]    Thiết kế mạch chuyển đổi HUB75, kết nối Raspberry Pi 3B & ESP32-CAM
[Tuần 9-12]   Phát triển driver quét LED, thuật toán FrameBuffer & render video
[Tuần 13-16]  Xây dựng Web UI/Dashboard, tích hợp REST API & WebSockets
[Tuần 17-20]  Đóng khung mô hình 3x3, thử nghiệm tải liên tục, tối ưu và bảo vệ
  • Quản lý rủi ro:
    • Rủi ro sụt áp/nhiễu tín hiệu: Panel 3x3 tiêu thụ dòng đỉnh có thể vượt quá $15\text{A}$ tại $5\text{V}$. Giải pháp: Thiết kế nguồn tổ ong $5\text{V} - 40\text{A}$ cấp dây nguồn riêng biệt dạng sao (star topology) cho từng tấm panel, đi kèm tụ hóa $1000\mu\text{F}$ lọc nguồn tại mỗi cổng HUB75.
    • Rủi ro lệch mức điện áp: Chân GPIO Raspberry Pi cấp $3.3\text{V}$ không đủ kích ngưỡng High tin cậy cho IC logic $5\text{V}$ trên panel. Giải pháp: Lắp đặt 2 IC đệm $74\text{HC}245$ trung gian để nâng mức tín hiệu lên $5.0\text{V}$ chuẩn.

Implementation và kết quả

Development process

Quá trình triển khai chia làm các khối kỹ thuật cụ thể:

  1. Phần cứng ghép nối: 9 module P5 ghép nối tiếp tín hiệu HUB75 theo nguyên tắc chuỗi: HUB_OUT của module trước nối vào HUB_IN của module tiếp theo. Đường dữ liệu nối tiếp của IC TLC5926 (chân SDO module 1 nối tiếp chân SDI module 2) tạo thành thanh ghi dịch tổng chiều dài 192 bit cho mỗi hàng quét.
  2. Khối máy chủ và ứng dụng (Flask App): Chạy thường trực trên Raspberry Pi OS dưới dạng systemd service. Web Server phục vụ giao diện người dùng, tiếp nhận file ảnh/video tải lên qua chuẩn mã hóa Base64 hoặc multipart/form-data, lưu vào thư mục đệm /tmp/media_cache.
  3. Khối hiển thị (Renderer Worker): Luồng xử lý nền (Background Thread) liên tục đọc ảnh từ vùng nhớ đệm, dùng thư viện OpenCV để resize khung hình chuẩn $192 \times 96$ pixels, chuyển đổi không gian màu BGR sang RGB24 và ghi đè vào con trỏ FrameBuffer.
                           LUỒNG DỮ LIỆU XỬ LÝ ĐA PHƯƠNG TIỆN
+-------------+      Upload File      +----------------+     Resize/Rescale    +----------------+
| Web Browser | --------------------> | Flask Server   | --------------------> | OpenCV Pipeline|
| Client      |                       | (Python 3.9)   |   (192x96, RGB24)     | (Memory Map)   |
+-------------+                       +----------------+                       +--------+-------+
                                                                                        |
                                                                                        v
+-------------+      HUB75 Logic      +----------------+    Direct GPIO DMA    +----------------+
| P5 LED Wall | <-------------------- | IC 74HC245     | <-------------------- | FrameBuffer    |
| (192x96)    |     (5.0V Level)      | (Level Shifter)|                       | Engine (C/C++) |
+-------------+                       +----------------+                       +----------------+

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử tải và đo đạc thông số thực tế trong phòng thí nghiệm:

Hạng mục kiểm thử Kịch bản kiểm thử Kết quả đạt được Trạng thái
Độ trễ phản hồi Web (Latency) Gửi lệnh thay đổi văn bản/màu sắc qua mạng Wi-Fi LAN $85 - 130 \text{ ms}$ Đạt tiêu chuẩn
Tốc độ khung hình (Frame Rate) Chạy video định dạng MP4/AVI độ phân giải $192 \times 96$ $28 - 32 \text{ FPS}$ (mượt mà) Đạt tiêu chuẩn
Tần số quét màn hình (Refresh) Đo xung quét trên chân OE bằng máy hiện sóng (Oscilloscope) $960 \text{ Hz}$ (loại bỏ hoàn toàn vệt sọc khi chụp qua điện thoại) Vượt kỳ vọng
Luồng Video Feedback ESP32 Truyền luồng MJPEG SVGA ($800 \times 600$) về Dashboard $16 - 20 \text{ FPS}$, trễ $\approx 220 \text{ ms}$ Đạt tiêu chuẩn
Độ ổn định nhiệt độ (Thermal) Hoạt động liên tục 8 giờ full sáng trắng ($100%$ White) Nhiệt độ RPi 3B: $58^\circ\text{C}$; IC driver: $46^\circ\text{C}$ An toàn
                       THỐNG KÊ LỖI PHÁT SINH VÀ XỬ LÝ (BUG TRACKING)
+------------------------------------+-----------+----------------------------------------------+
| Phân loại lỗi                      | Số lượng  | Giải pháp xử lý triệt để                     |
+------------------------------------+-----------+----------------------------------------------+
| Nhiễu gợn sóng (Ghosting/Flicker)  | 05 ca     | Tinh chỉnh độ trễ chân OE và bổ sung tụ lọc  |
| Lệch màu kênh xanh (RGB Mismatch)  | 02 ca     | Map lại chân GPIO Pinout trên bo giao tiếp   |
| Tràn RAM khi tải Video dài         | 03 ca     | Sử dụng OpenCV đọc Frame tuần tự (Generator) |
| Mất kết nối Wi-Fi ESP32-CAM        | 04 ca     | Thiết lập cơ chế Auto-Reconnect trong vòng lặp|
+------------------------------------+-----------+----------------------------------------------+

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

  • Mô hình phần cứng hoàn thiện: Thi công thành công khung ma trận 9 tấm P5 ($192 \times 96$ pixels, diện tích thực tế $\approx 0.96 \text{ m} \times 0.48 \text{ m}$), dây nguồn và bus truyền thông được bố trí theo module công nghiệp gọn gàng, cách điện an toàn.
  • Chức năng phần mềm toàn diện: Giao diện điều khiển Web tương thích cả trình duyệt Desktop và Mobile; hỗ trợ nạp ảnh tĩnh (JPEG, PNG, BMP), chạy chữ banner với tốc độ tùy chỉnh, hiển thị ảnh động GIF và phát video mượt mà.
  • Vòng lặp giám sát (Closed-Loop Visual Feedback): Tích hợp camera ESP32-CAM stream trực tiếp lên trang quản trị giúp người dùng quan sát chính xác góc nhìn của người đi đường đối với bảng quang báo.

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

  1. Kiến trúc điều khiển không dùng Card nhận (Receiver-less Architecture): Thay vì sử dụng các bộ chuyển mạch thương mại đắt tiền, đồ án khai thác trực tiếp GPIO tốc độ cao trên Raspberry Pi để quét trực tiếp tín hiệu HUB75 24-bit màu. Giải pháp giúp tiết kiệm hơn 60% chi phí phần cứng cho các hệ thống hiển thị vừa và nhỏ.
  2. Cơ chế phản hồi thị giác IoT (Visual IoT Feedback): Bổ sung module ESP32-CAM độc lập tạo nên hệ thống IoT 2 chiều (True IoT Closed Loop). Người vận hành không chỉ "gửi dữ liệu đi" mà còn "giám sát kết quả về", phát hiện ngay lập tức sự cố vật lý hoặc lỗi hiển thị trên bảng LED.
  3. Tối ưu hóa Pipeline kết hợp Python và C/C++: Sử dụng Python cho tầng nghiệp vụ (Web server, xác thực, API) và thư viện tối ưu hóa thấp bằng C++ cho tầng truy cập bộ nhớ FrameBuffer, giải phóng tài nguyên CPU của Raspberry Pi 3B (mức sử dụng CPU duy trì dưới $45%$ khi phát video).
                      SO SÁNH CÁC GIẢI PHÁP ĐIỀU KHIỂN QUANG BÁO
+-----------------------------------------------------------------------------------------+
|                  [Giải Pháp Card Độc Quyền (Novastar/Huidu)]                            |
|                  Chi phí: Cao (>10tr) | Tùy biến: Thấp | Cập nhật: LAN/USB              |
+-----------------------------------------------------------------------------------------+
                                             vs
+-----------------------------------------------------------------------------------------+
|                  [Giải Pháp Đồ Án: Raspberry Pi 3B + Web IoT + ESP32-CAM]                |
|                  Chi phí: Tối ưu (~3tr)| Tùy biến: Mã nguồn mở | Cập nhật: Web đa nền tảng|
|                  Đặc biệt: Giám sát video trực tiếp qua Wi-Fi                           |
+-----------------------------------------------------------------------------------------+

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

Tình huống ứng dụng thực tế

  • Bảng thông báo thông minh tại trường học/bệnh viện: Cập nhật thông báo khẩn cấp, lịch trực, thông tin hội nghị từ văn phòng trung tâm tới các sảnh tòa nhà theo thời gian thực.
  • Biển quảng cáo thương mại tại chuỗi cửa hàng bán lẻ: Quản lý hàng loạt màn hình hiển thị chương trình khuyến mãi, video giới thiệu sản phẩm đồng bộ qua một trang web quản trị tập trung.
  • Bảng chỉ dẫn giao thông thông minh (VMS - Variable Message Sign): Hiển thị cảnh báo ùn tắc, tốc độ giới hạn, hướng dẫn làn đường tích hợp camera giám sát dòng xe.
                      MÔ HÌNH TRIỂN KHAI VMS ĐÔ THỊ THÔNG MINH
+----------------------+        4G/Wi-Fi Mesh        +----------------------------+
| Trung Tâm Điều Hành  | ==========================> | Trạm Biển Báo VMS (P5 LED) |
| Đô Thị Thông Minh    | <========================== | Tích hợp ESP32-CAM Feed   |
+----------------------+     Live Camera Stream      +----------------------------+

Yêu cầu kỹ thuật và Hướng dẫn triển khai

Yêu cầu hệ thống phần cứng

  • 01 Nguồn tổ ong Meanwell hoặc tương đương: $5\text{V} - 40\text{A}$ (đảm bảo công suất $\ge 200\text{W}$).
  • 01 Máy tính nhúng Raspberry Pi 3 Model B (kèm thẻ nhớ MicroSD 32GB Class 10).
  • 01 Module Ai-Thinker ESP32-CAM (kèm đế nạp USB-to-UART FTDI).
  • 09 Tấm Module LED P5 RGB Indoor $64 \times 32$ pixels (kèm cáp bus data HUB75 16-pin).
  • 01 Bo mạch đệm chuyển mức logic tự thiết kế chứa 2 IC $74\text{HC}245$.

Các bước cài đặt phần mềm

  1. Chuẩn bị môi trường trên Raspberry Pi OS:
    sudo apt-get update && sudo apt-get install -y python3-pip python3-dev libatlas-base-dev git
    git clone https://github.com/hzeller/rpi-rgb-led-matrix.git
    cd rpi-rgb-led-matrix && make build-python PYTHON=$(which python3)
    sudo make install-python
    
  2. Cài đặt Web App và Dependencies:
    pip3 install flask opencv-python pillow numpy
    
  3. Khởi chạy dịch vụ bảng quang báo:
    sudo python3 app_server.py --led-rows=32 --led-cols=64 --led-chain=9 --led-parallel=1 --led-slowdown-gpio=2
    

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

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

  • Băng thông CPU khi mở rộng màn hình cực lớn: Do sử dụng phương pháp bit-banging trực tiếp qua GPIO của CPU, khi mở rộng ma trận vượt quá 16 tấm panel ($> 300,000 \text{ pixels}$), tốc độ khung hình (FPS) có thể bị sụt giảm do CPU phải gánh cả tác vụ quét LED lẫn decode video.
  • Phạm vi mạng Wi-Fi cục bộ: Hệ thống hiện hoạt động trên dải mạng LAN/Wi-Fi nội bộ, chưa tích hợp giao thức MQTT kết hợp Cloud Server (AWS/Google Cloud) để điều khiển xuyên Internet (NAT Traversal).

Hướng phát triển trong tương lai

  • Ứng dụng FPGA/Co-processor: Tích hợp thêm chip FPGA giá rẻ (như Gowin GW1N) hoặc vi điều khiển chuyên dụng giao tiếp qua SPI/I2S tốc độ cao để đảm nhiệm hoàn toàn việc quét HUB75, giải phóng $100%$ tài nguyên cho Raspberry Pi thực hiện các tác vụ AI.
  • Tích hợp AI Computer Vision trên Camera: Ứng dụng các mô hình học sâu nhẹ (MobileNet-SSD, YOLOv8-Nano) lên luồng hình ảnh của ESP32-CAM để đếm lưu lượng người xem quảng cáo, ước tính độ tuổi và phân tích cảm xúc (Audience Analytics).
  • Mở rộng giải pháp Smart City: Đóng gói phần mềm thành Docker Container, kết nối hàng nghìn bảng LED qua giao thức MQTT bảo mật TLS, quản lý tập trung từ hệ thống Smart City Dashboard.

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

+---------------------------------------------------------------------------------------+
|                                ĐỐI TƯỢNG HƯỞNG LỢI                                    |
+---------------------------------------------------------------------------------------+
|  Sinh Viên / Học Viên:                                                                |
|  - Tài liệu tham khảo chuẩn chỉnh về kiến trúc phần cứng HUB75, IC 74HC138, TLC5926.  |
|  - Phương pháp xây dựng hệ thống nhúng kết hợp IoT và Xử lý ảnh.                      |
+---------------------------------------------------------------------------------------+
|  Kỹ Sư / Lập Trình Viên Hệ Nhúng:                                                     |
|  - Mẫu thiết kế mạch đệm logic 3.3V <-> 5V bằng 74HC245 chuẩn công nghiệp.            |
|  - Kỹ thuật lập trình Double FrameBuffer và streaming video đa luồng với Python/C++.  |
+---------------------------------------------------------------------------------------+
|  Doanh Nghiệp / Đơn Vị Triển Khai Quảng Cáo:                                          |
|  - Tiết kiệm 50 - 60% chi phí đầu tư thiết bị điều khiển so với hệ thống nhập khẩu.   |
|  - Nền tảng mở, chủ động nâng cấp tính năng theo yêu cầu mà không phụ thuộc nhà bán.  |
+---------------------------------------------------------------------------------------+

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 cấp ổn định $5\text{V}$ dòng tối thiểu $30\text{A} - 40\text{A}$ cho ma trận 9 tấm LED P5; một bộ máy tính nhúng Raspberry Pi 3B (hoặc 3B+/4B) chạy hệ điều hành Linux; mạch đệm IC $74\text{HC}245$ để bảo vệ chân GPIO và nâng mức logic; module ESP32-CAM được nạp sẵn firmware streaming video qua giao thức HTTP.

2. Giới hạn mở rộng kích thước màn hình của hệ thống là bao nhiêu?

Với phần cứng Raspberry Pi 3B sử dụng thư viện điều khiển tối ưu hóa trực tiếp trên bộ nhớ DMA, hệ thống có thể ghép nối tối đa 12 đến 16 module P5 ($64 \times 32$) trên một đường dữ liệu đơn mà vẫn duy trì tần số quét $> 400\text{ Hz}$ và tốc độ phát video $> 24\text{ FPS}$. Để mở rộng lớn hơn (hàng trăm module), khuyến nghị chuyển đổi sang mô hình Raspberry Pi 4 kết hợp bảng mạch FPGA.

3. Làm thế nào để tích hợp hệ thống với các nền tảng quản lý nội dung hiện có?

Hệ thống cung cấp sẵn các giao tiếp RESTful API chuẩn (JSON payloadmultipart data). Bất kỳ phần mềm CMS bên thứ ba nào cũng có thể gửi yêu cầu HTTP POST để cập nhật văn bản, lịch trình hoặc đẩy file media trực tiếp vào bảng quảng cáo mà không cần thay đổi cấu trúc mã nguồn.

4. Chi phí linh kiện và thời gian hoàn vốn (ROI) ước tính như thế nào?

Tổng chi phí linh kiện để chế tạo mô hình $3 \times 3$ panel P5 (bao gồm Raspberry Pi 3B, ESP32-CAM, nguồn $5\text{V}/40\text{A}$, khung nhôm và 9 tấm LED) ước tính khoảng 3.200.000 VNĐ. So với các biển LED thương mại cùng tính năng điều khiển không dây có giá từ 8.000.000 đến 12.000.000 VNĐ, giải pháp mang lại thời gian hoàn vốn đầu tư chỉ trong vòng 3 đến 6 tháng đối với các đơn vị kinh doanh dịch vụ quảng cáo.

5. Khắc phục sự cố bóng ma (ghosting) và sụt áp trên màn hình LED như thế nào?

Hiện tượng bóng ma xảy ra khi thời gian tắt mở của chân OE (Output Enable) không đồng bộ với quá trình chốt dữ liệu của chân STB/LAT và chuyển địa chỉ hàng của 74HC138. Cần đảm bảo set OE = HIGH trước khi đổi địa chỉ hàng và kéo OE = LOW sau khi đã nạp xong dòng. Hiện tượng lệch màu/sụt áp ở các góc xa được giải quyết triệt để bằng cách nối dây nguồn $5\text{V}$ và GND trực tiếp từ nguồn tổng tới từng cặp tấm LED thay vì nối tiếp dây nguồn qua nhau.


Kết luận

Đồ án tốt nghiệp "Ứng dụng IoT vào hệ thống quang báo sử dụng KIT Raspberry Pi" của nhóm tác giả Nguyễn Chí Cường và Lê Thanh Hiếu (ngành CNKT Điện tử - Viễn thông, Trường Đại học Sư phạm Kỹ thuật TP.HCM) đã hiện thực hóa thành công một giải pháp công nghệ toàn diện và có tính thực tiễn cao. Bằng cách kết hợp linh hoạt giữa năng lực tính toán mạnh mẽ của máy tính nhúng Raspberry Pi 3B, công nghệ điều khiển hiển thị ma trận quét thời gian thực qua giao thức HUB75 và vòng lặp giám sát hình ảnh thông minh từ ESP32-CAM, đề tài đã giải quyết triệt để bài toán tự động hóa trong ngành quảng cáo kỹ thuật số.

Nghiên cứu không chỉ dừng lại ở mô hình lý thuyết mà đã chứng minh được tính khả thi kỹ thuật vượt trội thông qua các số liệu đo kiểm thực nghiệm khắt khe: tần số quét $960\text{ Hz}$, hiển thị video mượt mà $30\text{ FPS}$ trên ma trận $192 \times 96$ pixels và độ ổn định cao qua nhiều giờ vận hành liên tục. Đây là tài liệu tham khảo kỹ thuật giá trị cho sinh viên, kỹ sư nhúng và là tiền đề vững chắc cho việc phát triển các sản phẩm thương mại thông minh, phục vụ đắc lực cho xu thế xây dựng đô thị thông minh trong kỷ nguyên chuyển đổi số.