Skip to main content

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

ParameterDescription
ProcessorXIAO ESP32-S3 Plus
ePaper ConnectorFPC 24 Pin 0.5mm
FPC 50 Pin 0.5mm
Battery ConnectorJST 2.0mm
SwitchBattery Power ON/OFF
Power Supply- 3.7V Li-Battery
- USB Type-C
Button- 1x Reset button
- 3x User button

ePaper Board Selection Guide

ProductePaper Display Board EE04ePaper BreakoutePaper Driver Board
ProcessorXIAO ESP32-S3 PlusXIAO SeriesXIAO Series
Compatible ePaper Displays24 Pin ePaper
50 Pin ePaper
24 Pin ePaper24 Pin ePaper
ePaper ConnectorFPC 24 Pin, 0.5mm
FPC 50 Pin, 0.5mm
FPC 24 Pin 0.5mmFPC 24 Pin 0.5mm
Battery ConnectorJST 2.0mm/JST 2.0mm
SwitchBattery Power ON/OFF/Battery Power ON/OFF
Button1x Reset button
3x User button
//
Extension IO Port/connection of others controllerconnection 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

tip

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

tip

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

tip

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.

tip

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:

  1. Bitmap: Display a bitmap image.
  2. Clock: Display a clock.
  3. Clock_digital: Display a digital clock.
  4. 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.

tip

⚠️ 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.

Loading Comments...