Skip to content

sonocotta/esp32-audio-dock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 Audio Docks and Louder ESP

Open Source Hardware Open Source Software I sell on Tindie
Dev Chat

ESP32 Audio Docks is a range of development boards (earlier docks) that allow you to develop Audio solutions based on ESP32 chips. These were created to make Audio development entry as easy and inexpensive as possible.

First generation docks

image

HiFi-ESP32 Loud-ESP32
DSC_0009 DSC_0017
Amped-ESP32 Louder-ESP32
DSC_0005 DSC_0019

Table of Contents

Motivation

I spent the last few years developing different solutions based on ESP devices. It all started with ESP8266, where CPU power is not really sufficient to do real-time decoding, so you're limited to a rather simple ding-dong business. Then ESP32 came, bringing two much more capable cores, so you have a powerhouse to handle communication and decoding at the same time. Perhaps most importantly, it also came with SPIRAM, so you can do decent buffering (essential for streamed content). Now, new ESP32 C-Series and S-Series chips are entering the market, and their potential is mostly unrealized as of today.

I created those docks and subsequently development boards to be able to quickly prototype for the whole range of ESP8266 and ESP32 chips, starting with the simplest finger-sized toys and going all the way up to full-sized speakers.

HiFi-ESP32

The HiFi-ESP32 is a first-in-line product that uses the legendary PCM5100 series DAC with supreme audio quality. It exposes line-level output that you can plug into a stereo amplifier. Analog power comes through an Ultra-low-noise LDO, making sure no interference from the MCU comes through to your speakers. Spend as much as you need on the external amp to deliver the sound you like (personally I prefer late 80's audio gear).

DSC_0002

Loud-ESP32

The Loud-ESP32 uses a dual MAX98357 HiFi DAC with a built-in highly efficient D-class amp to deliver 3 to 5W of music power directly to your speakers. It is not too loud, but also very simple to use and fun to play with. When DAC is not in use, it goes into shutdown mode, making sure no hissing will keep you up at night. It powers from a standard USB-C power source, like a phone charger, etc.

DSC_0002

Amped-ESP32

The PCM5100 HiFi DAC is combined with a highly efficient TPA3110D2 D-class amplifier. It brings all the best from the HiFi model and adds an onboard amp to form a complete solution that can be paired with speakers directly. It uses an external power source to feed hungry amps and the host MCU using an onboard drop-down converter. It has similar power capabilities to the Louder model, but it is much simpler to use since it only needs a valid I2S signal to operate, so a simple book example code will do it.

DSC_0003

Louder-ESP32

The Louder-ESP32 is a top-of-the-range model that uses a modern, highly capable TAS5805M DAC and is aimed to be paired with medium-to-large speaker systems. With 25W per channel stereo output, it packs a punch and can easily enliven living quarters or dorm rooms. It is highly efficient, but much more demanding for power when cranked; therefore, it also uses an external power adapter using a standard barrel jack. This DAC has a built-in DSP, so you can have a lot of fun with complex EQ, soft-clipping, DRC compression, and AGL tools among other things.

DSC_0013

Features

First generation docks
ESP Audio Solo ESP Audio Duo Hifi ESP Louder ESP
image image image image
ESP8266, ESP32C3, ESP32S2 Mini modules ESP32 Mini Module ESP32 Mini Module ESP32 Mini Module
Single I2S DAC (MAX98357) with built in D-Class amp Dual I2S DAC (MAX98357) with built in D-Class amp PCM5100A 32bit Stereo DAC -100 dB typical noise level Stereo I2S DAC (TAS5805M) with built in D-Class amp
3W 2x 3W Non-amplified stereo output 2x 32W (4Ω, 1% THD+N)
1.5W 2x 1.5W Non-amplified stereo output 2x 22W (8Ω, 1% THD+N)
8MB PSRAM (4MB usable) 8MB PSRAM (4MB usable) 8MB PSRAM (4MB usable)
WiFi (ESP8266, ESP32S2) WiFi + BT5.0 (ESP32C3) WiFi + BT4.2 + BLE WiFi + BT4.2 + BLE WiFi + BT4.2 + BLE Ethernet
HiFi-ESP32 Loud-ESP32 Amped-ESP32 Louder-ESP32
Image (ESP32 DSC_0002 DSC_0002 DSC_0003 DSC_0013
MCU ESP32-WROVER-N8R8 onboard ESP32-WROVER-N8R8 onboard ESP32-WROVER-N8R8 onboard ESP32-WROVER-N8R8 onboard
Image (ESP32-S3) DSC_0005 DSC_0009 coming soon DSC_0012
MCU (S3) ESP32-S3-WROOM-N8R8 onboard ESP32-S3-WROOM-N8R8 onboard ESP32-S3-WROOM-N8R8 onboard ESP32-S3-WROOM-N8R8 onboard
DAC PCM5100A 32bit Stereo DAC -100 dB typical noise level Dual I2S DAC (MAX98357) with built in D-Class amp PCM5100A 32bit Stereo DAC working with
TPA3110D2 D-Class amp
Stereo I2S DAC (TAS5805M) with built in D-Class amp
Output (4Ω) Non-amplified stereo output, 2.1V RMS 2x 5W 2x 22W (4Ω, 1% THD+N) at 16V
2x 32W (4Ω, 1% THD+N) at 20V
1x 40W (4Ω, 1% THD+N) at 20V (bridged)
2x 22W (4Ω, 1% THD+N) at 16V
2x 32W (4Ω, 1% THD+N) at 20V
1x 40W (4Ω, 1% THD+N) at 20V (bridged)
Output (8Ω) Non-amplified stereo output 2x 3W 2x 25W (8Ω, 1% THD+N) at 22V 2x 25W (8Ω, 1% THD+N) at 22V
PSRAM ESP32: 8MB PSRAM (4MB usable) over 40MHz SPI
ESP32S3: 8MB PSRAM over 80MHz QSPI
ESP32: 8MB PSRAM (4MB usable) over 40MHz SPI
ESP32S3: 8MB PSRAM over 80MHz QSPI
ESP32: 8MB PSRAM (4MB usable) over 40MHz SPI
ESP32S3: 8MB PSRAM over 80MHz QSPI
ESP32: 8MB PSRAM (4MB usable) over 40MHz SPI
ESP32S3: 8MB PSRAM over 80MHz QSPI
Power 5V over USB-C, 2x LP5907 3.3 V Ultra-Low-Noise LDO for analog section 5V (up to 2.5A) from USB-C Up to 26V from external PSU Up to 26V from external PSU
Connectivity WiFi + BT4.2 (except S3) + BLE
Ethernet (optional module)
WiFi + BT4.2 (except S3) + BLE
Ethernet (optional module)
WiFi + BT4.2 (except S3) + BLE
Ethernet (optional module)
WiFi + BT4.2 (except S3) + BLE
Ethernet (optional module)

Onboard PSRAM

Audio streaming requires proper buffering to work, even with ESP32 500K of RAM it is a challenging task. For that reason, most of the projects will require WROVER modules that have onboard PSRAM chips. All ESP32 Audio boards have an 8MB PSRAM chip onboard, connected via a high-speed interface. Any code using PSRAM with just work out-of-the box.

Boards Pinout

First generation docks

ESP Audio Solo

I2S CLK I2S DATA I2S WS
ESP8266 15 3 2
ESP32-C3 5 20 6
ESP32-S2 12 37 16

ESP Audio Duo

I2S CLK I2S DATA I2S WS PSRAM CE PSRAM CLK
ESP32 26 22 25 16 17

HiFi-ESP

I2S CLK I2S DATA I2S WS PSRAM CE PSRAM CLK
ESP32 26 22 25 16 17

Louder ESP

I2S CLK I2S DATA I2S WS PSRAM CE PSRAM CLK TAS5805 SDA TAS5805 SCL TAS5805 PWDN TAS5805 FAULT
ESP32 26 22 25 16 17 21 27 33 34
ESP32-S3 14 16 15 - - 8 9 17 18

HiFi-ESP32 and Amped-ESP32

I2S CLK I2S DATA I2S WS PSRAM RESERVED
ESP32 26 22 25 16, 17
ESP32-S3 14 16 15 35, 36, 37

Loud-ESP32

I2S CLK I2S DATA I2S WS DAC EN PSRAM RESERVED
ESP32 26 22 25 13 16, 17
ESP32-S3 14 16 15 8 35, 36, 37

Louder-ESP32

I2S CLK I2S DATA I2S WS PSRAM RESERVED TAS5805 SDA TAS5805 SCL TAS5805 PWDN TAS5805 FAULT
ESP32 26 22 25 16, 1 21 27 33 34
ESP32-S3 14 16 15 35, 36, 37 8 9 17 18

Ethernet (all boards)

SPI CLK SPI MOSI SPI MISO SPI CS SPI HOST/SPEED ETH INT ETH RST
ESP32 18 23 19 05 2/20MHz 35 14
ESP32-S3 12 11 13 10 SPI2/20MHz 6 5

Optional peripheral (all boards)

IR IN RGB OUT OLED SPI HOST/SPEED OLED SPI CLK OLED SPI MOSI OLED SPI MISO OLED SPI CS OLED SPI DC OLED RST
ESP32 39 12 2/20MHz 18 23 19 15 4 32
ESP32-S3 7 9 SPI2/20MHz 12 11 13 39 (37) 38
ESP32-S3 (Rev J3+) 7 9 SPI2/20MHz 12 11 13 47 38 48

Software samples

In the software section two firmware examples are provided.

Platformio IDE

All samples are provided as Plarformio IDE projects. After installing it, open the sample project. Select the proper environment based on your dock. Run the Build and Upload commands to install necessary tools and libraries, and build and upload the project to the board. Communication and proper upload method selection will be handled by IDE automatically.

Arduino IDE

Follow the ESP8266Audio library guide. Default settings will work out of the box with ESP8266 and ESP32 boards. For ESP32C3 and ESP32S2 board please adjust the pinout according to the above section

Using ESP32 Audio Boards with the Home Assistant

There are several ways ESP32 Audio Boards can be integrated into the Home Assistant setup. Each of them gives a unique feature, losing some other in return. As usual, there is no perfect solution for everyone, but perhaps there is one for you. Below is the summary table of the methods known to me and tested by me.

Integration type Tested Description Pros Cons
LMS/Airplay Yes Connect to Music Assistant as external protocol device. Can play your media library and internet radio Still can use squeezelite, i.e. use Spotify Connect and Apple Airplay when HA is not using the device No native integration into HA, only works with Music Assistant
ESPHome way Yes Connect as HA media device. Can be used with any HA integration, including Music Assistant, Text-to-Speach announcements, alarms, etc More integrations with HA, more flexibility in use case No longer works as Spotify, Airplay, etc.
Snapcast way Yes Connect to Music Assistant as snapcast protocol device. Can play your media library and internet radio. Perfect for multiroom sync (Sonos-like, perhaps even better). Can be used with other Snapcast servers around the house No longer works as Spotify, Airplay, etc. No native integration into HA only works with Music Assistant

Below are specific steps that you need to follow to spin up ESP32 Audio Boards in the Home Assistant

Configuring Home Assistant

I prefer to use HA with the Music Assistant. This way you can integrate both your media library and internet radio and have a nice UI/UX at the same time (including mobile).

Generally, you need to have supported HA (native) installation and follow these steps. I will place here a short version to have a reminder for future myself

Install instructions
Step Screenshot
Add SSH Addon

Navigate to Settings > Addons > Add Addon
Search for SSH and install it.
Enable Show in sidebar switch while you there
image
Start SSH Addon

SSH addon won't start until you add at least one SSH public key to it. So navigate to SSH Addon Settings and add a key (or password) to the config
It should be able to start now
image
Install Community Store

Run this command in the Terminal session
wget -O - https://get.hacs.xyz | bash -
You need to restart your HA after that
image
Add HACS

Navigate to Settings > Devices as Services > Integrations > Add Integration, search for HACS, and add it to the HA
You'll need to authorize your extension to your GitHub account
image
Install Music Assistant via HACS

From the HACS menu search for Music Assistant and press the Download button
You need to restart HA again
In the Settings > Addons you should be able to see MA and enable sidebar navigation for it.
image
Configure Music Assistant

Before you enable Integration (that will in turn add speaker devices) you need to enable MA providers
Go to MA > Settings > Providers and enable both Music providers and Player providers that interests you. If not sure, enable all of them, you can disable them later on.
image
Add Music Assistant Integration

Navigate to HA Settings > Devices & services > Integrations. Click the big + ADD INTEGRATION button, look for Music Assistant, and click to add it.
It should discover and add media devices based on the providers you're enabled in the previous step
image
Add Music Devices discovered by MA

You should be able to add and use discovered devices. More details in below sections
image

LMS or Airplay

gh://sle118/squeezelite-esp32

When you have squeezelite-esp32 installed on your ESP32 Audio Board (either stock or manually going through steps), it will announce itself by multiple protocols in the network:

  • Bluetooth
  • LMS or slimproto - auto-discovered by HA
  • Apple Airplay - auto-discovered by HA
  • Spotify Connect

The power of this method is that you can use all four ways outside of HA, for example using your smartphone and Spotify app, and still have it integrated into HA at the same time.

Install instructions

Native HA integration

Make sure your MA Slimproto provider is disabled, it will conflict with the native HA integration

Step Screenshot
Add SlimProto Integration

Navigate to HA Settings > Devices & services > Integrations. Click the big + ADD INTEGRATION button, look for SlimProto, and install it.
image
Add HA MediaPlayers provider to MA image

Integrate into Music Assistant directly

Disable SlimProto integration in the HA if you want to go the MA way. If you enabled SlimProto and AirPlay providers in the MA, you should find your device as both a Slimproto device and an Airplay device. It is up to you which protocol to use, generally, they both work perfectly well.

ESPHome way

Louder-ESP32 running ESPHome

Please find specific ESPHome configs in the firmware folder

Install instructions
Step Screenshot
Add ESPHome Addon

Navigate to HA Settings > Addons > Add Addon
Search for SSH and install it.
Enable Show in sidebar switch while you there
image
Prepare ESP32 Audio Board for ESPHome onboarding

Use Web Flasher to flash stock ESPHome into device
image
Onboard ESP32 Audio Board ESPHome device into HA

Go to the HA ESPHome page and you should be able to find a new device. You need to onboard it with the below config (feel free to change names)
This will take a moment or two
image
Validate device in the ESPHome image
Add ESPHome Integration

Navigate to HA Settings > Devices & services > Integrations. Click the big + ADD INTEGRATION button, look for ESPHome, and click to add it.
It should discover and add ESPHome media devices based on the previous step
image
Use your media device in the HA image
Use your media device in the MA

Add Music Assistant HA MediaPlayers provider to discover new Media device
image

Snapcast way

Snapcast is a multi-room audio player that synchronizes playback across multiple devices, ensuring that audio streams play simultaneously in perfect sync. It consists of a server, which distributes audio streams, and clients, which receive and play the audio. There is a snapcast fork that was created to implement ESP32 Audio Board specific configuration on top of the ESP32 Snapcast client. This allows us to build flexible and extendable setups connected to various sources, like Mopidy, MPD or Home Assistant.

Install instructions
Step Screenshot
Flash Snapcast to the ESP32 Audio Boards using web-flashing tool
image
Enable Snapcast in the MA

Got to the Ma and enable Snapcast provider. Your speaker will be discovered automatically, as long as it is running
image
Use your media device in the MA

Play your audio into new device
image
Use a group of speakers for multi-room setup

In the MA settings > Players create a new group player and add as many Eparagus players as you need. Use that group speaker to get a synced audio
image

Squeezelite-ESP32

Squeezelite-ESP32 is a multimedia software suite that started as a renderer (or player) of LMS (Logitech Media Server). Now it is extended with

  • Spotify over-the-air player using SpotifyConnect (thanks to cspot)
  • AirPlay controller (iPhone, iTunes ...) and enjoy synchronization multiroom as well (although it's AirPlay 1 only)
  • Traditional Bluetooth device (iPhone, Android)

And LMS itself

  • Streams your local music and connects to all major online music providers (Spotify, Deezer, Tidal, Qobuz) using Logitech Media Server - a.k.a LMS with multi-room audio synchronization.
  • LMS can be extended by numerous plugins and can be controlled using a Web browser or dedicated applications (iPhone, Android).
  • It can also send audio to UPnP, Sonos, Chromecast, and AirPlay speakers/devices.

All ESP32-based boards are tested with Squeezelite-ESP32 software, which can be flashed using nothing but a web browser. You can use Squeezelite-ESP32 installer for that purpose.

How to flash and configure

Use Installer for ESP Audio Dock to flash firmware first. It has been preconfigured to work with ESP Audio boards and will configure all hardware automatically.

Install instructions
Select the correct device first image
Connect the device to the USB port and select it from the list image
Press Flash and wait around 2 minutes image
(Optional) You may enter the serial console to get more information image
Device is in recovery mode. Connect to squeezelite-299fac wifi network with squeezelite password (your network name suffix will be different) image
When redirected to the captive portal let the device scan wifi network and provide valid credentials
You can use provided IP address (http://192.168.1.99/ on the screenshot) to access settings page image
(Optional) You may change device names to something close to your heart image
Exit recovery image

You can use it now

Bluetooth Spotify Connect AirPlay LMS Renderer
image image image image

Ethernet configuration

If you have optional Ethernet on the board, please put this config in the NVS settings

# ESP32
eth_config = model=w5500,cs=5,speed=20000000,intr=35,rst=14
spi_config = mosi=23,clk=18,host=2,miso=19
# ESP32S3
eth_config = model=w5500,cs=10,speed=20000000,intr=6,rst=5
spi_config = mosi=11,clk=12,host=2,miso=13

Squeezelite-esp32 reboots and connection drops

The default configuration of the squeezelite-esp32 runs automatic discovery of the available LMS server nearby. In fact it depends on it so much that in case the LMS service is not found on the network, it will reboot automatically (every few minutes).

image

In many cases, if you use squeezelite for Airplay and Spotify only and don't have LMS servier, you need to disable discovery altogether. Currently disabling Squeezelite in the GUI does not work correctly, it places too much spaces between the commands in the autoexec command. Following autoexec1 NVS setting can be used to disable it:

squeezelite -o i2s -s -disable -b 500:2000 -C 30 -d all=sdebug

image

Flashing ESP32-S3

ESP32-S3 boards have two ways of firmware update: (1) similarly to classing ESP32, they can be flashed over built-in UART, or (2) uniquely for S3, over built-in USB host controller. Since it is firmware-controlled, and may be disabled if not used (or, more commonly, not available with factory default empty firmware). When come unflashed ESP32-S3 device comes into a boot loop, with a USB-CDC device appearing and disappearing every second, and requires a special flashing initialisation sequence to get flashed:

  • Press IO0 (FLASH) button and keep it pressed
  • Press RESET button and release FLASH button after
  • ESP32-S3 will enter download mode and USB-CDC device will appear and stay available
  • Run flashing routine as usual, either through web-serial or esp_tool
  • This time, it is not possible to reboot device over USB, so press RESET once more
  • Device will boot normally into firmware and if USB-CDC is enabled in the firmware, you will be able to flash it normally, download mode and reset sequence will work over USB.
  • If you manage to flash firmware without USB-CDC support, you need to go through above equence once more

Hardware

Please visit the hardware section for board schematics and PCB designs. Note that PCBs are shared as multi-layer PDFs.

First generation docks

image

ESP Audio Solo

Image Legend
image image MAX98357 DAC
image Speaker Terminal

ESP Audio Duo

Image Legend
image image MAX98357 DAC
image Speaker Terminals
image 8MB PSRAM IC

HiFi-ESP

Image Legend
image image PCM5100A DAC
image Speaker Terminals
image 8MB PSRAM IC
image Ultra-Low noise LDO 3V3 Voltage regulator

Louder ESP

Image Legend
image image TAS5805M DAC
image Speaker Terminals
image 8MB PSRAM IC
image 3V3 Drop-Down voltage regulator (powers ESP32)
image Input Voltage terminal
image (REV B, C, D) image TAS5805M DAC
image Speaker Terminals
- 8MB PSRAM IC (Hidden under ESP32 module)
- 3V3 Drop-Down voltage regulator (powers ESP32, hidden under ESP32 module)
image Input Voltage terminal

HiFi-ESP32

ESP32 ESP32-S3
image image

Loud-ESP32

ESP32 ESP32-S3
image image

Amped-ESP32

ESP32 ESP32-S3
image coming soon

Louder-ESP32

ESP32 ESP32-S3
DSC_0013_small JPG-mh DSC_0012_small JPG-mh

Optional SPI Ethernet module

Every board has a header that allows for soldering in a W5500 SPI Ethernet module, which is very easy to find. The only downside is that with the module installed board will not fit the case, unless it is cut to accommodate extra height.

HiFi-ESP32(S3) Loud-ESP32(S3)
DSC_0015 DSC_0026

squeezelite-esp32 nvs settings that you need to apply to enable it

# ESP32
eth_config = model=w5500,cs=5,speed=20000000,intr=35,rst=14
spi_config = mosi=23,clk=18,host=2,miso=19
# ESP32S3
eth_config = model=w5500,cs=10,speed=20000000,intr=6,rst=5
spi_config = mosi=11,clk=12,host=2,miso=13

BTL and PBTL mode (TAS5805M DAC)

TAS5805M DAC Allows 2 modes of operation - BTL (stereo) and PBTL (parallel, or mono). In Mono, the amp will use a completely different modulation scheme and basically will fully synchronize output drivers. Jumpers on the board allow both output drivers to connect to the same speaker. The most important step is to inform the Amp to change modulation in the first place via I2C command. In the case of sqeezelite DAC control set value is the following:

dac_controlset: `{"init":[{"reg":3,"val":2},{"reg":3,"val":3},{"reg":2,"val":4}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]}`

compared to the default:

dac_controlset: `{"init":[{"reg":3,"val":2},{"reg":3,"val":3}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]}`

One can test audio with a single speaker connected between L and R terminals (plus on one side and minus on the other). Optionally, jumpers on the board will effectively connect the second driver in parallel, doubling the current capability.

Important point, this simple setup will send only one channel to the output, that’s just how the basic DAC setup works. In case you want true mono (L + R)/2 or pure R or L audio, you need to apply a mixer configuration. Full config looks like below (thanks @frdfsnlght for helping me here)

Single speaker (PBTL mode), mono mix (L+R)/2:

{"init":[{"reg":3,"val":2},{"reg":3,"val":3},{"reg":2,"val":4},{"reg":0,"val":0},{"reg":127,"val":140},{"reg":0,"val":41},{"reg":24,"val":[0,64,38,231]},{"reg":28,"val":[0,64,38,231]},{"reg":32,"val":[0,0,0,0]},{"reg":36,"val":[0,0,0,0]},{"reg":0,"val":0},{"reg":127,"val":0}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]} 

Single speaker (PBTL mode), right input only:

{"init":[{"reg":3,"val":2},{"reg":3,"val":3},{"reg":2,"val":4},{"reg":0,"val":0},{"reg":127,"val":140},{"reg":0,"val":41},{"reg":24,"val":[0,128,0,0]},{"reg":28,"val":[0,0,0,0]},{"reg":32,"val":[0,0,0,0]},{"reg":36,"val":[0,0,0,0]},{"reg":0,"val":0},{"reg":127,"val":0}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]} 

Single speaker (PBTL mode), left input only:

{"init":[{"reg":3,"val":2},{"reg":3,"val":3},{"reg":2,"val":4},{"reg":0,"val":0},{"reg":127,"val":140},{"reg":0,"val":41},{"reg":24,"val":[0,0,0,0]},{"reg":28,"val":[0,128,0,0]},{"reg":32,"val":[0,0,0,0]},{"reg":36,"val":[0,0,0,0]},{"reg":0,"val":0},{"reg":127,"val":0}],"poweron":[{"reg":3,"val":3}],"poweroff":[{"reg":3,"val":0}]} 
BTL PBTL
Descriotion Bridge Tied Load, Stereo Parallel Bridge Tied Load, Mono
Rated Power 2×23W (8-Ω, 21 V, THD+N=1%) 45W (4-Ω, 21 V, THD+N=1%)
Schematics image image
Speaker Connection image image

Starting from Rev E, an additional header is exposed to allow datasheet-specified connectivity

Image Legend
Stereo Mode - leave open image
Mono (PBTL) Mode, close horisontally image

TAS5805M DSP capabilities

The TAS5805M DAC has a very powerful DSP, which allows doing lots of data processing on the silicon, that otherwise would take a considerable part of your CPU time. As of the moment of writing, it is mostly an undiscovered part of the DAC, since unfortunately, TI is not making it very easy for developers. (A minute of complaint) To be more specific, you need to be (A) a proven hardware manufacturer to get access to the configuration software, namely PurePath. (B) You need to apply for a personal license and go through an approval process, and after a few weeks of waiting, you get access to the DAC configuration you asked for. (C) You find out that it will work with TI's own evaluation board, which will set you back $250 if you'd be able to find one. Otherwise, all you have is a list of I2C commands that you need to transfer to the device at your own cost. No wonder no one knows how to use it.

But moanings aside, what do you get after:

  • Flexible input mixer with gain corrections
  • 15 EQ with numerous filter configurations
  • 3-band Dynamic Range Compression with flexible curve configuration
  • Automatic Gain Limiter with flexible configuration
  • Soft clipper
  • and a few other things

At this moment, it is very experimental. In the perfect world, you should be able to adjust all of those settings to make your speaker-enclosure setup work the best it can, and even apply your room factors into the equation. But with the above disclaimer I can only deliver a limited set of configurations corresponding to the most common use cases:

  • Stereo mode with enabled DRC (Loudness) and AGL settings
  • Full range Mono mode with DRC (Loudness) and AGL settings
  • Subwoofer Mono mode with a few filter frequency options
  • Bi-Amp configuration with a few crossover frequency options

All of the above are available right now for experimentation. I'm keen to hear your feedback while I move forward with porting this to other software options

Louder-ESP32 and Amped-ESP32 power considerations

Barrel jack used is spaced at 6mm hole/2mm pin, which is typically 5.5/2.5mm jack on the male side.

image

The screw terminal is connected parallel to the barrel jack, you can use either interchangeably.

On the latest boards (starting from Amped-ESP32), I switched to barrel jack with thick middle pin with a 2.5mm pin, it’s a bit unusual but still common enough in the laptop world. It is far more comfortable in handling high currents, and importantly, much more sturdy and resistant to desoldering.

image

The power adapter specs depend on the speaker you're planning to use. DAC efficiency is close to 100%, so just take the power rating of your speaker (say 2x10w), and impedance (say 8 ohms), and you'd need at least 9 volts rated at 1.2 amps per channel, round up to 3 total amps.

It is not recommended to go beyond the voltage your speakers can handle, otherwise, the amp will blow your speakers in no time.

OLED screen

Starting May 2025, all boards will have an OLED screen solder-less connector. Originally, I added the OLED header on the back side of the PCB that would require careful and skillful soldering (It is quite nice when using squeezelite since you can get quite a lot with existing plugins and settings). Later on, I managed to find the right model of the screen and corresponding connector for a reasonable price, and decided to equip every board with the connector as standard.

At this moment, one can simply throw in a compatible OLED screen and use a small strap of double-sided adhesive to fix it mechanically. The final result is a nice and finished look

DSC_0055

OLED models

Most of the 64x128 pixel OLED screen models that are very common among hobbyists will use compatible 30-pin ribbon connector with 0.5mm pin spacing, and they are really easy to find.

Model Image
1.3" OLED Screen 128x64 SH1106 30Pin image

Software side

Although you're free to use it your way using the pinout above, I'd expect the most common case to be squeezelite, thus here are the steps you'd need to do

# Description Image
1 Update NVS settings in the Web UI (switch to recovery mode first)
display_config = SPI,width=128,height=64,cs=15,reset=32,driver=SH1106
spi_config = mosi=23,clk=18,host=2,miso=19,dc=4
You may need to replace SH1106 with SSD1306 depending on your model.
image
1 (S3) In case o fESP32-S3, it is display_config = SPI,width=128,height=64,cs=47,reset=48,driver=SH1106
spi_config = mosi=11,clk=12,host=1,miso=13,dc=38
image
2 In the LMS settings install the SqueezeESP32 plugin image
3 Update each speaker's settings in the LMS, and navigate to Display settings image

Case

HiFi-ESP32(S3), Loud-ESP32(S3), Amped-ESP32 and Louder-ESP32(S3) are mechanically compatible with Raspberry Pi 3/4 cases, tested with transparent ones.

Hifi-ESP32 Loud-ESP32
DSC_0013 DSC_0019
Amped-ESP32 Louder-ESP32
DSC_0007 DSC_0001

Also, community members created a few 3-D printable designs for Louder-ESP32 boards that can be found below

# Image
#1 image
#2 image
#3 image
#4 image

Where to buy

You may support my work by ordering these products at Tindie and Elecrow

About

ESP32 Audio Developent boards: HiFi-ESP32, Loud-ESP32, Amped-ESP32, Louder-ESP32

Resources

License

Stars

Watchers

Forks

Contributors 5