PCM5102A I2S DAC Modul – Digitálno-Analógový Prevádzač so Stereo Výstupom (3,5 mm Jack)
PCM5102A je kvalitný I2S DAC modul, ktorý prevádza digitálny zvuk na čistý stereo analógový výstup pre Hi-Fi (High Fidelity) projekty s ESP32, Raspberry Pi a inými.
Kategória: | Digitálne Zvukové Moduly |
---|
Tento PCM5102A DAC audio modul je ideálnym riešením pre všetkých, ktorí hľadajú kvalitný prevod digitálneho signálu na analógový zvuk. Pomocou I2S rozhrania dokáže tento čip konvertovať až 32-bitové audio s vysokou presnosťou a minimálnym šumom.
Podporuje vzorkovacie frekvencie až do 384 kHz, má nízkošumový stereo výstup cez 3,5 mm audio jack a výborný pomer signál-šum (SNR). Vďaka kompaktnému rozmeru a jednoduchému zapojeniu je ideálny pre DIY Hi-Fi systémy, bezdrôtové reproduktory, streaming moduly alebo inteligentné prehrávače.
🔧 Vlastnosti:
-
Čip: PCM5102A (Texas Instruments)
-
Komunikácia: I2S (DIN, BCK, LCK)
-
Rozlíšenie: až 32 bit / 384 kHz
-
Napájanie: 3.3 V – 5 V
-
Výstup: Stereo audio cez 3.5 mm jack (LOUT, ROUT)
-
Výstupná kvalita: nízkošumové výstupy s integrovanými filtrami
-
Podporované formáty: I2S, Left Justified
-
Voliteľné režimy čipu: PCM5100 / PCM5101 / PCM5102A (jumper)
📦 Balenie obsahuje:
-
1× PCM5102A modul
-
1× sada dupont káblov
-
1× sada rovného pinového konektora
⚙️ Nastavenie funkcií pomocou prepojok:
Funkcia | Pin | HIGH (3.3 V) | LOW (GND) | Popis |
---|---|---|---|---|
FLT | H1L | Nízka latencia (IIR) | Normálna latencia (FIR) | Nízkolatentný filter—vhodný do studií; FIR pri LOW garantuje najlepšiu kvalitu zvuku |
DEMP | H2L | De‑emphasis zapnutý (@ 44,1 kHz) | De‑emphasis vypnutý | Slúži na staré CD nahrávky; väčšinou vypnutý (LOW) . |
XSMT | H3L | Soft un‑mute (plynulý nábeh) | Soft mute (vstupy utlmené) | Mäkké stlmenie zvuku pri zapnutí; HIGH zaručuje bezklikové spustenie . |
FMT | H4L | Left‑Justified formát | I2S formát | Zvoľ správny formát – pre ESP32/most MCU vyžaduje LOW (I2S) . |
📌 Poznámka:
Na doske nie sú piny H1L–H4L prednastavené, preto je potrebné ich manuálne nastaviť pre správnu funkciu s ESP32. Bez tohto nastavenia modul PCM5102A nemusí správne fungovať alebo nebude vôbec prehrávať zvuk.
🔧 Odporúčané nastavenie pre ESP32:
-
FLT (H1L) = LOW – normálna latencia (najlepšia kvalita)
-
DEMP (H2L) = LOW – de-emphasis vypnutý
-
XSMT (H3L) = HIGH – soft un-mute (plynulý nábeh zvuku)
-
FMT (H4L) = LOW – I2S formát (vyžaduje ESP32)
Pin | Funkcia | Stav (nastav podľa ESP32) | Efekt v čipu |
---|---|---|---|
H1L | FLT | LOW (spojené s GND) | Normálna latencia FIR filtra |
H2L | DEMP | LOW (spojené s GND) | De-emphasis vypnutý |
H3L | XSMT (mute) | HIGH (spojené s 3.3V) | Soft un‑mute – hladký zvukový nábeh |
H4L | FMT | LOW (spojené s GND) | I2S audio formát (nutné pre ESP32) |
Zapojenie modulu má vyzerať presne tak, ako je znázornené na priloženej fotografii nižšie:
💻 Kód na testovanie s ESP32
// 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'.");
}
}
}
Buďte prvý, kto napíše príspevok k tejto položke.