ESP32 Tutorial 39/55 - ESP32 gebruiken als Bluetooth-muziekspeler | SunFounder's ESP32 IoT-leerkit
In deze tutorial verkennen we hoe we de ESP32 kunnen gebruiken als Bluetooth-muziekspeler. De ESP32 is een krachtige microcontroller die Wi-Fi- en Bluetooth-mogelijkheden integreert, waardoor het een uitstekende keuze is voor IoT-toepassingen. We gebruiken een Bluetooth A2DP-sink om audio naar de ESP32 te streamen, die vervolgens kan worden uitgevoerd via de ingebouwde DAC.
Om dit te bereiken, stellen we de ESP32 in met de benodigde bibliotheken en configuraties om Bluetooth-audiostreaming te verwerken. Aan het einde van deze tutorial heb je een werkende Bluetooth-audiospeler die kan worden bediend vanaf je smartphone of andere Bluetooth-apparaten. Voor een meer gedetailleerde uitleg, bekijk zeker de video (in video op 00:00).
Hardware uitgelegd
De belangrijkste componenten voor dit project zijn de ESP32-microcontroller en de BluetoothA2DPSink-bibliotheek. De ESP32 is uitgerust met een ingebouwde digitaal-naar-analoogomzetter (DAC) die audio-uitvoer mogelijk maakt zonder extra hardware. De BluetoothA2DPSink-bibliotheek vereenvoudigt het proces van het instellen van een Bluetooth-audiosink, waardoor je audiostreams via Bluetooth kunt ontvangen.
De ESP32 heeft meerdere GPIO-pinnen die kunnen worden geconfigureerd voor verschillende doeleinden, waaronder audio-uitvoer. In onze opstelling gebruiken we GPIO25 voor de linker- en rechteraudiokanalen. De bibliotheek zorgt voor het beheren van de Bluetooth-verbinding en audiostreaming, waardoor het gemakkelijker is om je te concentreren op de toepassing in plaats van op de onderliggende Bluetooth-protocollen.
Datasheet-details
| Fabrikant | Espressif Systems |
|---|---|
| Onderdeelnummer | ESP32-WROOM-32 |
| Logica/IO-spanning | 3,3 V |
| Voedingsspanning | 3,0–3,6 V |
| Uitgangsstroom (per kanaal) | Tot 40 mA |
| PWM-frequentierichtlijn | 1 kHz - 40 kHz |
| Thermische limieten | 125 °C |
| Behuizing | QFN48 |
| Opmerkingen / varianten | Verschillende configuraties beschikbaar |
- Algemene GPIO-pinnen kunnen worden gebruikt voor audio-uitvoer.
- Zorg voor een juiste voeding (3,3 V) om schade te voorkomen.
- Houd de firmware up-to-date voor verbeterde Bluetooth-prestaties.
- Gebruik externe antennes voor een groter Bluetooth-bereik.
- Wees je bewust van de beperkingen van de DAC-uitvoer; gebruik externe DAC's voor audio van hogere kwaliteit.
Bedradingsinstructies

Om de ESP32 te bedraden voor Bluetooth-audioweergave, begin je met het aansluiten van de ESP32 op een stroombron. Gebruik een USB-kabel om deze op je computer aan te sluiten, die de benodigde stroom levert. Sluit vervolgens de audio-uitvoerpinnen aan: verbind het linker audiokanaal met GPIO25 en het rechter audiokanaal met dezelfde GPIO25-pin. Je kunt jumperdraden gebruiken voor deze verbindingen.
Omdat de ESP32 een ingebouwde DAC heeft, heb je geen extra componenten nodig voor audio-uitvoer. Zorg er echter voor dat de aardverbinding gemeenschappelijk is tussen de ESP32 en eventuele externe audioapparatuur die je gebruikt. Deze opstelling stelt je in staat om audio rechtstreeks naar de ESP32 via Bluetooth te streamen.
Codevoorbeelden & uitleg
Het volgende codefragment initialiseert de Bluetooth A2DP-sink en stelt de I2S-configuratie in voor audioweergave.
// ==> Voorbeeld om de ingebouwde DAC van ESP32 te gebruiken
#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");
}
In de setup()-functie configureren we eerst de I2S-instellingen, waarbij we de modus als master specificeren en de ingebouwde DAC inschakelen. De samplerate is ingesteld op 44100 Hz, wat standaard is voor audioweergave. De Bluetooth A2DP-sink wordt vervolgens gestart met een opgegeven naam, zodat deze kan worden herkend door andere Bluetooth-apparaten.
De loop()-functie blijft leeg, omdat de Bluetooth-bibliotheek de streaming op de achtergrond afhandelt. Je kunt de volledige code hieronder in het artikel bekijken voor meer details.
Demonstratie / Wat te verwachten
Zodra de opstelling compleet is en de code is geüpload, zet je de ESP32 aan en zoek je naar het apparaat met de naam "ESP32_Bluetooth" op je Bluetooth-apparaat. Na het verbinden wordt alle audio die op het verbonden apparaat wordt afgespeeld, via de ESP32 gestreamd. Je kunt hoogwaardige audio-uitvoer via de DAC verwachten, zolang de verbindingen correct zijn en de voeding stabiel is.
Veelvoorkomende valkuilen zijn onjuiste bedrading van de audio-uitvoerpinnen en onvoldoende voeding. Zorg ervoor dat de ESP32 correct wordt gevoed en dat de aardverbindingen stevig zijn. Als je problemen tegenkomt, bekijk dan de video voor tips voor probleemoplossing (in video op 00:00).
Videotijdstempels
- 00:00 Start
- 2:12 Introductie
- 5:22 Bedrading uitgelegd
- 7:51 Arduino-code uitgelegd
- 10:37 ESP32-board en COM-poort selecteren in Arduino IDE
- 12:19 Muziek afspelen met ESP32 vanaf mobiele telefoon
- 13:30 Krachtigere versterker aansluiten op 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
Hulpmiddelen en referenties
-
DocumentatieESP32 Tutorial 39/55 - SunFounder doc page for Bluetooth music playerdocs.sunfounder.com
Bestanden📁
Geen bestanden beschikbaar.