Giới thiệu dự án

Sự bùng nổ của cuộc cách mạng Internet of Things (IoT) và giải pháp Nhà thông minh (Smart Home) đã thúc đẩy nhu cầu tự động hóa và điều khiển thiết bị gia dụng từ xa. Theo thống kê từ Statista, thị trường thiết bị nhà thông minh toàn cầu duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%. Tuy nhiên, phần lớn các thiết bị điện máy truyền thống hiện nay (điều hòa không khí, tivi, quạt điện, ampli...) vẫn phụ thuộc vào điều khiển từ xa hồng ngoại (IR Remote Control).

+------------------+         TCP/IP (Wi-Fi)        +-------------------+
|  Android Device  |  <=========================>  |   ESP8266-12E     |
| (App Controller) |                               |   (Wi-Fi Module)  |
+------------------+                               +---------+---------+
        | (RTSP/HTTP)                                        | (UART)
        v                                                    v
+------------------+                               +-------------------+
|    IP Camera     |                               |  STM32F103C8T6    |
|   (Monitoring)   |                               | (ARM Cortex-M3)   |
+------------------+                               +---+-----------+---+
                                                       |           | (SPI)
                                        (GPIO / EXTI / |           v
                                          Timer PWM)   |     +-----------+
                                                       v     | MicroSD   |
                                                +------------+ (FAT/RAW) |
                                                | IR Rx / Tx | +---------+
                                                | (TL1838)   |
                                                +------------+

Vấn đề thực tiễn (Problem Statement)

  • Phân mảnh giao thức điều khiển: Mỗi nhà sản xuất (Sony, Samsung, LG, Daikin, Panasonic...) sử dụng một chuẩn mã hóa hồng ngoại riêng biệt (NEC, RC-5, RC-6, Sony SIRC...) với số lượng bit (7, 12, 16, 32 bit) và phương pháp điều chế xung (độ rộng xung cao/thấp) khác nhau.
  • Bất tiện vật lý: Số lượng remote tỷ lệ thuận với số lượng thiết bị trong nhà, gây khó khăn trong việc lưu trữ, quản lý và thay pin định kỳ.
  • Giới hạn không gian và tầm nhìn thẳng: Sóng hồng ngoại truyền thẳng (Line-of-Sight) và phạm vi bị giới hạn dưới 10m, không thể xuyên tường hoặc điều khiển từ xa ngoài mạng cục bộ.
  • Thiếu khả năng phản hồi trực quan: Không có cơ chế xác nhận trạng thái thực tế của thiết bị khi điều khiển từ xa nếu không có thiết bị giám sát đi kèm.

Mục tiêu đề tài

  1. Nghiên cứu và thiết kế mạch giải mã tín hiệu hồng ngoại đa chuẩn thông qua cảm biến quang điện TL1838 và vi điều khiển ARM Cortex-M3 (STM32F103C8T6).
  2. Phát triển thuật toán "học lệnh" (Universal IR Learning) ghi lại chuỗi thời gian nạp xung (pulse width timing) vào thẻ nhớ MicroSD qua chuẩn giao tiếp SPI.
  3. Thiết kế mạch phát tín hiệu hồng ngoại điều biến tần số sóng mang 38 kHz thông qua bộ định thời (Timer PWM) và transistor khuếch đại dòng.
  4. Xây dựng khối truyền thông mạng không dây sử dụng module Wi-Fi ESP8266-12E giao tiếp USART với vi điều khiển ARM.
  5. Lập trình ứng dụng trên nền tảng Android hỗ trợ giao diện điều khiển, học lệnh thông minh qua TCP/IP Socket và tích hợp luồng video từ Camera IP để giám sát theo thời gian thực.

Giải pháp và Phạm vi

  • Giải pháp: Xây dựng trung tâm điều khiển hồng ngoại vạn năng kết nối mạng Wi-Fi (Wi-Fi to IR Gateway), kết hợp lưu trữ cơ sở dữ liệu lệnh trên thẻ nhớ SD Card và tích hợp camera quan sát.
  • Phạm vi áp dụng: Không gian phòng khách, văn phòng, phòng ngủ gia đình; hỗ trợ học tất cả remote hồng ngoại tần số sóng mang 36 kHz - 40 kHz; ứng dụng điều khiển qua mạng LAN/Wi-Fi nội bộ và môi trường Internet.

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

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

