CrowPanel ESP32-S3 4.2” E-paper HMI Display: high-resolution pinout, datasheet and specs

Here to buy CrowPanel ESP32 4.2” E-paper HMI Display - CrowPanel ESP32 4.2” E-paper HMI Display from ALiexpress -
The CrowPanel ESP32-S3 4.2″ E-paper HDMI Display is a low-power HMI module featuring a 4.2″ Active Matrix EPD (400×300 px) driven by the SSD1683 controller. At its core lies an ESP32-S3-WROOM-1-N8R8 (dual-core up to 240 MHz, 8 MB Flash, 8 MB PSRAM), offering Wi-Fi, Bluetooth and extensive GPIO. Thanks to its SPI interface, partial‐refresh capability and bistable display, it’s ideal for battery-powered applications. A dedicated 2-pin BAT connector provides Li-Po charging and a route for battery-voltage monitoring via the onboard ADC.
Microcontroller
- MCU: ESP32-S3-WROOM-1-N8R8 (dual-core up to 240 MHz)
- Flash: 8 MB
- PSRAM: 8 MB
- Interfaces: UART0 ×1, BAT ×1 (Li-Po with charging & voltage sense), GPIO header 2×10 pins
- Power: USB-C OR Li-Po via BAT connector
- Dev. Envs: Arduino IDE, ESP-IDF, MicroPython
Display
- Type: Active Matrix Electrophoretic Display (AM EPD)
- Controller: SSD1683
- Size: 4.2″ (active 84.8 × 63.6 mm)
- Resolution: 400 × 300 px (0.212 × 0.212 mm pitch)
- Color: black & white
- Refresh: partial (low power)
- Interface: 3-/4-wire SPI
- Voltage: 2.2 – 3.7 V
- Temp. Range: –25 – 70 °C (storage), 0 – 50 °C (operating)
Add-ons & Auxiliary Interfaces
- Battery Interface (BAT)
- SH1.0-2Pin socket for Li-Po battery & charging
- USB-C: 5 V power, programming & serial debug
- Buttons:
- MENU → IO2
- Rotary Switch: Up (IO6), Down (IO4), OK (IO5)
- EXIT → IO1
- RST → hardware reset
- BOOT → boot/download mode
- GPIO Pins (2×10 header): IO3, IO8, IO9, IO14, IO15, IO16, IO17, IO18, IO19, IO20, IO21, IO38
- E-paper Power & Control
- PWR (display power enable) → GPIO 7
- CS (SPI chip-select) → GPIO 45
- DC (data/command) → GPIO 46
- RST (reset) → GPIO 47
- BUSY (busy signal) → GPIO 48
- SD / TFT (SPI shared)
- TFT_SCK → GPIO 12
- TFT_MOSI → GPIO 11
- SD_MOSI → GPIO 40
- SD_MISO → GPIO 13
- SD_SCK → GPIO 39
- SD_CS → GPIO 10
How to
- ESP32: pinout, specs and Arduino IDE configuration
- ESP32: integrated SPIFFS Filesystem
- ESP32: manage multiple Serial and logging
- ESP32 practical power saving
- ESP32 practical power saving: manage WiFi and CPU
- ESP32 practical power saving: modem and light sleep
- ESP32 practical power saving: deep sleep and hibernation
- ESP32 practical power saving: preserve data, timer and touch wake up
- ESP32 practical power saving: external and ULP wake up
- ESP32 practical power saving: UART and GPIO wake up
- ESP32: integrated LittleFS FileSystem
- ESP32: integrated FFat (Fat/exFAT) FileSystem
- ESP32-wroom-32
- ESP32-CAM
- ESP32: use ethernet w5500 with plain (HTTP) and SSL (HTTPS)
- ESP32: use ethernet enc28j60 with plain (HTTP) and SSL (HTTPS)
- How to use SD card with esp32
- esp32 and esp8266: FAT filesystem on external SPI flash memory
- Firmware and OTA update management
- Firmware management
- OTA update with Arduino IDE
- OTA update with Web Browser
- Self OTA uptate from HTTP server
- Non-standard Firmware update
- Integrating LAN8720 with ESP32 for Ethernet Connectivity with plain (HTTP) and SSL (HTTPS)
- Connecting the EByte E70 to ESP32 c3/s3 devices and a simple sketch example
- ESP32-C3: pinout, specs and Arduino IDE configuration
- Integrating W5500 with ESP32 Using Core 3: Native Ethernet Protocol Support with SSL and Other Features
- Integrating LAN8720 with ESP32 Using Core 3: Native Ethernet Protocol Support with SSL and Other Features
- Dallas ds18b20:
- Guide to I2C on ESP32: Communication with Heterogeneous 5V and 3.3V Devices, Additional Interface Management and Scanner
- Display
- Complete Guide: Using an ILI9341 Display with the TFT_eSPI Library
- Integrating Touch Screen Functionality with Your ILI9341 TFT Display
- Complete guide to using an SSD1683 eInk Display with GxEPD and ESP32 – CrowPanel 4.2″ HMI included
Library GxEPD2 minimal configuration sketch
// Sketch: CrowPanel 4.2" E-Paper UI Demo
// Description: Simple demonstration of initializing and displaying a message on the CrowPanel ESP32-S3 4.2" e-paper display
// Author: Renzo Mischianti
// Website: mischianti.org
#include "GxEPD2_BW.h" // Core library for driving black & white e-paper panels
#include <Arduino.h> // Standard Arduino core (for pinMode, digitalWrite, etc.)
// =======================
// Button pin definitions
// =======================
// All buttons are wired active-LOW with internal pullups enabled.
// Pressing a button connects the pin to GND.
#define HOME_KEY 2 // “Home” button, returns UI to main screen
#define EXIT_KEY 1 // “Exit” button, powers down or quits app
#define PREV_KEY 6 // “Up/Previous” navigation button
#define NEXT_KEY 4 // “Down/Next” navigation button
#define OK_KEY 5 // “OK/Select” button
// =================================
// E-paper power & control pin defs
// =================================
#define PWR 7 // Power‐enable pin: HIGH = display powered on, LOW = off
#define BUSY 48 // BUSY pin from panel: HIGH = busy drawing, LOW = ready
#define RST 47 // RST (Reset) pin: pulse LOW to reset the panel
#define DC 46 // D/C (Data/Command) pin: LOW = command, HIGH = data
#define CS 45 // CS (Chip Select) pin for SPI transactions
// ================================
// SD card & (optional) TFT SPI pins
// ================================
#define TFT_SCK 12 // SPI clock for optional TFT (shared SPI bus)
#define TFT_MOSI 11 // SPI MOSI for optional TFT (shared SPI bus)
#define SD_MOSI 40 // SPI MOSI for microSD card
#define SD_MISO 13 // SPI MISO for microSD card
#define SD_SCK 39 // SPI clock for microSD card
#define SD_CS 10 // Chip-select for microSD card
// ========================================
// General-purpose header: 12 GPIO pins map
// ========================================
// These are exposed on the 2×6 header for your own sensors or peripherals.
// Underneath, 4× GND pins and 4× 3V3 pins are wired in parallel for easy wiring.
int pin_Num[12] = {
3, 8, // Row 1: left=GPIO3, right=GPIO8
9, 14, // Row 2: left=GPIO9, right=GPIO14
15, 16, // Row 3: left=GPIO15, right=GPIO16
17, 18, // Row 4: left=GPIO17, right=GPIO18
19, 20, // Row 5: left=GPIO19, right=GPIO20
21, 38 // Row 6: left=GPIO21, right=GPIO38
};
/*
+--------------+
| 3 8 |
| 9 14 |
| 15 16 |
| 17 18 |
| 19 20 |
| 21 38 |
| GND 3v3 |
| GND 3v3 |
| GND 3v3 |
| GND 3v3 |
+--------------+
*/
// ==============================
// Instantiate the e-paper object
// ==============================
// Template parameters:
// - Driver type: GxEPD2_420_GYE042A87 (4.2", 400×300 px, SSD1683)
// - Height macro: GxEPD2_420_GYE042A87::HEIGHT
//
// Constructor parameters order: CS, D/C, RST, BUSY
GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT>
epd(GxEPD2_420_GYE042A87(CS, DC, RST, BUSY));
// ====================================
// epdPower()
// Controls the display power rail.
// HIGH = on, LOW = off.
// ====================================
void epdPower(int state) {
pinMode(PWR, OUTPUT);
digitalWrite(PWR, state);
}
// ====================================
// epdInit()
// Initializes SPI, resets the panel,
// sets orientation, text color & size,
// and configures full-window buffering.
// ====================================
void epdInit() {
// SPI baudrate: 115200 bps, perform hardware reset, reset pulse=50ms, skipInit=false
epd.init(115200, true, 50, false);
// Set screen orientation: 0 = portrait, other values rotate 90°/180°/270°
epd.setRotation(0);
// All subsequent text will be drawn in black
epd.setTextColor(GxEPD_BLACK);
// Default text size multiplier (1=6×8px font, 2=12×16px, etc.)
epd.setTextSize(2);
// Allocate enough RAM for full-height buffering (300px),
// speeding up screen updates at the cost of memory.
epd.setFullWindow();
}
void setup() {
// Turn on the e-paper panel's power rail
epdPower(HIGH);
// Initialize the display (SPI, reset, look&feel)
epdInit();
// Fill the memory buffer & screen with white
epd.fillScreen(GxEPD_WHITE);
// Draw a black border rectangle around the full 400×300 pixel area
epd.drawRect(0, 0, 400, 300, GxEPD_BLACK);
// Position the text cursor at X=40px, Y=130px from the top-left corner
epd.setCursor(40, 130);
// Print our welcome message
epd.print("Hello from mischianti.org!");
// Send the buffered content to the panel (single update)
epd.display();
// Put the panel into ultra-low-power sleep mode
epd.hibernate();
// Optionally cut the power rail to reduce consumption further
epdPower(LOW);
}
void loop() {
// Nothing to do here—everything happens once in setup()
}
Datasheet
ESP32s3 datasheet
SSD1683 datasheet
Board Schematic
Thanks
- Arduino
- esp8285
- esp8266
- ESP32
- DOIT ESP32 DEV KIT v1
- ESP32 DevKitC v4
- ESP32 WeMos LOLIN32
- ESP32 WeMos LOLIN32 Lite
- ESP32 WeMos LOLIN D32
- ESP32-wroom-32
- NodeMCU-32S
- ESP32-S
- ESP32-CAM
- ESP32-2432S028 (Cheap Yellow Display)
- ESP32-2432S032 (Cheap Yellow Display)
- ESP32 s2
- ESP32c3
- ESP32s3
- Arduino SAMD
- STM32
- Raspberry Pi