PCM5102A I2S DAC Module – Digital-to-Analog Converter with Stereo Output (3.5 mm Jack)

Almost sold out
The PCM5102A is a high-quality I2S DAC module that converts digital audio into clean analog stereo output for Hi-Fi projects using ESP32, Raspberry Pi and other devices.
5.33 EUR
Lowest price in the last 30 days:
Shown according to the lowest price in the 30 days before the discount.
In stock 1 piece
Internal code: 23852614
Units per package 1
Unit of measure
Measurement quantity 1
ImportChina
Weight 0.003 kg

Product details

This PCM5102A DAC audio module is ideal for anyone who needs high-quality conversion from digital signals to analog audio. Using its I2S interface , the chip can convert up to 32-bit audio with high precision and low noise.

It supports sampling rates up to 384 kHz, has a low-noise stereo output via a 3.5 mm audio jack and an excellent signal-to-noise ratio (SNR). Its compact size and simple wiring make it suitable for DIY Hi-Fi systems, wireless speakers, streaming modules and smart audio players.

 

🔧 Features:

  • Chip: PCM5102A (Texas Instruments)

  • Communication: I2S (DIN, BCK, LCK)

  • Resolution: up to 32-bit / 384 kHz

  • Power supply: 3.3 V – 5 V

  • Output: Stereo audio via 3.5 mm jack (LOUT, ROUT)

  • Output quality: Low-noise outputs with integrated filters

  • Supported formats: I2S, Left Justified

  • Selectable chip modes: PCM5100 / PCM5101 / PCM5102A (jumper)

 

📦 Package contents:

  • 1 × PCM5102A module

  • 1 × set of Dupont cables

  • 1 × straight pin header

 

⚙️ Configuring functions with jumpers:

Function Pin HIGH (3.3 V) LOW (GND) Description
FLT H1L Low latency (IIR) Normal latency (FIR) Low-latency filter suitable for studio applications; the FIR filter at LOW provides the best audio quality
DEMP H2L De-emphasis enabled (@ 44,1 kHz) De-emphasis disabled Used for older CD recordings; usually disabled (LOW).
XSMT H3L Soft unmute (smooth startup) Soft mute (inputs muted) Soft audio muting at startup; HIGH provides a click-free start.
FMT H4L Left-justified format I2S format Choose the correct format – ESP32 and most microcontrollers require LOW (I2S).

 

📌 Note:
On this board, pins H1L–H4L are not configured by default, so they must be manually set for correct operation with ESP32. Without these settings, the PCM5102A module may not work correctly or may produce no audio.

🔧 Recommended settings for ESP32:

  • FLT (H1L) = LOW – normal latency (best quality)

  • DEMP (H2L) = LOW – de-emphasis disabled

  • XSMT (H3L) = HIGH – soft unmute (smooth audio startup)

  • FMT (H4L) = LOW – I2S format (required for ESP32)

Pin Function Status (set for ESP32) Effect on the chip
H1L FLT LOW (connected to GND) Normal-latency FIR filter
H2L DEMP LOW (connected to GND) De-emphasis disabled 
H3L XSMT (mute) HIGH (connected to 3.3 V) Soft un‑mute – smooth audio startup
H4L FMT LOW (connected to GND) I2S audio format (required for ESP32)

 

Connect the module exactly as shown in the photograph below:

 

 

💻 Test code for 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'.");
        }
    }
}

Reviews

No reviews yet.