Tiêu chí Remote hồng ngoại truyền thống Bộ điều khiển BroadLink RM / Logitech Harmony Hệ thống đề tài STM32 + ESP8266
Giao thức điều khiển Đơn giao thức cố định theo hãng Đa giao thức, cloud-dependent Đa giao thức (Học xung raw thời gian thực)
Phạm vi điều khiển < 10m, tầm nhìn thẳng (LOS) Không giới hạn qua Cloud Mạng LAN / Wi-Fi / Internet qua TCP/IP
Giám sát trực quan Không Không tích hợp sẵn camera Tích hợp Camera IP trực tiếp trên App
Lưu trữ dữ liệu mã EEPROM cố định của remote Bộ nhớ Cloud / Flash nội Thẻ nhớ MicroSD định dạng chuẩn
Chi phí triển khai Thấp cho 1 thiết bị, cao nếu nhiều Rất cao (1.500.000đ - 3.500.000đ) Tối ưu, phù hợp tự đóng gói (< 500.000đ)

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

  • Must have (Bắt buộc): Giải mã chính xác độ rộng xung hồng ngoại; phát lại tín hiệu 38 kHz; kết nối Wi-Fi ổn định qua tập lệnh AT; giao tiếp TCP Client - Server; app Android có giao diện bấm nút và học lệnh.
  • Should have (Nên có): Lưu trữ mã không giới hạn trên thẻ nhớ MicroSD; tích hợp hiển thị Camera IP RTSP/HTTP trên màn hình ứng dụng; chuyển đổi linh hoạt chế độ Station (STA) và Access Point (AP).
  • Could have (Có thể mở rộng): Tự động phát hiện thiết bị trong mạng qua UDP Broadcast; hẹn giờ bật/tắt thiết bị.
  • Won't have (Chưa thực hiện): Đọc ngược trạng thái dòng tiêu thụ của thiết bị điện lưới AC; điều khiển qua giọng nói.

Thiết kế hệ thống

+-----------------------------------------------------------------------+
|                           KHỐI NGUỒN                                  |
|            Nguồn vào 5V DC ----> AMS1117-3.3V ----> 3.3V VCC          |
+-----------------------------------------------------------------------+
                                  |
+---------------------------------v-------------------------------------+
|                    KHỐI XỬ LÝ TRUNG TÂM (MCU)                         |
|                     STM32F103C8T6 (72MHz)                             |
|                                                                       |
|  [EXTI 0..15] <---- Tín hiệu xung số <---- [TL1838 IR Receiver]      |
|  [TIMx PWM]   ----> Xung mang 38 kHz ----> [IR LED Transmitter Driver]|
|  [USART1]     <---> RX/TX (115200bps)<---> [ESP8266-12E Wi-Fi]       |
|  [SPI1/2]     <---> MOSI/MISO/SCK/CS <---> [MicroSD Card Socket]      |
+-----------------------------------------------------------------------+

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

  • Vi điều khiển chính: STMicroelectronics STM32F103C8T6 (ARM 32-bit Cortex-M3, xung nhịp 72 MHz, 64/128 KB Flash, 20 KB SRAM, điện áp 2.0 - 3.6V).
  • Module mạng không dây: Espressif ESP8266-12E (Chuẩn 802.11 b/g/n, tần số 2.4 GHz, hỗ trợ chế độ STA/AP, bộ tập lệnh AT Command qua UART).
  • Cảm biến & Bán dẫn ngoại vi: Bộ thu hồng ngoại TL1838 (tần số sóng mang 38 kHz, điện áp 2.7 - 5.5V, ngõ ra tích cực mức thấp Active Low), LED phát hồng ngoại 940 nm, IC ổn áp Low Dropout AMS1117-3.3V (dòng ra cực đại 800 mA).
  • Giao tiếp lưu trữ: MicroSD Card qua giao diện SPI Mode (tốc độ truyền dữ liệu lên đến 18 MHz với phần cứng CRC).
  • Nền tảng ứng dụng: Android SDK, Java SE, IDE Android Studio, Keil MDK-ARM v5 Compiler.

