7.3 Bluetooth-Audio-Player¶
Das Ziel des Projekts ist es, eine einfache Lösung für das Abspielen von Audio von einem Bluetooth-fähigen Gerät mithilfe des eingebauten DAC des ESP32 bereitzustellen.
Das Projekt umfasst die Verwendung der ESP32-A2DP
-Bibliothek, um Audiodaten
von einem Bluetooth-fähigen Gerät zu empfangen. Die empfangenen Audiodaten werden dann an den internen
DAC des ESP32 über die I2S-Schnittstelle übertragen. Die I2S-Schnittstelle ist konfiguriert, um im Master-Modus,
Sendemodus und mit eingebautem DAC zu arbeiten. Die Audiodaten werden dann über den Lautsprecher, der an den DAC angeschlossen ist, wiedergegeben.
Beim Verwenden des internen DAC des ESP32 ist zu beachten, dass das Ausgangsspannungsniveau auf 1,1 V begrenzt ist. Daher wird empfohlen, einen externen Verstärker zu verwenden, um das Ausgangsspannungsniveau auf das gewünschte Niveau zu erhöhen. Es ist auch wichtig, sicherzustellen, dass die Audiodaten im richtigen Format und mit der richtigen Abtastrate vorliegen, um Verzerrungen oder Geräusche während der Wiedergabe zu vermeiden.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
ESP32 Starter Kit |
320+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
|
- |
Betriebsschritte
Bauen Sie den Schaltkreis auf.
Da dies ein Mono-Verstärker ist, können Sie IO25 an den L- oder R-Pin des Audioverstärkermoduls anschließen.
Der 10K-Widerstand wird verwendet, um hochfrequentes Rauschen zu reduzieren und die Lautstärke des Audios zu verringern. Er bildet zusammen mit der parasitären Kapazität des DAC und des Audioverstärkers einen RC-Tiefpassfilter. Dieser Filter verringert die Amplitude von Hochfrequenzsignalen und reduziert so effektiv hochfrequentes Rauschen. Das Hinzufügen des 10K-Widerstands macht die Musik weicher und eliminiert unerwünschtes Hochfrequenzrauschen.
Wenn die Musik auf Ihrer SD-Karte bereits leise ist, können Sie den Widerstand entfernen oder durch einen kleineren Wert ersetzen.
Öffnen Sie den Code.
Öffnen Sie die Datei
7.3_bluetooth_audio_player.ino
unter dem Pfadesp32-starter-kit-main\c\codes\7.3_bluetooth_audio_player
.Nachdem Sie das Board (ESP32 Dev Module) und den passenden Port ausgewählt haben, klicken Sie auf den Upload-Knopf.
Hier wird die
ESP32-A2DP
-Bibliothek verwendet, siehe Manuelle Installation für eine Anleitung zur Installation.
Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf den Hochladen-Button.
Sobald der Code erfolgreich hochgeladen wurde, schalten Sie das Bluetooth-fähige Gerät ein und suchen Sie nach verfügbaren Geräten, dann verbinden Sie sich mit dem
ESP32_Bluetooth
.Spielen Sie Audio auf dem Gerät ab, und der Ton sollte über den Lautsprecher, der an den ESP32 angeschlossen ist, wiedergegeben werden.
Code-Erklärung
Der Code beginnt mit dem Einbinden der Bibliothek
BluetoothA2DPSink.h
, die verwendet wird, um Audiodaten von dem Bluetooth-fähigen Gerät zu empfangen. DasBluetoothA2DPSink
-Objekt wird dann erstellt und mit den Einstellungen der I2S-Schnittstelle konfiguriert.#include "BluetoothA2DPSink.h" BluetoothA2DPSink a2dp_sink;
In der Setup-Funktion initialisiert der Code eine
i2s_config_t struct
mit der gewünschten Konfiguration für die I2S (Inter-IC Sound)-Schnittstelle.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"); }
Die I2S-Schnittstelle wird verwendet, um digitale Audiodaten zwischen Geräten zu übertragen.
Die Konfiguration umfasst den
I2S mode
,sample rate
,bits per sample
,channel format
,communication format
,interrupt allocation flags
,DMA buffer count
,DMA buffer length
und ob der APLL (Audio PLL) verwendet wird oder nicht.Die
i2s_config_t struct
wird dann als Argument an dieset_i2s_config
-Funktion desBluetoothA2DPSink
-Objekts übergeben, um die I2S-Schnittstelle für die Audiowiedergabe zu konfigurieren.Die
start
-Funktion desBluetoothA2DPSink
-Objekts wird aufgerufen, um den Bluetooth-Audioempfänger zu starten und die Audiowiedergabe über den eingebauten DAC zu beginnen.