Search Code

Hướng dẫn ESP32 39/55 - Sử dụng ESP32 làm Trình phát nhạc Bluetooth | Bộ học IoT ESP32 của SunFounder

Hướng dẫn ESP32 39/55 - Sử dụng ESP32 làm Trình phát nhạc Bluetooth | Bộ học IoT ESP32 của SunFounder

Trong hướng dẫn này, chúng ta sẽ khám phá cách sử dụng ESP32 như một trình phát nhạc Bluetooth. ESP32 là một bộ vi điều khiển mạnh mẽ tích hợp khả năng Wi-Fi và Bluetooth, khiến nó trở thành lựa chọn tuyệt vời cho các ứng dụng IoT. Chúng ta sẽ sử dụng bộ thu A2DP Bluetooth để truyền phát âm thanh đến ESP32, sau đó có thể xuất ra thông qua bộ chuyển đổi kỹ thuật số sang tương tự (DAC) tích hợp.

mô_đun_âm_thanh

Để đạt được điều này, chúng ta sẽ thiết lập ESP32 với các thư viện và cấu hình cần thiết để xử lý truyền phát âm thanh Bluetooth. Đến cuối hướng dẫn này, bạn sẽ có một trình phát âm thanh Bluetooth hoạt động có thể điều khiển từ điện thoại thông minh hoặc các thiết bị hỗ trợ Bluetooth khác. Để có giải thích chi tiết hơn, hãy xem video (trong video tại 00:00).

hình_loa

Giải thích về Phần cứng

Các thành phần chính cho dự án này bao gồm bộ vi điều khiển ESP32 và thư viện BluetoothA2DPSink. ESP32 được trang bị bộ chuyển đổi kỹ thuật số sang tương tự (DAC) tích hợp cho phép xuất âm thanh mà không cần phần cứng bổ sung. Thư viện BluetoothA2DPSink đơn giản hóa quá trình thiết lập bộ thu âm thanh Bluetooth, cho phép bạn nhận luồng âm thanh qua Bluetooth.

ESP32 có nhiều chân GPIO có thể được cấu hình cho nhiều mục đích khác nhau, bao gồm cả xuất âm thanh. Trong thiết lập của chúng ta, chúng ta sẽ sử dụng GPIO25 cho cả kênh âm thanh trái và phải. Thư viện xử lý việc quản lý kết nối Bluetooth và truyền phát âm thanh, giúp bạn tập trung vào ứng dụng thay vì các giao thức Bluetooth cơ bản.

Chi tiết Bảng dữ liệu

Nhà sản xuất Espressif Systems
Số bộ phận ESP32-WROOM-32
Điện áp Logic/IO 3.3 V
Điện áp cung cấp 3.0–3.6 V
Dòng điện đầu ra (mỗi kênh) Lên đến 40 mA
Hướng dẫn tần số PWM 1 KHz - 40 KHz
Giới hạn nhiệt độ 125 °C
Đóng gói QFN48
Ghi chú / biến thể Có nhiều cấu hình khác nhau

 

  • Các chân GPIO thông thường có thể được sử dụng để xuất âm thanh.
  • Đảm bảo nguồn điện phù hợp (3.3 V) để tránh hư hỏng.
  • Giữ firmware được cập nhật để cải thiện hiệu suất Bluetooth.
  • Sử dụng ăng-ten ngoài để tăng phạm vi Bluetooth.
  • Lưu ý các giới hạn đầu ra của DAC; sử dụng DAC ngoài để có chất lượng âm thanh cao hơn.

Hướng dẫn Đấu dây

esp32-39_bluetooth_audio_wiring

Để đấu dây ESP32 cho phát lại âm thanh Bluetooth, hãy bắt đầu bằng cách kết nối ESP32 với nguồn điện. Sử dụng cáp USB để kết nối nó với máy tính của bạn, nguồn điện cần thiết sẽ được cung cấp. Tiếp theo, kết nối các chân xuất âm thanh: kết nối kênh âm thanh trái với GPIO25 và kênh âm thanh phải với cùng chân GPIO25. Bạn có thể sử dụng dây jumper cho các kết nối này.