Định dạng khung truyền dữ liệu TCP/IP (Data Packet Format)

+---------------+---------------+---------------+-----------------------+---------------+
|  Header (1B)  |  Command (1B) | Dev_ID (2B)   |   Data Payload (N B)  | Checksum (1B) |
|     0xAA      |  0x01..0xFF   |  0x0001..FFFF |  Raw Timings / Key ID |     XOR       |
+---------------+---------------+---------------+-----------------------+---------------+
  • 0xAA: Byte đồng bộ bắt đầu gói tin.
  • Command: 0x01 (Học mã mới), 0x02 (Phát mã điều khiển), 0x03 (Lưu thẻ nhớ), 0x04 (Đọc danh sách mã).
  • Dev_ID: Định danh loại thiết bị (Tivi = 0x0001, Máy lạnh = 0x0002, Quạt = 0x0003...).
  • Data Payload: Mảng thời gian xung (uint16_t microsecond) hoặc mã HEX định danh phím.
  • Checksum: Byte kiểm tra tính toàn vẹn dữ liệu qua thuật toán XOR liên tiếp.

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển chữ V (V-Model) kết hợp kiểm thử theo từng mô-đun phần cứng và phần mềm:

  1. Giai đoạn 1 (Tuần 1 - 4): Thu thập tài liệu, khảo sát các dạng sóng hồng ngoại (NEC, Sony SIRC), đo kiểm đáp ứng tần số của cảm biến TL1838 bằng dao động ký (Oscilloscope).
  2. Giai đoạn 2 (Tuần 5 - 7): Thiết kế sơ đồ nguyên lý (Schematic) và layout mạch in (PCB) 2 lớp; hàn linh kiện và kiểm tra ổn định nguồn cấp từ IC AMS1117-3.3V.
  3. Giai đoạn 3 (Tuần 8 - 10): Lập trình Firmware STM32 (Cấu hình NVIC, External Interrupt EXTI, Timer Input Capture, SPI SD Card, USART Driver) và cấu hình tập lệnh AT trên ESP8266; lập trình app Android với mô hình MVC (Model-View-Controller).
  4. Giai đoạn 4 (Tuần 11 - 13): Tích hợp toàn diện hệ thống, kiểm thử trong môi trường thực tế, đo đạc độ trễ và tối ưu hóa buffer lưu trữ.

Implementation và kết quả

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

Hệ thống triển khai 2 kỹ thuật nhúng quan trọng trên vi điều khiển ARM Cortex-M3:

  1. Giải mã độ rộng xung Raw (Raw Timing Capture): Thay vì giải mã cứng từng giao thức (chỉ dùng được cho 1-2 hãng), hệ thống sử dụng ngắt ngoài (EXTI) kết hợp Timer chạy ở tần số đếm 1 MHz (chu kỳ đếm $1,\mu\text{s}$) để ghi nhận chính xác thời gian mức cao ($T_{\text{high}}$) và mức thấp ($T_{\text{low}}$) của chuỗi xung.
  2. Tái tạo sóng mang 38 kHz (Carrier Modulation Output): Sử dụng Timer PWM trên STM32 tạo xung vuông 38 kHz (Duty Cycle 33% hoặc 50%), kết hợp bật/tắt chân điều khiển theo đúng chuỗi thời gian đã ghi nhận.

1. Cấu hình NVIC và Ngắt ngoài (EXTI) ghi nhận xung IR trên STM32 (Keil C)

#include "stm32f10x.h"

#define MAX_PULSE_BUFFER 200
volatile uint16_t pulse_buffer[MAX_PULSE_BUFFER];
volatile uint8_t pulse_index = 0;
volatile uint8_t capture_done = 0;

