Tutorial ESP32 39/55 - Utilizarea ESP32 ca player muzical Bluetooth | Kitul de învățare IoT ESP32 de la SunFounder
În acest tutorial, vom explora cum să utilizăm ESP32 ca player muzical Bluetooth. ESP32 este un microcontroler puternic care integrează capabilități Wi-Fi și Bluetooth, fiind o alegere excelentă pentru aplicații IoT. Vom folosi un sink Bluetooth A2DP pentru a transmite audio către ESP32, care poate fi apoi redat prin DAC-ul său integrat.
Pentru a realiza acest lucru, vom configura ESP32 cu bibliotecile și configurațiile necesare pentru a gestiona streamingul audio Bluetooth. Până la sfârșitul acestui tutorial, vei avea un player audio Bluetooth funcțional care poate fi controlat de pe smartphone-ul tău sau de pe alte dispozitive compatibile Bluetooth. Pentru o explicație mai detaliată, asigură-te că urmărești videoclipul (în videoclip la 00:00).
Hardware Explicat
Componentele principale pentru acest proiect includ microcontrolerul ESP32 și biblioteca BluetoothA2DPSink. ESP32 este echipat cu un Convertor Digital-Analogic (DAC) integrat care permite ieșirea audio fără hardware suplimentar. Biblioteca BluetoothA2DPSink simplifică procesul de configurare a unui sink audio Bluetooth, permițându-ți să primești fluxuri audio prin Bluetooth.
ESP32 are mai mulți pini GPIO care pot fi configurați pentru diverse scopuri, inclusiv ieșirea audio. În configurația noastră, vom folosi GPIO25 pentru canalele audio stânga și dreapta. Biblioteca se ocupă de gestionarea conexiunii Bluetooth și a streamingului audio, facilitând concentrarea pe aplicație mai degrabă decât pe protocoalele Bluetooth subiacente.
Detalii din Fișa Tehnică
| Producător | Espressif Systems |
|---|---|
| Număr de piesă | ESP32-WROOM-32 |
| Tensiune logică/IO | 3,3 V |
| Tensiune de alimentare | 3,0–3,6 V |
| Curent de ieșire (pe canal) | Până la 40 mA |
| Ghid frecvență PWM | 1 KHz - 40 KHz |
| Limite termice | 125 °C |
| Pachet | QFN48 |
| Note / variante | Sunt disponibile diverse configurații |
- Pinii GPIO obișnuiți pot fi folosiți pentru ieșirea audio.
- Asigură o alimentare corespunzătoare (3,3 V) pentru a evita deteriorarea.
- Menține firmware-ul actualizat pentru o performanță Bluetooth îmbunătățită.
- Folosește antene externe pentru o rază Bluetooth extinsă.
- Fii conștient de limitările ieșirii DAC; folosește DAC-uri externe pentru audio de calitate superioară.
Instrucțiuni de Cablare

Pentru a cabla ESP32 pentru redarea audio Bluetooth, începe prin conectarea ESP32 la o sursă de alimentare. Folosește un cablu USB pentru a-l conecta la computerul tău, care va furniza energia necesară. Apoi, conectează pinii de ieșire audio: conectează canalul audio stânga la GPIO25 și canalul audio dreapta la același pin GPIO25. Poți folosi fire de legătură pentru aceste conexiuni.
Deoarece ESP32 are un DAC integrat, nu ai nevoie de componente suplimentare pentru ieșirea audio. Cu toate acestea, asigură-te că conexiunea la masă este comună între ESP32 și orice echipament audio extern pe care l-ai putea folosi. Această configurație îți va permite să transmiți audio direct către ESP32 prin Bluetooth.
Exemple de Cod & Explicații
Fragmentul de cod următor inițializează sink-ul Bluetooth A2DP și configurează I2S pentru redarea audio.
// ==> Exemplu pentru utilizarea DAC-ului integrat al 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");
}
În funcția setup(), mai întâi configurăm setările I2S, specificând modul ca master și activând DAC-ul integrat. Rata de eșantionare este setată la 44100 Hz, care este standard pentru redarea audio. Sink-ul Bluetooth A2DP este apoi pornit cu un nume specificat, permițându-i să fie recunoscut de alte dispozitive Bluetooth.
Funcția loop() rămâne goală, deoarece biblioteca Bluetooth gestionează streamingul în fundal. Poți verifica codul complet încărcat mai jos în articol pentru mai multe detalii.
Demonstrație / Ce să Te Aștepți
Odată ce configurarea este completă și codul este încărcat, pornește ESP32 și caută dispozitivul numit "ESP32_Bluetooth" pe dispozitivul tău compatibil Bluetooth. La conectare, orice audio redat pe dispozitivul conectat ar trebui să fie transmis prin ESP32. Te poți aștepta la o ieșire audio de înaltă calitate prin DAC, atâta timp cât conexiunile sunt corecte și alimentarea este stabilă.
Capcanele comune includ cablarea incorectă a pinilor de ieșire audio și alimentarea inadecvată. Asigură-te că ESP32 este alimentat corespunzător și că conexiunile la masă sunt sigure. Dacă întâmpini probleme, verifică videoclipul pentru sfaturi de depanare (în videoclip la 00:00).
Marcaje Temporale din Videoclip
- 00:00 Început
- 2:12 Introducere
- 5:22 Cablare explicată
- 7:51 Cod Arduino explicat
- 10:37 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 12:19 Redarea muzicii folosind ESP32 de pe telefonul mobil
- 13:30 Conectarea unui amplificator mai puternic la ESP32
// ==> 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() {
}
Common Course Links
Common Course Files
Resurse și referințe
-
DocumentațieESP32 Tutorial 39/55- SunFounder doc page for Bluetooth music playerdocs.sunfounder.com
Fișiere📁
Nu sunt disponibile fișiere.