Getting Started with XIAO ePaper Display EE04
| XIAO ePaper Display Board EE04 |
|---|
![]() |
Introduction
Powered by XIAO ESP32-S3 Plus, the display board EE04 supports both 24-pin and 50-pin ePaper displays. It features a JST 2.0 mm battery connector with power switch, built-in charging IC, and comes with one reset and three user buttons. Well-suited for low-power ePaper projects such as digital signage, electronic labels, and portable information boards.
Featrue
- Powered by XIAO ESP32-S3 Plus: Works immediately when connected to a compatible ePaper display.
- Versatile Display Support: Compatible with a wide range of ePaper screens, supporting both 24-Pin and 50-Pin interfaces with easy switching via jumper caps.
- BAT Connector with Switch: Provides simple battery connection and integrates a switch, enabling efficient power management and energy savings.
- User-Friendly Buttons: Includes 1 reset button and 3 user-programmable buttons, offering flexibility for project acceleration and customizable functions.
Specification
| Parameter | Description |
|---|---|
| Processor | XIAO ESP32-S3 Plus |
| ePaper Connector | FPC 24 Pin 0.5mm FPC 50 Pin 0.5mm |
| Battery Connector | JST 2.0mm |
| Switch | Battery Power ON/OFF |
| Power Supply | - 3.7V Li-Battery - USB Type-C |
| Button | - 1x Reset button - 3x User button |
ePaper Board Selection Guide
| Product | ePaper Display Board EE04 | ePaper Breakout | ePaper Driver Board |
|---|---|---|---|
| Processor | XIAO ESP32-S3 Plus | XIAO Series | XIAO Series |
| Compatible ePaper Displays | 24 Pin ePaper 50 Pin ePaper | 24 Pin ePaper | 24 Pin ePaper |
| ePaper Connector | FPC 24 Pin, 0.5mm FPC 50 Pin, 0.5mm | FPC 24 Pin 0.5mm | FPC 24 Pin 0.5mm |
| Battery Connector | JST 2.0mm | / | JST 2.0mm |
| Switch | Battery Power ON/OFF | / | Battery Power ON/OFF |
| Button | 1x Reset button 3x User button | / | / |
| Extension IO Port | / | connection of others controller | connection of additional sensors |
Application
- Smart Home Dashboard: Display real-time information such as weather updates, calendar events, and notifications from various smart home devices.
- Energy Monitoring: Show energy consumption data from smart meters, helping homeowners track and manage their energy usage more efficiently.
- Security Alerts: Display alerts and notifications about security events, such as motion detection or door/window sensor activation.
- Smart Thermostat Display: Show temperature and humidity levels, as well as control settings for your smart thermostat.
- Digital Photo Frame: Create a WiFi-enabled digital photo frame that can display images from your smart home network.
Hardware Overiew

Supported eInk
24-Pin Connector
- 1.54-inch E-paper - Dotmatix 200x200
- 2.13-inch E-Paper -Flexible Monochrome 212x104
- 2.13-inch E-Paper - Quadruple 212x104
- 2.9 inch E-paper - Monocolor 128x296
- 2.9-inch e-paper - Quadruple color 128x296
- 4.2-inch E-Paper - Monocolor 400x300
- 4.26-inch E-Paper - Monocolor 800x480
- 5.83-inch E-paper - Monocolor 648x480
- 7.5-inch E-paper - Monocolor 800x480
- 7.5-inch E-paper - Tri-Color 800x480

When using the XIAO ePaper Display Board, make sure to set the jumper according to the ePaper display type:
- For 24 Pin ePaper displays → set the jumper to 24 Pin
⚠️ Using the wrong jumper setting may cause the ePaper to fail to display or show abnormal content. Always double-check the jumper position before powering on.
50-Pin Connector

When using the XIAO ePaper Display Board, make sure to set the jumper according to the ePaper display type:
- For 50 Pin ePaper displays → set the jumper to 50 Pin
⚠️ Using the wrong jumper setting may cause the ePaper to fail to display or show abnormal content. Always double-check the jumper position before powering on.
Software Overiew
Install Seeed Arduino GFX Library
Step 3. Install Seeed Arduino LCD Library
This library has same function as TFT library and no compatible with it. If you have installed TFT library or other similary display libraries, please uninstall it first.
Download and install the Seeed GFX library from GitHub.

Scroll down and open this link.