Vì ESP32 có DAC tích hợp, bạn không cần bất kỳ thành phần bổ sung nào để xuất âm thanh. Tuy nhiên, hãy đảm bảo kết nối đất chung giữa ESP32 và bất kỳ thiết bị âm thanh ngoài nào bạn có thể sử dụng. Thiết lập này sẽ cho phép bạn truyền phát âm thanh trực tiếp đến ESP32 qua Bluetooth.

Ví dụ Mã & Hướng dẫn

Đoạn mã sau khởi tạo bộ thu A2DP Bluetooth và thiết lập cấu hình I2S để phát lại âm thanh.


// ==> Ví dụ sử dụng DAC tích hợp của ESP32

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,
    .bits_per_sample = (i2s_bits_per_sample_t)16,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}

Trong hàm setup(), trước tiên chúng ta cấu hình các cài đặt I2S, chỉ định chế độ là master và bật DAC tích hợp. Tốc độ lấy mẫu được đặt ở 44100 Hz, đây là tiêu chuẩn cho phát lại âm thanh. Bộ thu A2DP Bluetooth sau đó được khởi động với một tên cụ thể, cho phép nó được nhận diện bởi các thiết bị Bluetooth khác.

Hàm loop() vẫn trống, vì thư viện Bluetooth xử lý việc truyền phát trong nền. Bạn có thể xem mã hoàn chỉnh được tải bên dưới bài viết để biết thêm chi tiết.

Trình diễn / Điều gì sẽ xảy ra

Sau khi thiết lập hoàn tất và mã được tải lên, hãy bật nguồn ESP32 và tìm kiếm thiết bị có tên "ESP32_Bluetooth" trên thiết bị hỗ trợ Bluetooth của bạn. Khi kết nối, bất kỳ âm thanh nào phát trên thiết bị được kết nối sẽ truyền qua ESP32. Bạn có thể mong đợi chất lượng âm thanh cao qua DAC miễn là các kết nối chính xác và nguồn điện ổn định.

Các lỗi thường gặp bao gồm đấu dây sai các chân xuất âm thanh và nguồn điện không đủ. Đảm bảo ESP32 được cấp nguồn đúng cách và các kết nối đất an toàn. Nếu bạn gặp bất kỳ sự cố nào, hãy xem video để biết các mẹo khắc phục sự cố (trong video tại 00:00).

Mốc thời gian Video

  • 00:00 Bắt đầu
  • 2:12 Giới thiệu
  • 5:22 Giải thích về đấu dây
  • 7:51 Giải thích mã Arduino
  • 10:37 Chọn bo mạch ESP32 và cổng COM trong Arduino IDE
  • 12:19 Phát nhạc bằng ESP32 từ điện thoại di động
  • 13:30 Kết nối bộ khuếch đại mạnh hơn với ESP32

Hình ảnh

esp32-39_bluetooth_audio_wiring
esp32-39_bluetooth_audio_wiring
speaker_pic
speaker_pic
audio_module
audio_module
840-ESP32 Tutorial 39/55- Arduino code for playing audio via bluetooth
Ngôn ngữ: C++

// ==> Example to use built in DAC of ESP32

// R,L connect to GPIO25

#include "BluetoothA2DPSink.h"

BluetoothA2DPSink a2dp_sink;

void setup() {
  const i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
    .sample_rate = 44100,                          // corrected by info from bluetooth
    .bits_per_sample = (i2s_bits_per_sample_t)16,  //the DAC module will only take the 8bits from MSB
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = (i2s_comm_format_t)I2S_COMM_FORMAT_STAND_MSB,
    .intr_alloc_flags = 0,  // default interrupt priority
    .dma_buf_count = 8,
    .dma_buf_len = 64,
    .use_apll = false
  };

  a2dp_sink.set_i2s_config(i2s_config);
  a2dp_sink.start("ESP32_Bluetooth");
}


void loop() {
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.