void EXTI0_IRQHandler(void) {
    if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
        uint16_t duration = TIM2->CNT; // Đọc giá trị microsecond từ Timer 2
        TIM2->CNT = 0;                 // Reset bộ đếm Timer
        
        if (pulse_index < MAX_PULSE_BUFFER) {
            pulse_buffer[pulse_index++] = duration;
        } else {
            capture_done = 1;
        }
        
        // Đảo cạnh kích hoạt ngắt để bắt chu kỳ tiếp theo (Cạnh lên <-> Cạnh xuống)
        EXTI->RTSR ^= EXTI_Line0;
        EXTI->FTSR ^= EXTI_Line0;
        
        EXTI_ClearITPendingBit(EXTI_Line0);
    }
}

2. Điều khiển giao tiếp ESP8266-12E qua tập lệnh AT và USART

void ESP8266_Init(void) {
    USART_SendString(USART1, "AT+RST\r\n");           // Reset module
    Delay_ms(2000);
    USART_SendString(USART1, "AT+CWMODE=1\r\n");       // Cấu hình chế độ Station
    Delay_ms(500);
    USART_SendString(USART1, "AT+CIPMUX=1\r\n");       // Cho phép đa kết nối
    Delay_ms(500);
    USART_SendString(USART1, "AT+CIPSERVER=1,8080\r\n");// Khởi tạo TCP Server tại Port 8080
    Delay_ms(500);
}

3. Xử lý truyền nhận TCP Client trên Android (Java)

public class TcpClientTask extends AsyncTask<String, Void, String> {
    private String serverIp;
    private int serverPort;

    public TcpClientTask(String ip, int port) {
        this.serverIp = ip;
        this.serverPort = port;
    }

    @Override
    protected String doInBackground(String... params) {
        String command = params[0];
        try (Socket socket = new Socket(serverIp, serverPort);
             OutputStream out = socket.getOutputStream();
             InputStream in = socket.getInputStream()) {
             
            // Gửi lệnh điều khiển xuống mạch STM32 qua Wi-Fi
            out.write(command.getBytes(StandardCharsets.UTF_8));
            out.flush();
            
            byte[] buffer = new byte[1024];
            int bytesRead = in.read(buffer);
            return new String(buffer, 0, bytesRead);
        } catch (IOException e) {
            return "ERROR: " + e.getMessage();
        }
    }
}

Kiểm thử và Đánh giá thực nghiệm

  • Độ chính xác tần số sóng mang PWM: Đạt $38.02,\text{kHz} \pm 0.15,\text{kHz}$ (sai số < 0.4%), đáp ứng hoàn hảo dải thông dải của cảm biến quang TL1838.
  • Thời gian đáp ứng hệ thống (End-to-End Latency): Thời gian từ khi nhấn nút trên giao diện Android đến khi thiết bị điện máy phản hồi lệnh đạt trung bình $115,\text{ms}$ trong mạng Wi-Fi nội bộ.
  • Tỷ lệ nhận diện và học lệnh thành công:
    • Giao thức Sony SIRC (7, 12, 15, 20-bit): Đạt 100% (50/50 lần thử nghiệm).
    • Giao thức NEC (Samsung, LG, các hãng Trung Quốc): Đạt 98% (49/50 lần thử nghiệm).
    • Giao thức điều hòa Daikin / Panasonic (chuỗi data dài > 100 byte): Đạt 96% nhờ tối ưu bộ nhớ đệm RAM trên STM32.
