PCM5102A I2S DAC modul – digitális–analóg átalakító sztereó kimenettel (3,5 mm jack)
Termék részletei
A PCM5102A DAC-modul digitális I2S hangjelet alakít át jó minőségű sztereó analóg jellé. A 32 bites audioadatok feldolgozásának támogatása és a kis zajszint miatt alkalmas különféle hangtechnikai projektekhez.
A modul akár 384 kHz-es mintavételi frekvenciát támogat, és 3,5 mm-es sztereó jackkimenettel rendelkezik. Az I2S-kapcsolatnak és a kompakt méretnek köszönhetően DIY Hi-Fi rendszerekben, hálózati lejátszókban vagy más hangalkalmazásokban használható.
🔧 Jellemzők:
-
Chip: PCM5102A (Texas Instruments)
-
Interfész: I2S (DIN, BCK, LCK)
-
Felbontás: legfeljebb 32 bit / 384 kHz
-
Tápfeszültség: 3,3–5 V
-
Kimenet: sztereó analóg hang, 3,5 mm-es jack (LOUT, ROUT)
-
Hangminőség: alacsony zajszint, integrált szűrés
-
Támogatott formátumok: I2S, balra igazított (Left Justified)
-
Állítható chipmódok: PCM5100 / PCM5101 / PCM5102A (jumper)
📦 A csomag tartalma:
-
1 × PCM5102A modul
-
1 × Dupont-kábelkészlet
-
1 × egyenes tüskesor
⚙️ Funkciók beállítása jumperekkel:
| Funkció | Pin | HIGH (3,3 V) | LOW (GND) | Leírás |
|---|---|---|---|---|
| FLT | H1L | alacsony késleltetés (IIR) | normál késleltetés (FIR) | Szűrőtípus kiválasztása; a forrás FIR módot javasol normál működéshez. |
| DEMP | H2L | de-emphasis bekapcsolva (44,1 kHz) | de-emphasis kikapcsolva | Régi, előkiemeléssel rögzített felvételekhez; általában kikapcsolva. |
| XSMT | H3L | némítás feloldva, fokozatos indulás | némítás aktív | A kimenet némításának vezérlése. |
| FMT | H4L | balra igazított (Left Justified) | I2S formátum | ESP32-nél rendszerint az I2S formátum szükséges. |
📌 Megjegyzés: A H1L–H4L jumperpontok nincsenek minden modulon gyárilag beállítva.
Az ESP32-höz a megfelelő I2S-formátumot és egyéb funkciókat szükség szerint kell beállítani, különben előfordulhat, hogy a PCM5102A nem ad hangot. Ellenőrizze a konkrét panel kiosztását.
🔧 Az ESP32 ajánlott beállítása:
-
FLT (H1L) = LOW – normál késleltetésű FIR szűrő.
-
DEMP (H2L) = LOW – de-emphasis kikapcsolva.
-
XSMT (H3L) = HIGH – némítás feloldása, fokozatos hangindítás.
-
FMT (H4L) = LOW – szabványos I2S adatformátum.
| Pin | Funkció | Ajánlott állapot ESP32-höz | Hatás |
|---|---|---|---|
| H1L | FLT | LOW (GND) | FIR szűrő, normál késleltetés |
| H2L | DEMP | LOW (GND) | de-emphasis kikapcsolva |
| H3L | XSMT | HIGH (3,3 V) | némítás feloldva |
| H4L | FMT | LOW (GND) | I2S formátum |
A beállítások és a bekötés példáját az alábbi fénykép mutatja.

💻 Kód az ESP32-vel végzett teszteléshez
// Arduino Bluetooth A2DP Sink C++ kód
#include "BluetoothA2DPSink.h"
BluetoothA2DPSink a2dp_sink;
// Callback pre ovládanie hlasitosti
void volume_control_callback(int volume) {
Serial.printf("Current Volume: %d\n", volume);
}
// Callback pre prijímanie metaúdajov médií
void avrc_metadata_callback(uint8_t attribute_id, const uint8_t *value) {
if (value == nullptr) {
return;
}
// Konverzia z uint8_t na char
String metadata = String((const char *)value);
switch (attribute_id) {
case 1: // Názov
Serial.printf("Title: %s\n", metadata.c_str());
break;
case 2: // Interpret
Serial.printf("Artist: %s\n", metadata.c_str());
break;
}
}
void setup() {
Serial.begin(115200);
// I2S konfigurácia
i2s_pin_config_t my_pin_config = {
.bck_io_num = 26, // BCLK
.ws_io_num = 25, // LRC
.data_out_num = 27, // Din
.data_in_num = I2S_PIN_NO_CHANGE
};
a2dp_sink.set_pin_config(my_pin_config);
// Callback funkcie
a2dp_sink.set_on_volumechange(volume_control_callback);
a2dp_sink.set_avrc_metadata_callback(avrc_metadata_callback);
a2dp_sink.start("DENUINO");
Serial.println("Bluetooth A2DP Sink Started");
}
void loop() {
if (Serial.available()) {
String command = Serial.readStringUntil('\n');
command.trim();
if (command == "volume") {
Serial.println("Enter volume intensity (1-100):");
while (!Serial.available()) {
delay(10); // Čaká, kým prídu dáta
}
int volume = Serial.parseInt();
if (volume >= 1 && volume <= 100) {
a2dp_sink.set_volume(volume);
Serial.printf("Volume set to: %d\n", volume);
} else {
Serial.println("Invalid volume value. Please enter a value between 1 and 100.");
}
} else if (command == "media data") {
Serial.println("Requesting media metadata...");
// Metaúdaje sa automaticky zobrazia pomocou callback funkcie
} else {
Serial.println("Unknown command. Use 'volume' or 'media data'.");
}
}
}
Értékelések
Még nincsenek értékelések.



























































