New ESP32 audio board for ESPuino

Hey folks. I’m a hardware developer, the one behind Sonocotta audio development boards. I’ve created quite a few of them over the last few years, and in most cases I was using 3-rd party software, like ESPHome and squeezelite-esp32. One person pointed me out to this comunity and I thought, this looks brilliant and I can make a hardware that would be a great fit.

In fact I’ve created a very similar board few years back, called loud-esp, that checks few boxes already

  • ESP32 with PSRAM
  • Dual MAX98357 DAC
  • LiPo management and low power operation
  • SD-CARD over SPI
  • Rotary encoder header
  • SPI LCD header, that can easily be used for the RFID module
  • IR reader (not sure if it is very helpful though)
  • WS2812 LED

I think the only part that is missing are few extra buttons, and maybe few more ws2812 LEDs.

So it cross my mind to create a special ESPuino edition of this board, specifically tailored for ESPuino use case. Currently I’m considering switching over to ESP32-S3, since it is much more capable chip and I’m not using Bluetooth that much (it is rubbish on the ESP32, if you ask me).

And second concern, I woudl like this board to be a fit for existing case, Ideally laser cut, not 3d-printed, so it can be produced in volumes without major issues. I’ve obtained this case and couple of speakers to experiment, but ultimately, I’d need to design a variation of it, to fit all the peripherals.

Just wanted to hear potential customer „wish list“, before I set to draw a PCB for it.

1 „Gefällt mir“

Here is the inspiration for the case I’m planning to use

And this is waht I’m testing with

Ok, here we go.

Fine.

Fine, but most people (I guess) would use only one of them. Should be possible to use only one of them while this one plays both channels.

Some users still ask for LiPo, but LiFePO4 is safer. Unfortunately, when it somes to ready-to-use battey packs, we only got one source: EREMIT 3.2V 6Ah LiFePo4 Akku Pack.
„Unfortunately“ because this pack has plug-wise twisted polarity. This makes it somehow impossible to provide a board, that can be used for LiPo + LiFePO4, while this would absolutely be possible with a boost-buck-converter.

SDMMC is the way to to. Needs lees GPIOs and is much faster.

Absolutely necessary.

As of now we don’t use a display. However, keep in mind that especially PN5180 needs a lot of more GPIOs. By the way: PN5180 seems to work better with 5 V on one pin. However, this would make it necessary to have 3,3 + 5 V. Don’t know if it’s worth it.

It’s supported but only used rarely.

Absolutely necessary.

Additional needs:

  • GPIOs / 3.3 V / GND for custom purposes
  • Five button connectors
  • reset connector and/or reset button
  • i2c connector (for possible future purposes)
  • integrated battery handling (e.g. TP5000 supports LiPO + LiFePO4)

Thanks for the feedback.

  • I’ll stick with good old ESP32, since SDIO issue seems to have a reliable fix.
  • Dual MAX98357, you can configure them to work in mono mode with a jumper
  • I’ll stay with 18650 LiPo, they are far easier to find and available with built-in protection. I have worked with them for years, and so far, no incidents. I used TP4056 Ic among others and quite happy with it.
  • SDMMC it is
  • The rotary encoder is okay. Does software need interrupt-enabled pins, or will any inputs do?
  • I think I’ll stick with RC522 for simplicity, at least for now
  • IR reader and a few WS2812 can stay
  • I don’t have buttons now, but since GPIO expander is necessary, it should not be an issue. I’m thinking of using touch sensor buttons, so I don’t have to cut the case open (should be good for audio)
  • FLASH and RESET buttons are there already
  • The rest can be empty headers on the PCB, doesn’t cost me extra

Any feedback regarding the case? Any good examples made by community people?

Interrupted is better. We had a long way in pointing out the right GPIOs. I’d suggest ESPuino/src/settings-lolin_d32_pro_sdmmc_pe.h at bb559de8037d86a3147638435955a54492136591 · biologist79/ESPuino · GitHub as configuration.

We usually work with neopixel rings. Some are working with only one WS2812.

Flash button is not necessary with autoflash design:
https://forum.espuino.de/uploads/short-url/mxbLKs0qIQSgYVJ2tK7kFZkA82K.pdf

I’m missing a neopixel ring and buttons :slight_smile:

Oh wait, there’s one thing I forgot: headphones connector.

Pin 39 is not interrup capable, so I’m assuming it is polled in software. I’ll check if there is enough GPIO to use interrup-capable pin instead.

I usually use WS2812 bar, for ring there is not so much space. Here is the example

Yes, I’m using auto-flash circuitry. Just used to have both of them just in case:)

Headphones connector: with MAX98357 it is only possible to do mono, since they use push-pull output drivers. Having another DAC for headphones would be overkill i think

Bar on the bottom or top part will do it i think. Buttons can be a banch of touch sensors on the top

GPIOs 34 => 39 can only used for input and don’t have internal pullups. I’m not aware that IRQs aren’t supported.

I disagree :slight_smile:

  • optional external LED for charging status
  • same for power led
  • switch (in hardware) for power off the electronics but able to charge via USB

I can put external pullups, but I can’t add interrups support :slight_smile:

I know it is possible. Just saying $5+ extra cost just for HP output seems to be an overkill. Alternatively, I would use PCM5100 with a D-class amp like in Amped-ESP32. But again, multiplies the cost. I’m aiming for a solution that can be produced in quantities at a reasonable price.

Yes, this is already a part of loud-esp board. Thanks for noting

Here is the topology I came up with. Will start drawing schematics this week


I’m planning to use latch button that would cut the power altogether. I used that before, and it gives a lot of confidence that board would not draw any unnecessary power while idling

2 „Gefällt mir“