Select your device type and it will generate some code. Copy those code and we will use them later.
If you make the wrong choice, the screen will display nothing.
So please make sure your devices or components type.

After downloading the library, go to Sketch -> Include Library -> Add .ZIP Library and select the downloaded library.

There are 4 basic examples, open a basic example you like:
- Bitmap: Display a bitmap image.
- Clock: Display a clock.
- Clock_digital: Display a digital clock.
- Shape: Display different sizes of words and shape randomly.

Getting Start
Here, we use a 5.83-inch display as an example. The steps are the same for all 24-pin screens; the only difference is selecting the appropriate screen size in the driver.
Create a new "driver.h" file and paste those code into it. The code should be like:

#define BOARD_SCREEN_COMBO 503 // 5.86 inch monochrome ePaper Screen (UC8179)
#define USE_XIAO_EPAPER_DISPLAY_BOARD_EE04
After that, go to Tools -> Board -> XIAO ESP32S3 and Tools -> Port -> Select the port your board is connected to. Then click Upload to upload the code.

Now you will see the feedback in your epaper screen! Following are the results of Helloworld examples.
⚠️ Note: ePaper Cable Orientation When connecting the ePaper display to the XIAO ePaper Display Board, make sure the FPC cable is inserted in the correct direction.
⚠️ Do not reverse the connector! Inserting the cable upside down may cause the ePaper to fail to display or even damage the screen/board. The image below shows the correct connection:

User Buttons on XIAO ePaper Display Board
The EE04 features three user-programmable buttons that can be used for various control purposes. This section demonstrates how to read button states and respond to button presses using Arduino.
On the EE04, the three buttons are connected to the ESP32-S3:
- KEY1 (GPIO2_D1/A1)
- KEY2 (GPIO3_D2/A2)
- KEY3 (GPIO5_D4/A4)
All buttons are active-low, meaning they read LOW when pressed and HIGH when released.
Basic Button Reading Example
This example demonstrates how to detect button presses and print messages to the serial monitor.

// reTerminal E Series - Button Test
// Based on hardware schematic
// Define button pins according to schematic
const int BUTTON_KEY0 = 2; // KEY0 - GPIO2
const int BUTTON_KEY1 = 3; // KEY1 - GPIO3
const int BUTTON_KEY2 = 5; // KEY2 - GPIO5
// Button state variables
bool lastKey0State = HIGH;
bool lastKey1State = HIGH;
bool lastKey2State = HIGH;
void setup() {
// Initialize serial communication
Serial.begin(115200);
while (!Serial) {
delay(10); // Wait for serial port to connect
}
Serial.println("=================================");
Serial.println("Press any button to see output");
Serial.println();
// Configure button pins as inputs
// Hardware already has pull-up resistors, so use INPUT mode
pinMode(BUTTON_KEY0, INPUT_PULLUP);
pinMode(BUTTON_KEY1, INPUT_PULLUP);
pinMode(BUTTON_KEY2, INPUT_PULLUP);
// Read initial states
lastKey0State = digitalRead(BUTTON_KEY0);
lastKey1State = digitalRead(BUTTON_KEY1);
lastKey2State = digitalRead(BUTTON_KEY2);
Serial.println("Setup complete. Ready to detect button presses...");
}
void loop() {
// Read current button states
bool key0State = digitalRead(BUTTON_KEY0);
bool key1State = digitalRead(BUTTON_KEY1);
bool key2State = digitalRead(BUTTON_KEY2);
// Check KEY1
if (key0State != lastKey0State) {
if (key0State == LOW) {
Serial.println("KEY0 (GPIO2) pressed!");
} else {
Serial.println("KEY0 (GPIO2) released!");
}
lastKey0State = key0State;
delay(50); // Debounce delay
}
// Check KEY2
if (key1State != lastKey1State) {
if (key1State == LOW) {
Serial.println("KEY1 (GPIO3) pressed!");
} else {
Serial.println("KEY1 (GPIO3) released!");
}
lastKey1State = key1State;
delay(50); // Debounce delay
}
// Check KEY3
if (key2State != lastKey2State) {
if (key2State == LOW) {
Serial.println("KEY2 (GPIO5) pressed!");
} else {
Serial.println("KEY2 (GPIO5) released!");
}
lastKey2State = key2State;
delay(50); // Debounce delay
}
delay(10); // Small delay to prevent excessive CPU usage
}
Resources
Tech Support & Product Discussion
Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.
