Cari Kode

Tutorial ESP32 39/55 - Menggunakan ESP32 sebagai Pemutar Musik Bluetooth | Kit Pembelajaran IoT ESP32 dari SunFounder

Tutorial ESP32 39/55 - Menggunakan ESP32 sebagai Pemutar Musik Bluetooth | Kit Pembelajaran IoT ESP32 dari SunFounder

Dalam tutorial ini, kita akan mempelajari cara memanfaatkan ESP32 sebagai pemutar musik Bluetooth. ESP32 adalah mikrokontroler yang kuat yang mengintegrasikan kemampuan Wi-Fi dan Bluetooth, menjadikannya pilihan yang sangat baik untuk aplikasi IoT. Kita akan menggunakan sink A2DP Bluetooth untuk mengalirkan audio ke ESP32, yang kemudian dapat dikeluarkan melalui DAC internalnya.

modul_audio

Untuk mencapai hal ini, kita akan mengatur ESP32 dengan pustaka dan konfigurasi yang diperlukan untuk menangani streaming audio Bluetooth. Di akhir tutorial ini, Anda akan memiliki pemutar audio Bluetooth yang berfungsi yang dapat dikendalikan dari ponsel cerdas atau perangkat berkemampuan Bluetooth lainnya. Untuk penjelasan yang lebih rinci, pastikan untuk menonton video (di video pada 00:00).

gambar_speaker

Penjelasan Perangkat Keras

Komponen utama untuk proyek ini termasuk mikrokontroler ESP32 dan pustaka BluetoothA2DPSink. ESP32 dilengkapi dengan Konverter Digital-ke-Analog (DAC) internal yang memungkinkan keluaran audio tanpa perangkat keras tambahan. Pustaka BluetoothA2DPSink menyederhanakan proses pengaturan sink audio Bluetooth, memungkinkan Anda menerima aliran audio melalui Bluetooth.

ESP32 memiliki banyak pin GPIO yang dapat dikonfigurasi untuk berbagai keperluan, termasuk keluaran audio. Dalam pengaturan kami, kami akan menggunakan GPIO25 untuk saluran audio kiri dan kanan. Pustaka menangani pengelolaan koneksi Bluetooth dan streaming audio, sehingga memudahkan untuk fokus pada aplikasi daripada protokol Bluetooth yang mendasarinya.

Detail Datasheet

Produsen Espressif Systems
Nomor bagian ESP32-WROOM-32
Tegangan logika/IO 3,3 V
Tegangan suplai 3,0–3,6 V
Arus keluaran (per saluran) Hingga 40 mA
Panduan frekuensi PWM 1 KHz - 40 KHz
Batas termal 125 °C
Kemasan QFN48
Catatan / varian Berbagai konfigurasi tersedia

 

  • Pin GPIO umum dapat digunakan untuk keluaran audio.
  • Pastikan suplai daya yang tepat (3,3 V) untuk menghindari kerusakan.
  • Jaga firmware tetap diperbarui untuk kinerja Bluetooth yang lebih baik.
  • Gunakan antena eksternal untuk jangkauan Bluetooth yang lebih baik.
  • Perhatikan batasan keluaran DAC; gunakan DAC eksternal untuk kualitas audio yang lebih tinggi.

Instruksi Pengkabelan

esp32-39_bluetooth_audio_wiring

Untuk menghubungkan ESP32 untuk pemutaran audio Bluetooth, mulailah dengan menghubungkan ESP32 ke sumber daya. Gunakan kabel USB untuk menghubungkannya ke komputer Anda, yang akan menyediakan daya yang diperlukan. Selanjutnya, sambungkan pin keluaran audio: sambungkan saluran audio kiri ke GPIO25 dan saluran audio kanan ke pin GPIO25 yang sama. Anda dapat menggunakan kabel jumper untuk koneksi ini.

Karena ESP32 memiliki DAC internal, Anda tidak memerlukan komponen tambahan untuk keluaran audio. Namun, pastikan koneksi ground sama antara ESP32 dan peralatan audio eksternal apa pun yang mungkin Anda gunakan. Pengaturan ini akan memungkinkan Anda untuk mengalirkan audio langsung ke ESP32 melalui Bluetooth.

Contoh Kode & Panduan

Cuplikan kode berikut menginisialisasi sink A2DP Bluetooth dan mengatur konfigurasi I2S untuk pemutaran audio.


// ==> Contoh untuk menggunakan DAC internal 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");
}

Dalam fungsi setup(), pertama-tama kita mengonfigurasi pengaturan I2S, menentukan mode sebagai master dan mengaktifkan DAC internal. Laju sampel diatur ke 44100 Hz, yang merupakan standar untuk pemutaran audio. Sink A2DP Bluetooth kemudian dimulai dengan nama tertentu, memungkinkannya dikenali oleh perangkat Bluetooth lainnya.

Fungsi loop() tetap kosong, karena pustaka Bluetooth menangani streaming di latar belakang. Anda dapat memeriksa kode lengkap yang dimuat di bawah artikel untuk detail lebih lanjut.

Demonstrasi / Apa yang Diharapkan

Setelah pengaturan selesai dan kode diunggah, nyalakan ESP32 dan cari perangkat bernama "ESP32_Bluetooth" di perangkat berkemampuan Bluetooth Anda. Setelah terhubung, audio apa pun yang diputar di perangkat yang terhubung akan mengalir melalui ESP32. Anda dapat mengharapkan keluaran audio berkualitas tinggi melalui DAC selama koneksi benar dan suplai daya stabil.

Kesalahan umum termasuk pengkabelan pin keluaran audio yang salah dan suplai daya yang tidak memadai. Pastikan ESP32 diberi daya dengan benar dan koneksi ground aman. Jika Anda mengalami masalah, periksa video untuk tips pemecahan masalah (di video pada 00:00).

Stempel Waktu Video

  • 00:00 Mulai
  • 2:12 Pendahuluan
  • 5:22 Penjelasan pengkabelan
  • 7:51 Penjelasan Kode Arduino
  • 10:37 Memilih papan ESP32 dan port COM di Arduino IDE
  • 12:19 Memutar musik menggunakan ESP32 dari ponsel
  • 13:30 Menghubungkan amplifier yang lebih kuat ke ESP32

Gambar

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
Bahasa: 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() {
}

Sumber daya & referensi

Berkas📁

Tidak ada file tersedia.