+--------------------------------------------------------------------+
|                TIẾN ĐỘ HOÀN THÀNH TÍNH NĂNG                       |
|                                                                    |
| [X] Giải mã tín hiệu xung IR qua Timer Capture        : 100%       |
| [X] Phát lặp tín hiệu IR 38kHz qua PWM & Transistor   : 100%       |
| [X] Giao tiếp tập lệnh AT ESP8266 qua USART           : 100%       |
| [X] Đọc/ghi cấu trúc mã phím trên thẻ nhớ MicroSD     : 100%       |
| [X] Giao diện điều khiển & Tích hợp Camera IP Android : 100%       |
+--------------------------------------------------------------------+

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

  1. Phương pháp học lệnh đa năng dạng thô (Universal Raw Signal Learning): Khác với các hệ thống truyền thống chỉ đọc được các remote theo thư viện mã cứng (Hardcoded Protocols), giải pháp của đề tài ghi nhận thời gian vi giây thực của chu kỳ xung. Nhờ đó, thiết bị có khả năng tương thích với mọi loại remote hồng ngoại trên thị trường mà không cần phân tích giao thức cụ thể.
  2. Kiến trúc phần cứng tối ưu chi phí: Kết hợp bộ xử lý hiệu năng cao ARM Cortex-M3 (STM32F103C8T6 giá thành thấp) với module ESP8266-12E làm cầu nối truyền thông, giúp giảm thiểu giá thành sản xuất phần cứng xuống dưới $15 USD so với các thiết bị thương mại cùng tính năng ($70 - $150 USD).
  3. Tích hợp cơ chế giám sát hình ảnh đóng kín: Ứng dụng Android không chỉ phát lệnh điều khiển mù (blind command) mà còn nhúng trực tiếp luồng stream từ Camera IP, cho phép người dùng quan sát cánh quạt quay, đèn máy lạnh sáng hay màn hình tivi thay đổi, nâng cao tính an toàn và tiện lợi khi điều khiển từ xa.

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

Kịch bản triển khai (Use Cases)

  • Tự động hóa nhà ở (Home Automation): Thay thế toàn bộ remote phòng khách (TV, Soundbar, Điều hòa) bằng một bảng điều khiển duy nhất trên smartphone; bật điều hòa trước khi về nhà 15 phút.
  • Tòa nhà văn phòng & Phòng họp: Quản trị viên quản lý tập trung hệ thống máy chiếu, máy lạnh trong các phòng họp thông qua kết nối mạng nội bộ, tránh thất lạc remote vật lý.
  • Khách sạn thông minh: Cung cấp trải nghiệm số hóa cho khách lưu trú điều khiển tiện nghi phòng trực tiếp trên ứng dụng khách sạn.

Bảng dự toán chi phí phần cứng (BOM)

Linh kiện / Module Thông số kỹ thuật Số lượng Đơn giá ước tính (VND)
STM32F103C8T6 ARM Cortex-M3 72MHz, LQFP48 1 55.000
ESP8266-12E Wi-Fi SoC 802.11 b/g/n 1 45.000
Mắt thu IR TL1838 38kHz, ngõ ra số 1 5.000
LED phát hồng ngoại Bước sóng 940nm, góc phát rộng 2 4.000
Transistor C1815 / S8050 Khuếch đại dòng phát LED IR 2 2.000
Socket MicroSD + Thẻ 2GB Giao tiếp SPI 1 45.000
AMS1117-3.3V + Linh kiện thụ động Tụ lọc, điện trở, đầu nối 1 bộ 25.000
Bo mạch PCB 2 lớp & Vỏ hộp FR4 gia công hoàn thiện 1 bộ 60.000
Tổng cộng ~ 241.000 VND

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

Hạn chế kỹ thuật

  • Khoảng cách phát hồng ngoại phụ thuộc vào dòng cấp qua LED phát, hiện đạt mức hiệu quả tối đa $6 - 8,\text{m}$ trong góc mở $60^\circ$.
  • Hệ thống chưa tích hợp giao thức bảo mật lớp mạng TLS/SSL giữa ESP8266 và máy chủ khi điều khiển qua môi trường Internet công cộng.
  • Một số dòng điều hòa sử dụng gói tin hồng ngoại siêu dài (> 300 xung trạng thái) đòi hỏi dung lượng bộ đệm RAM lớn hơn.

