Skip to content

E-Paper Display Wiring

E-Paper Display Wiring

This section covers the hardware connection between an ESP32 and an e-paper display module. Proper wiring is critical for reliable communication and display operation. After completing this section, you will be able to:

  • Identify the pin functions on Waveshare e-paper displays
  • Wire the e-paper display to ESP32 using SPI interface
  • Understand the role of each connection pin
  • Verify the wiring with a test sketch

Before starting this section, please ensure:

  • Basic understanding of SPI communication protocol
  • Familiarity with ESP32 GPIO pins
  • ESP32 development board (recommended: ESP32 DevKit or XIAO ESP32-C3)
  • Waveshare e-paper display (any size, 2.13” recommended)
  • Jumper wires (female-female)
  • Breadboard (optional)

The e-paper display communicates with the ESP32 via SPI (Serial Peripheral Interface), a synchronous serial communication protocol that uses four main signals:

ESP32 ─────────────────────── E-Paper Display
├── SCK (Serial Clock) ─────→ SCK
├── MOSI (Master Out Slave In) ──→ DIN
├── CS (Chip Select) ───────→ CS
└── DC (Data/Command) ─────→ DC
Additional signals:
├── RST (Reset) ───────────→ RST
└── BUSY ──────────────────→ BUSY

Signal Descriptions:

SignalDirectionFunction
SCKESP32 → DisplaySerial clock signal
MOSI/DINESP32 → DisplayData sent to display
CSESP32 → DisplayActive-low chip select
DCESP32 → DisplayData (HIGH) or Command (LOW)
RSTESP32 → DisplayHardware reset
BUSYDisplay → ESP32Display busy indicator

Waveshare 2.13” E-Paper (Recommended Pinout):

E-Paper PinDescriptionESP32 GPIO
VCC / 3.3VPower (3.3V)3.3V
GNDGroundGND
DIN / MOSISPI data inputGPIO 23
SCK / CLKSPI clockGPIO 18
CSChip selectGPIO 5
DCData/commandGPIO 17
RSTResetGPIO 16
BUSYBusy statusGPIO 4

Note: These pin assignments are configurable in software. The above uses the most common defaults for ESP32.

Alternative Pin Mapping for XIAO ESP32-C3:

E-Paper PinESP32-XIAO C3 Pin
VCC3.3V
GNDGND
DIN / MOSIGPIO 3
SCK / CLKGPIO 2
CSGPIO 5
DCGPIO 4
RSTGPIO 6
BUSYGPIO 7

Gather the following components:

Required:
- ESP32 development board × 1
- Waveshare e-paper display (2.13") × 1
- Female-to-female jumper wires × 8
- Micro USB cable × 1
- Breadboard (optional but helpful)

Start by connecting power and ground:

ESP32 3.3V ──────────── E-Paper VCC
ESP32 GND ──────────── E-Paper GND

Warning: Do not use 5V! E-paper displays require 3.3V power. Connecting 5V can permanently damage the display.

Connect the SPI communication lines:

ESP32 GPIO 23 ───────── E-Paper DIN (MOSI)
ESP32 GPIO 18 ───────── E-Paper SCK (CLK)
ESP32 GPIO 5 ───────── E-Paper CS
ESP32 GPIO 17 ───────── E-Paper DC

Connect the remaining control signals:

ESP32 GPIO 16 ───────── E-Paper RST
ESP32 GPIO 4 ───────── E-Paper BUSY
┌────────────────────────────────────────────────────────┐
│ ESP32 DevKit │
│ │
│ 3.3V ──────────────────────────────────────────────────┼──→ VCC (E-Paper)
│ GND ──────────────────────────────────────────────────┼──→ GND (E-Paper)
│ GPIO 23 (MOSI) ────────────────────────────────────────┼──→ DIN
│ GPIO 18 (SCK) ────────────────────────────────────────┼──→ SCK
│ GPIO 5 (CS) ────────────────────────────────────────┼──→ CS
│ GPIO 17 (DC) ────────────────────────────────────────┼──→ DC
│ GPIO 16 (RST) ────────────────────────────────────────┼──→ RST
│ GPIO 4 (BUSY) ────────────────────────────────────────┼──→ BUSY
└────────────────────────────────────────────────────────┘

After wiring, perform these checks:

  • VCC is connected to 3.3V (not 5V)
  • GND is connected
  • All SPI pins are connected to the correct GPIOs
  • No loose connections
  • Jumper wires are fully inserted

Upload this minimal wiring test sketch:

#include <SPI.h>
// Pin definitions
#define EPD_CS 5
#define EPD_DC 17
#define EPD_RST 16
#define EPD_BUSY 4
void setup() {
Serial.begin(115200);
// Initialize control pins
pinMode(EPD_CS, OUTPUT);
pinMode(EPD_DC, OUTPUT);
pinMode(EPD_RST, OUTPUT);
pinMode(EPD_BUSY, INPUT);
digitalWrite(EPD_CS, HIGH);
// Reset display
digitalWrite(EPD_RST, LOW);
delay(10);
digitalWrite(EPD_RST, HIGH);
delay(10);
// Check BUSY signal
int busyState = digitalRead(EPD_BUSY);
Serial.print("BUSY pin state: ");
Serial.println(busyState);
Serial.println("Wiring test complete!");
}
void loop() {
// Nothing to do here
}

Expected Output:

BUSY pin state: 1
Wiring test complete!

Symptoms:

  • Screen remains completely white or blank
  • No visible change after uploading sketch

Possible Causes:

  • Power connections reversed
  • Loose jumper wires
  • Display not receiving power

Solutions:

~3.3V
# 1. Verify power with multimeter
# Check voltage between VCC and GND on e-paper header
  • Check that all jumper wires are fully seated
  • Verify ESP32 is powered (USB connected, onboard LED on)
  • Try reseating the display connector

Issue 2: Display Shows Partial Update Artifacts

Section titled “Issue 2: Display Shows Partial Update Artifacts”

Symptoms:

  • Ghosting or previous image remnants
  • Random pixels or lines on screen

Possible Causes:

  • BUSY pin not connected or misconfigured
  • Timing issues with initialization

Solutions:

  • Verify BUSY pin connection
  • Check pin assignments match the code
  • Ensure proper initialization sequence (reset → wait → init)

Symptoms:

  • Compilation succeeds but display doesn’t respond
  • Serial monitor shows initialization errors

Solutions:

  1. Double-check all SPI pin connections
  2. Verify GPIO numbers in code match physical connections
  3. Test with a different SPI bus speed (lower)
  • Use female-to-female jumper wires for temporary prototyping
  • Keep wires short (< 20cm) to avoid signal degradation
  • Add a 10µF capacitor between VCC and GND near the display for stable power
  • Avoid using 5V on any e-paper pins
  • Don’t hot-plug the display while the ESP32 is powered
  • Don’t exceed 10cm wire length for BUSY signal in noisy environments
  1. E-paper displays use SPI interface — requiring 6 signal lines (SCK, MOSI, CS, DC, RST, BUSY) plus power
  2. 3.3V only — e-paper displays are not 5V tolerant
  3. Pin assignments are configurable — the GxEPD2 library allows custom pin mapping
  4. BUSY signal is critical — the display needs time to complete its internal refresh cycle
  5. Always verify wiring with a test sketch before building complex applications

Target Audience: Alibaba.com IoT Pre-sales Engineers
Status: ✅ Completed