How to Add an E-ink Display to Arduino?

E-ink displays are the favorite choice for low-power electronics. Their ability to hold an image without consuming power and maintain high contrast images makes them perfect for data dashboards, smart labels, weather stations, and more. When paired with compact and capable boards like Seeed Studio’s XIAO ESP32 series, they become even more attractive for modern DIY and IoT projects.

Many makers find it challenging to add an e-ink display to Arduino for their DIY projects. If you are also one of them, this tutorial is for you.

E-ink displays are compatible with widely used microcontrollers. All it requires is using a dedicated ePaper driver board to act as an intermediary and transform complex voltage and waveform generation into a simple plug-and-play solution. 

In this tutorial, we will guide you step-by-step through the entire process using the XIAO ESP32 series and Seeed Studio’s accessible hardware ecosystem to eliminate that complexity. Read on till the end to learn how to create a functional Arduino ePaper in minutes, with sample code to display your first graphics and text. You will learn:

  • Why e-ink? Why This Setup?
  • Step-by-Step Guide to Add an e-ink Display to Arduino
  • Conclusion
A Complete Guide to Add an E-Ink Display to Your Arduino Project

Why e-ink? Why This Setup?

E-ink display is bistable. It only requires high power consumption when the image changes, which OLED or LCD fails to offer. When the pigments are set, they require zero energy to hold that state indefinitely. This makes it best for battery or solar-powered projects that need to run for months. 

The strength of e-ink display comes with a technical hurdle, i.e., it requires high-voltage and precise waveforms for the display that is complex to generate. That’s why in our e-ink display Arduino guide, we will use a specific three-part setup:

  • A Generic Microcontroller: This is the project’s programmable brain. It is responsible for your application logic, sensor reading, and data processing. You code it using the familiar Arduino IDE.
  • A Dedicated E-Ink Driver Board: This is the essential intermediary. Its sole purpose is to generate the necessary high-voltage signals and complex waveforms required to control the E-ink pigments.
  • The E-Ink Display Module: This is the “digital paper” that displays your final text, graphics, or data.

This approach takes away the complexity and makes it quick to create projects. 

The example of ePaper DIY Kit-EE04
The example of ePaper DIY Kit-EE04

Step-by-Step Guide to Add an e-ink Display to Arduino

First things first, the Arduino ePaper project is not rocket science. Seeed Studio’s integrated hardware ecosystem has done the heavy lifting. So, let’s get right to the four-step process to have an e-ink Arduino setup:

1.Hardware Preparation

Step 1. Material Selection

As mentioned earlier, there are three hardware components required to build an Arduino ePaper setup. We are using all these products from Seeed Studio, including:

XIAO ESP32C3

Seeed Studio XIAO ESP32-C3 features a RISC-V architecture and supports Wi-Fi and BLE connectivity. It is useful for a wide range of IoT applications. 

XIAO series: ESP32C3

ePaper Driver Board

The ePaper driver board is a 24-pin FPC connector with a JST 2-pin BAT connector for easy battery connection and a built-in charging IC for safe battery charging. It is best for creating Wi-Fi-based digital photo frames.

Epaper driven board for XIAO

2.9″ Monochrome ePaper Display

The 2.9-inch monochrome ePaper display of Seeed Studio features 296×128 resolution and offers a black and white display with a 2.9-inch diagonal size. It also delivers excellent contrast and a fast refresh rate, which makes it useful for smart wearables, e-readers, and other portable devices.

Eink 2.9 monochrome epaper display with 296x128 pixels 45font

Read more: Which is your best e-ink display for your home-assistant dashboard

Step 2. Insert the XIAO into the ePaper Driver Board

Align the pins and insert the XIAO ESP32C3 into the XIAO socket of the ePaper driver board.

Align the pins and insert the XIAO ESP32C3 into the XIAO socket of the ePaper driver board.

Step 3. Insert the ePaper Display into the FPC Connector

Insert your ePaper display into the board’s 24-pin FPC connector.

Insert your ePaper display into the board's 24-pin FPC connector.

2.Software Preparation

We will use the Arduino IDE and configure the Arduino environment for the XIAO and add the on-board package. 

Tip: If you are using Arduino for the first time, check out our guide on Getting Started with Arduino.

Step 1. Access the Arduino App

Download and launch the Arduino app.

the page of Arduino IDE

Step 2. Add the ESP32 Board

Add the ESP32 board package to your Arduino IDE. To do so, go to File > Preferences, and fill “Additional Boards Manager URLs” with the URL below: https://espressif.github.io/arduino-esp32/package_esp32_index.json

Add the ESP32 board package to your Arduino IDE

Next, go to Tools > Board > Boards Manager. Type the keyword “esp32” in the search box and install the latest version of esp32.

Steps in Arduino IDE Boards Manager to search for "esp32" and install the latest esp32 board package

Step 3. Choose the Board and Port

Board

Go to Tools > Board > ESP32 Arduino and select “XIAO_ESP32C3”. You will find this board after some scrolling. 

Selecting the XIAO_ESP32C3 board from Tools > Board > ESP32 Arduino in Arduino IDE

Port

Go to Tools > Port and pick the serial port name of the connected XIAO ESP32C3. This is usually the COM3 or higher (COM1 and COM2 are mostly reserved for hardware serial ports).

3.Install Seeed GFX Library

Step 1. Install Seeed GFX Library

Use GitHub to download and install the Seeed GFX library

GitHub repository page for the Seeed GFX library showing download and installation options

Scroll down and open this link.

Scroll down and open a link to open the Online Cofiguration Tool

Pick your device type. Afterward, you will get some code. Copy them for later use.

Tip: If you choose the wrong device type, you won’t see any display on the screen. So, make sure you choose the right device type.

Pick your device type

Once the library is downloaded, go to Sketch > Include Library > Add .ZIP Library and choose the downloaded library. 

Adding a ZIP library in Arduino IDE via Sketch > Include Library > Add .ZIP Library

Next, you can open one of the four basic examples:

  1. Clock: Display a clock.
  2. Bitmap: Display a bitmap image.
  3. Clock_digital: Display a digital clock.
  4. Shape: Display random words and shapes in different sizes.

You can access these examples by clicking File > Examples > Seeed_GFX > ePaper > Basic.

Arduino IDE examples menu showing Seeed_GFX ePaper demo sketches
  1. Upload the Code

Create a “driver.h” file and paste the code in it. The code will appear as:

#define BOARD_SCREEN_COMBO 504 // 2.9 inch monochrome ePaper Screen (SSD1680)

#define USE_XIAO_EPAPER_BREAKOUT_BOARD

Now, go to Tools -> Board -> XIAO ESP32C3 and Tools -> Port -> Pick the right port your board is connected to. Click “Upload” to upload the code. 

Uploading code to XIAO ESP32C3 after selecting board and port in Arduino IDE

That’s it! You will see the display on your ePaper screen. 

Device setup completed confirmation screen

Conclusion

An e-ink display for Arduino offers a compact and cost-effective digital screen for DIY projects. It is easier to configure when using specific boards, such as those Seeed Studio offers. 

When using e-ink with Arduino, avoid updating the screen too frequently (once every 3-4 minutes is usually safe). Plus, try to update the screen content daily to keep the contrast sharp. Also, handle the e-ink display with care due to its delicate structure. So, what are you waiting for? Get the components from Seeed Studio, follow the above steps, and begin your Arduino ePaper project.

>> Read more about E ink

About Author

Leave a Reply

Your email address will not be published. Required fields are marked *

Calendar

December 2025
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
293031