Hướng phát triển

  1. Nâng cấp chip xử lý trung tâm lên dòng ESP32 tích hợp sẵn Wi-Fi, Bluetooth BLE và bộ nhớ lớn để tinh gọn kiến trúc mạch 2 chip (STM32 + ESP8266) thành thiết kế 1 chip đơn nhất.
  2. Bổ sung giao thức MQTT kết nối với các nền tảng điều khiển IoT mã nguồn mở (Home Assistant, OpenHAB).
  3. Tích hợp giao thức điều khiển bằng giọng nói qua Google Assistant và Apple HomeKit.
  4. Thiết kế cụm LED phát hồng ngoại đa hướng 360 độ sử dụng 4-6 LED công suất cao để phủ kín toàn bộ góc phòng.

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

  • Sinh viên & Nghiên cứu sinh: Tài liệu tham khảo thực tế về lập trình vi điều khiển ARM Cortex-M3 ở tầng thanh ghi (Register-level / Standard Peripheral Library), cấu hình ngắt NVIC, Timer PWM và giao thức truyền thông SPI/UART.
  • Kỹ sư nhúng (Embedded Developers): Nắm bắt kiến trúc giải mã xung thô (Raw Signal Capture) để ứng dụng vào các giải pháp Gateway IoT và tự động hóa không dây.
  • Doanh nghiệp & Startup Smarthome: Cơ sở tham khảo để thương mại hóa các thiết bị IR Blaster giá thành thấp, tối ưu chi phí linh kiện phần cứng (BOM) và quy trình sản xuất.

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

1. Yêu cầu hệ thống phần cứng và phần mềm để triển khai thiết bị là gì?

Hệ thống yêu cầu nguồn cấp ổn định 5V DC (tối thiểu 1A qua cổng Micro-USB hoặc Jack DC). Về phần mềm, thiết bị di động cần chạy hệ điều hành Android từ phiên bản 4.4 (KitKat) trở lên và có kết nối chung mạng Wi-Fi nội bộ với thiết bị trong quá trình cấu hình ban đầu.

2. Thiết bị có thể học được những loại remote nào trên thị trường?

Thiết bị có thể học được hầu hết các loại remote hồng ngoại sử dụng tần số sóng mang từ $36,\text{kHz}$ đến $40,\text{kHz}$ (tần số chuẩn công nghiệp là $38,\text{kHz}$) của TV, máy lạnh, quạt điện, máy chiếu, đầu đĩa... Thiết bị không hỗ trợ các remote sử dụng sóng vô tuyến RF (433MHz/315MHz) hoặc Bluetooth.

3. Khi mất điện hoặc ngắt nguồn, dữ liệu mã đã học có bị mất không?

Không. Toàn bộ chuỗi thời gian xung và cấu hình phím sau khi học đều được lưu trực tiếp vào tập tin nhị phân trên thẻ nhớ MicroSD thông qua giao thức SPI. Khi cấp điện lại, STM32 sẽ tự động đọc lại dữ liệu từ thẻ nhớ vào bộ đệm.

4. Chi phí bảo trì và độ bền linh kiện như thế nào?

Hệ thống sử dụng các linh kiện bán dẫn thể rắn hoàn toàn (Solid-State Components), không có bộ phận chuyển động cơ học nên tuổi thọ trung bình mạch đạt trên 5 năm. Dòng tiêu thụ ở chế độ chờ chỉ khoảng $35,\text{mA}$, tiết kiệm điện năng tối đa.

5. Có thể điều khiển thiết bị khi ở ngoài đường qua mạng 4G/5G không?

Có thể. Để điều khiển ngoài mạng LAN, người dùng cần cấu hình NAT Port Forwarding (Port 8080) trên Router Wi-Fi gia đình tới địa chỉ IP tĩnh của ESP8266 hoặc kết nối thông qua dịch vụ Dynamic DNS (DDNS) / VPN nội bộ.


Kết luận

Đồ án tốt nghiệp "Thiết kế và thi công hệ thống điều khiển thiết bị từ xa thông minh" đã giải quyết triệt để bài toán phân mảnh remote hồng ngoại trong các hộ gia đình và văn phòng. Bằng việc kết hợp sức mạnh xử lý thời gian thực của vi điều khiển ARM Cortex-M3 (STM32F103C8T6), khả năng kết nối mạng linh hoạt của ESP8266-12E và giao diện trực quan trên Android, hệ thống đã hiện thực hóa một trung tâm điều khiển hồng ngoại vạn năng với độ trễ thấp, độ chính xác cao và chi phí tối ưu. Đây là bước đệm công nghệ vững chắc, mở ra tiềm năng tích hợp sâu rộng vào các hệ sinh thái Nhà thông minh toàn diện trong tương lai.