Wake Word Detection Với ESP32-S3: Thiết Bị Phản Hồi Khi Nghe Lệnh
Nâng cao13/6/2026

Wake Word Detection Với ESP32-S3: Thiết Bị Phản Hồi Khi Nghe Lệnh

Dự án này, sẽ giúp bạn chế tạo một thiết bị có khả năng luôn lắng nghe âm thanh từ microphone với ESP32-S3 và microphone INMP441 I2S, khi người dùng nói đúng tên wake word đã lập trình thiết bị sẽ tự động tỉnh giấc và phản hồi.

ESP32-S3Wake WordWakeNetESP-SRAIoTI2SINMP441
0 lượt thích0 người đã làm1 giờ6 bước7 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Sơ đồ kết nối ESP32-S3 với microphone I2S INMP441

Cập nhật 13/06/2026

Tổng quan về ESP32-S3 và INMP441

ESP32-S3 là một vi điều khiển mạnh mẽ với khả năng xử lý âm thanh và hỗ trợ kết nối Wi-Fi và Bluetooth. INMP441 là microphone I2S cho phép thu âm thanh chất lượng cao, rất phù hợp cho các ứng dụng nhận diện giọng nói.

Sơ đồ kết nối

Dưới đây là sơ đồ kết nối giữa ESP32-S3 và microphone INMP441:


ESP32-S3 Pin      INMP441 Pin
------------------------------
GPIO 35 (SCK)     SCK
GPIO 36 (WS)      WS
GPIO 37 (SD)      SD
GND               GND
3.3V              VDD

Chi tiết kết nối

  • SCK (Serial Clock): Kết nối với GPIO 35, đảm bảo tốc độ truyền dữ liệu cao.

  • WS (Word Select): Kết nối với GPIO 36, dùng để điều khiển định dạng dữ liệu âm thanh.

  • SD (Serial Data): Kết nối với GPIO 37, nơi nhận dữ liệu âm thanh từ microphone.

  • GND: Kết nối đất chung cho cả hai thiết bị.

  • 3.3V: Cung cấp điện áp cho microphone INMP441. Hãy kiểm tra yêu cầu điện áp của mô-đun INMP441 cụ thể của bạn trước khi kết nối.

Tip: Đảm bảo rằng các kết nối được thực hiện chắc chắn để tránh mất tín hiệu trong quá trình thu âm.

Lập trình ESP32-S3

Để sử dụng microphone INMP441, bạn cần sử dụng thư viện I2S trong Arduino IDE. Dưới đây là một đoạn mã mẫu để khởi tạo microphone:


#include 

void setup() {
    i2s_config_t i2s_config = {
        .mode = I2S_MODE_MASTER | I2S_MODE_RX,
        .sample_rate = 44100,
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
        .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
        .communication_format = I2S_COMM_FORMAT_I2S_MSB,
        .intr_alloc_flags = 0,
        .dma_buf_count = 8,
        .dma_buf_len = 1024,
        .use_apll = false
    };
    i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);

    i2s_pin_config_t pin_config = {
        .bck_io_num = 35,
        .ws_io_num = 36,
        .data_out_num = I2S_PIN_NO_CHANGE,
        .data_in_num = 37
    };
    i2s_set_pin(I2S_NUM_0, &pin_config);
}