Skip to content

3 · The Complete board

The ESPuino Complete board (rev. 5.1) from above: the ESP32-WROVER module, microSD slot, USB-C, and the labeled connectors for Neopixel, battery, speaker, power-off switch, Ext connectors, rotary encoder, headphone board, and the buttons

What makes the Complete special

The Complete is the current ESPuino board and the point of reference for this handbook. Its main advantage can be summed up in one word: integration. Where earlier versions still required several modules to be plugged together and wired by hand, the Complete puts almost everything on a single board – ESP32-WROVER, amplifier, charge controller, voltage monitoring, the port expander for extra connections, and the SD card slot. Functionally, it offers essentially the same as the earlier mini4L, but it's cheaper and considerably faster to assemble. Only the headphone board remains a separate, optional add-on.

In practice, that means: you get the board fully populated. SMD soldering – the fine soldering of tiny components – is already done at the factory. What's left to do is soldering a few wires and connectors, which is covered in chapter 5.

Technical specifications

Before we go into detail, the facts at a glance:

Property Value
Dimensions 72.2 × 70.6 mm, four mounting holes (⌀ 3.2 mm)
Construction four-layer board, fully SMD-populated
Controller ESP32-WROVER, 16 MB flash, 8 MB PSRAM
Power supply buck/boost switching regulator (TPS63000), constant 3.3 V
Inputs USB-C and/or battery (LiPo or LFP), both reverse-polarity protected
Charge controller fixed max. 1 A charge current, on-board status LED
Amplifier MAX98357A, one speaker output (both channels summed), ~1 W into 4 Ω
Audio storage microSD (SD-MMC, 1-bit), FAT32
Expansion PCA9555 port expander for additional inputs/outputs
Connectors JST-PH connectors for the RFID reader, speaker, rotary encoder, Neopixels, up to 5 buttons, headphone board, charge LED, power-off switch, and battery; plus USB-C and the expansion connector Ext.Conn1. The I²C connector is left unpopulated from the factory (details).

Everything else – which wire goes where, what each solder bridge does – is covered in the following sections, including the pinout reference.

The power supply

ESPuino is meant to run from quite different sources – a USB power supply, a LiPo battery, or a LiFePO4 (LFP) battery. And regardless of which one is currently connected and how full the battery is: a stable 3.3 volts must come out the other end for the ESP32.

