Task-free I2S speaker (audio sink) component for ESP-IDF v6.0.x, built on the modern i2s_std driver. Application calls a blocking i2s_spk_send_buffer() to hand off pre-filled audio buffers; there is no internal FreeRTOS task and no TX-side application callback — the blocking call's return is the sole completion signal. Counts DMA underruns from the driver's own TX interrupt. Drives I2S DAC modules such as the PCM5102A (GY-PCM5102).
RMT-backed pulse train generator for ESP32. Configurable pulse width, period and count, with push-pull or open-drain (open-collector) output for buses that already have an external pull-up.