ElectronParade

← Back to Academy

E-Paper Display

Welcome back to the Academy! Today, we’re looking at something practically magical: E-Paper displays (also known as e-ink). If you’ve ever read on an e-reader like a Kindle, you’ve experienced this technology firsthand.

Unlike LCDs or OLEDs that constantly need power to stay lit, E-Paper displays are incredibly unique. They only consume electricity when changing what’s on the screen. Once an image or text is drawn, it stays there indefinitely—even if you disconnect the power completely!

Why Use E-Paper?

E-Paper displays are perfect for specific types of maker projects. Here are a few reasons why you might choose one for your next build:

Of course, they do have a catch: the refresh rate. E-Paper takes a second or two (and sometimes flashes black and white) to update. So, while it’s terrible for video or fast animations, it’s brilliant for weather stations, smart calendars, or digital name badges.

Getting Started: A Quick Code Example

To use an E-Paper display with an Arduino or ESP32, you’ll typically use a popular library like GxEPD2. Here’s a quick snippet showing how you might initialize the display and write some simple text to it:

#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>

// Initialize your specific display model (example for a 1.54" SPI display)
GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));

void setup() {
  Serial.begin(115200);
  display.init(115200); // initialize the display

  // Set up the font and text color
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);
  display.setTextColor(GxEPD_BLACK);

  // Start the drawing routine
  display.setFullWindow();
  display.firstPage();
  do {
    display.fillScreen(GxEPD_WHITE);
    display.setCursor(10, 30);
    display.print("Hello, E-Paper!");
  } while (display.nextPage());
  
  // The display now holds the image!
  // At this point, you could put the microcontroller into deep sleep.
}

void loop() {
  // Nothing to do here for a static display
}

With this basic setup, your microcontroller can wake up, update the screen with the latest sensor data or weather forecast, and then go entirely to sleep. The screen will keep displaying your data, keeping your battery running for months or even years!

Hardware You’ll Need

To follow along with this lesson, you’ll need the following components: