Start here: haitch.diy
This is a specification read, not a test report. We have not powered one of these boards, flashed it, or measured anything on it. Everything below comes from the LCDWIKI user manual for the ES3C28P and ES3N28P, document CR2025-MI6875, and where the manual is silent or self-contradictory, this article says so rather than filling the gap.
We are writing it because the board is more interesting than its listing suggests. "2.8 inch IPS ESP32-S3 display module" undersells a device that also carries a codec, an amplifier, a microphone, an SD slot, and battery management. If you are shopping for a smart-display platform, the parts list matters more than the diagonal.
The ES3C28P is not a screen with a microcontroller attached. It is a small voice-and-touch appliance platform:
The catch, and it is a real one: the user manual never publishes the GPIO assignments. More on that below.
| Subsystem | Part | Detail |
|---|---|---|
| LCD controller | ILI9341V | 240 x 320, GRAM 172,800 bytes, 4-wire SPI, 65K colours via RGB565 |
| Touch controller | FT6336G | Capacitive, I2C slave 0x38, plus CTP_RST and CTP_INT |
| MCU | ESP32-S3R8 | LX7 dual core, 240 MHz, 512 KB SRAM, 16 KB RTC SRAM, 8 MB OPI PSRAM |
| Flash | Winbond-class QSPI | 16 MB, external to the module |
| Audio codec | ES8311 | I2C slave 0x18 for control, I2S for data |
| Amplifier | FM8002E | 1.5 W at 8 ohms, 2 W at 4 ohms, on a 5 V rail. SHUTDOWN is active low and defaults high |
| Microphone | MEMS silicon | Bottom-port, feeds the codec |
| Regulators | ME6217C33M5G x2 | 2–6.5 V in, 3.3 V out, 800 mA max. Separate rails for audio and non-audio |
| Battery charger | TP4054 | Up to 500 mA, set by R12 |
| Backlight driver | BSS138 / Q4 N-FET | LCD_BL high turns it on, and accepts PWM for brightness |
| RGB indicator | Addressable LED | Single-wire, one GPIO, 5 V supply |
| SD card | MicroSD | SDIO, which the manual notes is faster than SPI |
| Free GPIO | IO2, IO3, IO14, IO21 | Broken out on 1.25 mm headers, usable as SPI |
Two design choices are worth calling out because they are better than you usually get at this price.
Two separate 3.3 V regulators, one dedicated to audio. Sharing a rail between a switching-heavy digital load and an analogue audio chain is the classic way to get audible noise. Splitting them is a deliberate choice by someone who has been bitten.
SDIO rather than SPI for the SD card. If you are recording audio or serving images off the card, that is the difference between comfortable and marginal.
Most cheap ESP32 display modules give you a screen and stop. This one has a full duplex audio chain, and it is wired the way you would wire it yourself.
The path runs: MEMS microphone into a filtered front end, into the ES8311 codec, which does the analogue-to-digital conversion and hands PCM to the ESP32-S3 over I2S. On the way out, the S3 sends PCM back over I2S, the ES8311 converts it, differential outputs OUTP and OUTN feed the FM8002E, and VO1 and VO2 drive the speaker terminals.
That is a voice-assistant reference design. With 8 MB of PSRAM for buffers and a codec rather than a bare DAC, wake-word processing and streaming audio are both plausible on this hardware.
Three details from the schematic notes that will save you time:
The manual's own precautions section leads with a power warning, which is unusual and worth taking seriously:
> The display module is charged with the battery, the external speaker plays the audio, and the display screen is also working, at this time the total current may exceed 500mA.
Charging at up to 500 mA, driving a 1.5 W amplifier, and running a backlit panel simultaneously will exceed what a lazy USB-C cable or a weak supply will deliver. Nothing is broken when this happens; the board browns out and you spend an afternoon chasing a phantom firmware bug.
The battery arrangement is neat. A P-channel FET (Q3) does automatic source switching: with USB-C connected, its gate sits at 5 V and the battery is cut off. Remove USB-C, the gate pulls low, and the battery takes over. No code involved.
Battery voltage monitoring is a divider into an ADC-capable pin, and the manual is explicit about the maths: the ESP32-S3 ADC tops out at 3.3 V while a saturated cell is 4.2 V, so the divider halves it and you multiply the reading by two. Get that wrong and your battery gauge reads half.
The manual also warns that the LDO and the charge management IC get hot enough to burn you. On a board this size with a 1.5 W amplifier, that is believable.
This is the part to read before you buy.
There is no pin map in the user manual. Twenty-three pages describe every circuit block in detail — which capacitor filters what, why C2 delays the reset, how the FET switching works — and never once give you the GPIO number for LCD_BL, or SCLK, or MOSI, or the I2S lines. The manual points instead at an "ESP32-S3 module IO resource allocation table" in the 5-原理图_Schematic directory of the product pack.
So: before you write a line of firmware for this board, open that table. Everything downstream depends on it, and nothing in the document you were given as the user manual will substitute. If the seller has not sent you the full resource pack, ask for it before the board arrives.
The two model numbers are never distinguished. The manual covers ES3C28P and ES3N28P throughout and never says what separates them. The clue is in the 18-pin panel interface, which the manual says "has resistance touch screen signal pins" — resistive touch — while section 3.1 describes a capacitive FT6336G. That reads like two touch variants sharing one document, but the manual does not confirm it. Check with the seller which one you are ordering rather than inferring, as we just did.
Small errors that tell you to verify rather than trust. The manual repeatedly writes "ITI9341" for ILI9341, "QPI FLASH" for QSPI, and gives the ESP32-S3 ROM as 348 KB where Espressif documents 384 KB. None of these matter on their own. Collectively they are a reminder that this is a translated vendor document, and the schematic is the authority.
The backlight is off at reset. The manual states it plainly — "The LCD screen backlight is not on by default" — and it is the single most common reason a first-boot screen appears dead. LCD_BL high, and use PWM if you want brightness control.
We have not run this board. That means we cannot tell you:
Anyone publishing those numbers without a board on the bench is guessing. When we have one, we will write the version with measurements, the way we did for the Heltec Vision Master T190 — where the interesting finding was a boot loop that compiled perfectly clean.
Against a bare ESP32-S3 devkit plus a separate 2.8-inch panel, this module wins on integration and loses on flexibility. You get the codec, amplifier, microphone, charger, and SD slot for less than assembling them, and you get four free GPIO. If your product needs a fifth, you are designing a PCB anyway.
Against the more famous integrated displays, the differentiator here is the audio chain. A lot of 2.8-inch ESP32 modules give you a screen and a buzzer. Microphone in, codec, and a watt and a half of amplifier out is a different product category.
The thing to weigh is documentation, and that is where this class of board consistently costs more time than the price suggests. A vendor pack of Chinese-language directories with the pin map in a separate file is normal, workable, and slower than a datasheet with a pinout table on page two.
The gap this article keeps running into — a real board whose pin map lives somewhere other than the manual — is exactly the gap the hardware profile system in Haitch exists to close.
A profile captures the pin map, the required build defines, the compile target, and the constraints once, from the vendor schematic, so every subsequent project starts from board truth rather than from a close-enough generic target. The Heltec T190 has one. This board does not yet, and we would not build one from a manual that omits the pins — a profile asserted from incomplete evidence is worse than no profile, because it looks authoritative.
That is the standard we hold to: a profile gets built when there is a schematic and a verified toolchain behind it, not when there is a product page.
On paper, yes, and unusually well specified for its class. We have not run it, so that is as far as we will go.
The manual does not say. Ask the seller.
The ILI9341V is well supported by TFT_eSPI, so probably. You will need the pin map from the resource pack, and on ESP32-S3 you will need USE_HSPI_PORT or USE_FSPI_PORT in your build flags — that one bites every S3 board, and it produces a clean compile and a boot loop.
The ESP32-S3R8 carries 8 MB of octal PSRAM. If your build configuration says QSPI, you will not get it. This matters for framebuffers and audio buffers, which is most of what you would use this board for.
5-原理图_Schematic in the product resource pack, as the "ESP32-S3 module IO resource allocation table". Get it before you start.
1. LCDWIKI ES3C28P and ES3N28P user manual (CR2025-MI6875)
2. Espressif ESP32-S3 series datasheet
3. ILI9341 controller datasheet
4. Everest Semiconductor ES8311 audio codec
5. Heltec Vision Master T190: Getting the Display to Boot
6. Haitch -- AI-native hardware design platform