That used to be exactly the sore point. The mini4L powered the controller through a so-called linear regulator (LDO). Such a regulator "burns off" the excess voltage, but needs a bit of headroom itself: when the battery was nearly empty and delivered only about 3.3 V, only around 3.1 V made it through – already too little for the ESP32, strictly speaking (in practice it usually still worked, but that's not exactly clean design). This gets especially delicate with LFP batteries, which only supply about 3.2–3.3 V to begin with; there, the regulator had to be bypassed outright.

The Complete solves this fundamentally with a buck/boost switching regulator. It can step a voltage that's too high down and step one that's too low up, delivering a constant 3.3 V regardless of source and charge level. On top of that comes an undervoltage cutoff that protects the device before the battery is discharged too deeply. Even so, it should be said up front that this protection never replaces the cutoff function of a BMS, which must be built into the battery pack you use.

Both inputs – USB-C and battery – are also protected against reverse polarity. The built-in charge controller charges the battery at a fixed maximum of 1 A. So that this charge current doesn't overwhelm the battery (rule of thumb: no more than half the capacity per hour, "0.5 C"), the battery should have at least 2000 mAh. The undervoltage cutoff kicks in at different thresholds depending on battery type: around 2.75 V for LFP, around 3.15 V for LiPo. These values deliberately sit with some margin above the absolute discharge limit – that's easier on the battery and prevents brief current spikes (loud audio, for instance) from shutting the device down right away.

Charging & the charge LED

A small status LED on the board shows you the charge state directly:

LED Meaning
Fast blinking USB connected, but no battery detected
Steady on USB and battery connected – the battery is charging
Off Battery full (with USB + battery) or running on battery alone

If you'd like to bring this indicator out to the enclosure, there's a dedicated 2-pin connector for an external charge LED. The necessary series resistor is already on the board, so you can connect the LED directly – just watch the printed polarity.

Worth understanding: while charging, the measured battery voltage isn't meaningful, because the charging process artificially raises it. A reliable charge-level display therefore only exists when running purely on battery (more on that in chapter 4).

Switching on and off

Normally, the button inside the rotary encoder "switches" ESPuino on and off – in reality, it enters the power-saving deep sleep and wakes up immediately on a button press (see the glossary and chapter 9). For most people, that's entirely sufficient.

If you want to lower the idle current even further, you can add a true power switch. The Complete has a dedicated 2-pin power-off connector for this: a switch connected there shuts down the central 3.3 V supply by disabling the output side of the switching regulator – the ESP32 is then genuinely off, not just asleep. Charging over USB keeps working even while the switch is set to "off".

Power-off switch: the drawbacks

  • Startup afterwards takes a bit longer (a full cold boot instead of waking from deep sleep).
  • A hard power-off switch cannot be combined with the PN5180's LPCD wake-up – the two are mutually exclusive.

Power consumption & power supply

In operation, an ESPuino draws roughly 140 to 350 mA, depending on volume and how bright the Neopixels shine. Add charging on top, and up to 1 A more comes on. So your power supply never runs short – loud playback and charging at the same time – you should use a USB power supply rated for at least 1.5 A.

The amplifier and sound

Sound comes from a MAX98357A, a small class-D amplifier with a built-in digital-to-analog converter. At 3.3 V it delivers roughly 1 watt into a 4-ohm speaker – plenty for a compact audio box at room volume. Small full-range speakers such as the Visaton FR 7 (4 Ω) have proven reliable.

One difference from the mini4L: the Complete has only one amplifier, and therefore one speaker output. "Mono" in the sense of one channel being dropped isn't quite accurate here – the output carries both stereo channels mixed together (the sum of left and right), so nothing is lost. It's a single-channel output – exactly right for a compact audio box. At the headphone output (via the separate headphone board), you do get stereo.

The sound doesn't have to run through the built-in amplifier at all: ESPuino also supports Bluetooth – as a source, to send audio to a Bluetooth speaker or headphones, and as a sink, where ESPuino itself becomes the speaker and you stream to it from, say, your phone. Both modes, and what to watch out for, are covered in chapter 9.

You set the base gain with a solder bridge:

Solder bridge Base gain
JP2 – set at the factory +3 dB
no bridge +9 dB
JP3 +15 dB

Never JP2 and JP3 at the same time

The two bridges are mutually exclusive: only one of the two may ever be set – or neither, in which case it stays at +9 dB.

The factory setting JP2 (+3 dB) tends to be loud enough for an audio box and has a pleasant side effect: at the lower base gain, the software's 21 volume steps sit closer together, so you can fine-tune the volume more precisely. Details on these solder bridges are covered under the solder bridges in chapter 5.

Versions & scope of delivery

The current revision of the Complete is 5.1. It combines both battery variants on a single board – whether LFP or LiPo is set via the solder bridges JP5/JP6 (see chapter 5). The reset button has been populated at the factory since 09/2026.

Only a handful of the earlier boards (rev. 5.0/5.0.1) are in circulation; if you happen to own one, the small differences are noted under the solder bridges in chapter 5.

When ordering, you can choose between three variants – which one suits you depends on how much you want to contribute yourself (details and prices are in the price list #3344, German-language forum):

  • Board only – the fully populated Complete on its own, with no further accessories.
  • Set 1 – the board together with the necessary connecting wires.
  • Set 2 – like Set 1, plus the headphone board.

Specify the battery type when ordering

When ordering, you need to specify whether you want the LiPo or the LFP version. The matching battery type is pre-configured at the factory via the solder bridges on the board – so there's nothing for you to set yourself. If you decide to switch to the other battery type later, that can still be changed afterwards by moving one or two solder bridges (more on that under the solder bridges in chapter 5).

Connectors, controls, pinout

The following pinout reference shows which function sits on which connector – when wiring things up, this is the place to check when in doubt.

Pinout reference

From settings-complete.h. Important: values ≥ 100 are port-expander channels (PCA9555, channel = value − 100), not direct ESP32 GPIOs; 99 = unused/dummy.

The difference matters in practice: a port-expander channel can't be used as universally as a real GPIO. It's essentially good for reacting to a button (input) or switching something (output) – and even that has to be programmed for your own extensions. More on the port expander in chapter 12.

Function Signal Pin
Audio (I²S) DOUT / BCLK / LRC GPIO 25 / 27 / 26
RFID (SPI) CS / SCK / MOSI / MISO GPIO 21 / 18 / 23 / 19
RFID (PN5180 only) RST / BUSY / IRQ GPIO 22 / 33 / 32
SD card SD-MMC 1-bit: CLK / CMD / D0 GPIO 14 / 15 / 2
Rotary encoder CLK / DT GPIO 34 / 39
Rotary encoder button PE 105
Buttons Previous / Pause-Play / Next PE 100 / 101 / 102
Buttons Button 4 / Button 5 PE 103 / 104
Neopixel LED signal GPIO 12
Power peripheral cutoff (POWER) PE 114
Power amplifier (GPIO_PA_EN) PE 113
Battery voltage measurement (ADC) GPIO 35
Headphones jack detection (HP_DETECT) PE 108
Wakeup / PE interrupt wake from deep sleep GPIO 36
IR (optional) IR receiver GPIO 5

Free GPIOs

On the expansion connector Ext.Conn1, the still free GPIO 0, 5, and 32 are available. Two things worth knowing: GPIO 0 is needed by the ESP32 internally (boot mode) and should only be used for something else in an emergency. GPIO 32 is the PN5180's IRQ line, and is therefore only free as long as you're not using LPCD – in LPCD mode (JP1/JP8), the reader occupies it. GPIO 5, finally, is the input for the optional IR receiver.

The connectors at a glance

Almost everything connects via small JST-PH connectors – each has its own pin count, so they're hard to mix up. This overview shows what goes where:

Connector Plug For
RFID reader 10-pin RC522 or PN5180 (pinout below)
Speaker 2-pin one mono speaker
Rotary encoder 5-pin volume + button (on/off)
Neopixel 3-pin status and progress LEDs
Buttons (up to 5) 2-pin each Previous, Play/Pause, Next, Button 4/5
Headphone board 6-pin optional headphone output
External charge LED 2-pin optional charge indicator on the enclosure
Power-off switch 2-pin optional true power switch
Battery 2-pin LiPo or LFP with BMS

Never rely on wire colors

Connector pinouts are defined by the labels printed on the board, not by the color of the wires on a finished cable. Before plugging anything in, always check signal by signal against the board's printed labels.

The exact pinout of the RFID connector – 10-pin, with the differences between PN5180 and RC522 – is documented right where you need it: in chapter 5 → RFID connector pinout.

Choosing the components

Some of the parts depend on your own preferences. Here are the decisions ahead of you:

  • RFID reader: you can choose between the RC522 (affordable, plenty for most people) and the PN5180 (more sensitive, longer range, and a requirement for the optional LPCD wake-up). Thanks to auto-detection (see below), you don't commit to one via the firmware.
  • microSD card: an ordinary microSD card, formatted as FAT32. Cards of 64 GB and above usually come formatted as exFAT from the factory and need to be reformatted first (see note). Very large or very cheap cards also don't always run reliably. If you run into trouble, try a different (smaller) card.
  • Battery: optional – ESPuino also runs happily off a USB power supply permanently. For mobile use, the choice between LFP and LiPo is important enough to get its own chapter: see chapter 4 · The battery.
  • Speaker: to taste and to fit the enclosure size; a 4-ohm full-range driver like the Visaton FR 7 fits well. The amplifier delivers at most 1 W – an oversized speaker won't gain you anything here.
  • Headphones: optional via the separate headphone board (based on the MS6324 chip, forum #1099, German-language).

The headphone board: a small green add-on board with MS6324 and LM4808M chips, a headphone jack, and a six-pin connector

The RFID reader type is no longer a firmware question

You used to have to pick the matching firmware variant for RC522 or PN5180 when flashing. Since May 2026, ESPuino detects the reader automatically at runtime. Choosing the reader is therefore purely a hardware decision you no longer need to worry about when updating the firmware.

Format large cards as FAT32

Cards of 64 GB and above (SDXC) come formatted as exFAT from the factory. Windows doesn't offer FAT32 for cards that large in its standard dialog – a tool like "FAT32 Format" (guiformat) helps here. The official SD Card Formatter is great for cleanly resetting a card, but it formats large cards as exFAT per the SD standard – for FAT32 you'll additionally need the tool mentioned above.

Limits of the board

So you know what the Complete deliberately cannot do:

  • Only one amplifier – no true stereo operation with two independently driven speakers.
  • No 5 V logic – internally, everything runs at 3.3 V.
  • No coulomb counter – the charge level is estimated from battery voltage, not tracked exactly. Especially with LFP, the voltage stays very flat over much of the discharge curve, so the display is correspondingly coarse (more on that in chapter 4).

Schematics, 3D model & documents

If you want to dig deeper or design an enclosure, the Complete thread (#3817) (German-language forum) has the full documentation – schematics (rev 5.0.1 and rev 5.1 as PDF) and a 3D model of the board (STEP file). The mounting holes sit in the four corners (⌀ 3.2 mm); for exact spacing, the 3D model is your best source.

For the advanced: additional connectors

Ext.Conn1, Ext.Conn2, Ext.USB, and the port expander

You don't need these connectors for a normal build – they're meant for special cases and some are left unpopulated at the factory (populated on request).

  • Ext.Conn1 brings out additional signals: switched 3.3 V (active only during operation, off during deep sleep), permanent 3.3 V, battery +, the still-free GPIO 0, 5, and 32 (with the caveats from the "Free GPIOs" note above), and the port-expander channels PE109/PE112.
  • Ext.Conn2 provides GND and two voltages: OOut (~4.6 V on USB, otherwise battery voltage; USB takes priority) and Vin (same as OOut, but can be switched off by the power-off switch).
  • Ext.USB is an alternative 5 V input (VUSB, GND, CC1, CC2); the required 5.1 kΩ resistors are already populated. Caution: this input is not protected against reverse polarity – for experienced users only.
  • The PCA9555 port expander provides additional inputs/outputs; internally it handles, among other things, the buttons and a few control lines, and is also covered in chapter 12.

Ordering & accessories

You can get the Complete and optional accessories – such as the headphone board or the rotary encoder kit – from the developer. What's available and what it costs is listed in the forum price list (#3344) (German-language).