QUAY LẠI TÀI LIỆU KỸ THUẬT
Firmware•12 phút•22/09/2026

Giải mã xung hồng ngoại chính xác cao với ESP-IDF RMT Peripheral

Biên soạn bởi: Senior Embedded Engineer
TỔNG QUAN TÀI LIỆU

Phân tích cấu trúc xung tín hiệu điều khiển điều hòa Daikin / Panasonic, cách sử dụng ngoại vi RMT của ESP32 để đo độ rộng xung ở cấp độ microsecond và thuật toán nén xung lưu vào NVS.

1. Cơ sở lý thuyết và Nguyên lý hoạt động

Trong các hệ thống nhúng thời gian thực, tính ổn định và khả năng tái lập tín hiệu phụ thuộc trực tiếp vào cách cấu hình ngoại vi phần cứng. Thay vì sử dụng phương pháp bit-banging hoặc ngắt phần mềm (vốn dễ bị trễ do các task ưu tiên cao hơn của hệ điều hành), chúng ta sử dụng ngoại vi chuyên dụng như RMT (Remote Control) hoặc TWAI (CAN-Bus) tích hợp sẵn trong silicon của ESP32.

esp_idf_rmt_config.cESP-IDF v5.5 Native
#include "driver/rmt_rx.h"
#include "esp_log.h"

#define IR_RX_GPIO_NUM      5
#define IR_RESOLUTION_HZ    1000000 // 1MHz resolution (1 tick = 1us)

rmt_channel_handle_t rx_channel = NULL;
rmt_rx_channel_config_t rx_config = {
    .clk_src = RMT_CLK_SRC_DEFAULT,
    .resolution_hz = IR_RESOLUTION_HZ,
    .mem_block_symbols = 64, // 64 words hardware ringbuffer
    .gpio_num = IR_RX_GPIO_NUM,
};

ESP_ERROR_CHECK(rmt_new_rx_channel(&rx_config, &rx_channel));
ESP_LOGI("CHOTDIY_IR", "RMT Rx Channel initialized with 1us resolution.");

2. Kiểm tra tính toàn vẹn và Phục hồi lỗi

Trước khi lưu trữ bất kỳ dữ liệu cấu hình hoặc lệnh IR nào vào bộ nhớ không bay hơi (NVS), hệ thống luôn tính toán mã kiểm tra CRC-32. Nếu phát hiện sai lệch dữ liệu do mất điện đột ngột trong chu kỳ ghi Flash, hệ thống sẽ tự động chuyển về cấu hình an toàn mặc định (Fail-safe State).

THỬ NGHIỆM TRỰC TIẾP TRÊN PHẦN CỨNG?
Cắm thiết bị NexusIR S3 vào máy tính và nạp ngay firmware mẫu.
MỞ WEB FLASHER