E-Ink Retail Price Tag using Seeeduino XIAO SAMD21 and ePaper Display
- 01 — Overview
- 02 — Hardware and Software Components
- 03 — Application Discussion
- 04 — Hardware Setup
- 05 — Software Setup
- 06 — Function Overview
- 07 — Use of the Image2Lcd Software
- 08 — Bitmap Conversion
- 09 — Downloading and Setting Up the Code
- 10 — Updating the Price
- 11 — System Demonstration
- 12 — Conclusion
- 13 — References
- 14 — Project Authors
01 Overview
The traditional paper price tag in grocery stores is on the verge of becoming a relic of the past. This innovative switch to e-ink displays offers a multitude of benefits for both stores and customers. Firstly, it promotes sustainability by eliminating the need for constantly printing and discarding paper tags. Secondly, the system utilizes XIAO's USB for serial communication, allowing for quick and efficient updates to prices and other label information, eliminating the time-consuming task of manually changing paper tags. Finally, e-ink displays offer superior readability compared to paper — their clear, high-contrast text ensures that customers can easily see prices and other relevant information, even under bright store lighting.
In this tutorial, we will explore a tiny device — the Seeeduino XIAO SAMD21. Despite its size, XIAO offers ample pins for various components and supports multiple communication protocols. Its user-friendly Arduino compatibility makes it perfect for beginners and makers alike to explore the world of electronics.
Project Use Case
This project is for makers, small retailers, or students who want a low-power, easily updatable alternative to printed shelf labels — updating a price becomes a quick reflash instead of printing and swapping paper tags.
02 Hardware and Software Components
Gather everything below before you start.
Hardware Components
| Component | Description |
|---|---|
| Seeed Studio XIAO SAMD21 (Seeeduino XIAO) | Compact Arduino-compatible board that drives the ePaper display and handles USB serial updates. |
| ePaper Breakout Board — 24-pin FPC | Extension board that lets the XIAO series drive an ePaper display without soldering. |
| 2.13" Monochrome eInk/ePaper Display (122x250) | The e-ink screen that displays the price tag content. |
Software Tools
| Software | Description |
|---|---|
| Arduino IDE | Used to configure the XIAO board package and upload the ePaper sketch. |
| Image2Lcd | Converts a BMP/JPG image into a C array (.h file) the XIAO can display on the ePaper screen. |
| Canva (or similar design tool) | Used to design the price tag image before converting it with Image2Lcd. |
03 Application Discussion
Seeed Studio XIAO SAMD21
The XIAO SAMD21, a tiny but mighty board from Seeed Studio, is the first in a line of powerful Arduino-compatible development boards. Despite its small size, it packs a punch with a low-power processor that excels at processing tasks, making it perfect for wearable devices and other projects where space is limited and battery life is important.
The XIAO SAMD21 is packed with features, offering 14 pins for connecting various components like sensors and lights. It also includes a built-in LED for debugging and a modern USB-C port for both power and uploading code. With its versatility and compact design, the XIAO SAMD21 is a great tool for creating all sorts of electronic projects.
ePaper Breakout Board — 24-pin FPC
The ePaper Breakout Board is an extension board built with a 24-pin FPC connector, designed for Seeed Studio XIAO series boards, allowing you to drive an ePaper display seamlessly. It also comes with an 8-pin 2.54mm header, letting you connect to any microcontroller like an Arduino Uno or Raspberry Pi.
It is suitable for a wide range of ePaper displays, from small to large sizes. Supported by different functional Seeed Studio XIAO boards and requiring no soldering, this extension board can be easily deployed in various scenarios.
2.13" Monochrome eInk/ePaper Display (122x250)
This 2.13-inch e-paper display offers a high-quality, low-power option for various uses. It's clear, readable in sunlight, and uses minimal energy, making it ideal for e-readers, shelf labels, and more.
04 Hardware Setup
Follow the step-by-step build guide below.
Step 1 — Prepare the Materials
Step 2 — Insert the XIAO into the XIAO Socket
Align the pins and gently insert your XIAO into the XIAO socket on the board.
Step 3 — Insert the eInk into the FPC Connector
Carefully slide your e-paper display into the 24-pin FPC connector on the ePaper Breakout Board.
05 Software Setup
The recommended programming tool is the Arduino IDE. You will need to configure the Arduino environment for the XIAO and add the on-board package.
Step 1 — Launch the Arduino Application
Step 2 — Select Your Development Board Model
Add your board model to the Arduino IDE.
Step 3 — Enter Bootloader Mode
This avoids the port disappearing when the program fails to upload.
- Connect the Seeed Studio SAMD21 to your computer.
- Use tweezers or short lines to short the RST pins in the diagram twice.
- The orange LED lights flicker on and light up.
Step 4 — Install the Board Package
Go to Tools → Board Manager, then search for SEEEDUINO SAMD Boards and click Install.
Step 5 — Select the Board
Click the Board selection dropdown menu, then click on "Select other board and port..."
Step 6 — Select the Port
Select the communication port for your XIAO, then search for and select "COM7 Serial Port (USB)" or whatever appears on your side.
Step 7 — Run the Blink Test
Go to File → Examples → Basics → Blink for testing.
Step 8 — Update the LED Pin
Change all instances of LED_BUILTIN to 10.
Step 9 — Wire and Verify the Test LED
Connect the LED to GND and A10/D10 (MOSI) for checking.
06 Function Overview
Before developing a sketch, here are the ePaper library functions available.
-
void EPD_HW_Init()— Full screen refresh initialization. -
void EPD_HW_Init_180()— Display rotation 180 degrees initialization. -
void EPD_WhiteScreen_ALL(const unsigned char *datas)— Full screen refresh display function.Input Parameter:datas— the image data that needs to be refreshed. -
void EPD_WhiteScreen_White()— Clear screen display. -
void EPD_WhiteScreen_Black()— Display all black. -
void EPD_DeepSleep()— Deep sleep function.Warning: Enter sleep mode and do not remove this call — skipping it will reduce the lifespan of the screen. -
void EPD_Init_Part()— Partial refresh display. -
void EPD_SetRAMValue_BaseMap(const unsigned char * datas)— Partial refresh of background display.Input Parameter:datas— the image data that needs to be refreshed. -
void EPD_Dis_PartAll(const unsigned char *datas)— Full screen partial refresh display. -
void EPD_Dis_Part(unsigned int x_start, unsigned int y_start, const unsigned char * datas, unsigned int PART_COLUMN, unsigned int PART_LINE)— Partial refresh display.Input Parameters:-
x_start— the x value of the starting point. -
y_start— the y value of the starting point. -
datas— data that needs to be changed. -
PART_COLUMN— the length of the area to be changed. -
PART_LINE— the width of the area to be changed.
-
-
void EPD_HW_Init_Fast()— Fast refresh display. -
void EPD_WhiteScreen_ALL_Fast(const unsigned char *datas)— Fast refresh display function.Input Parameter:datas— the image data that needs to be refreshed. -
void EPD_HW_Init_Fast2()— Fast refresh display function.
07 Use of the Image2Lcd Software
How to Make a Picture
Use the built-in Paint software in Windows to create a picture with the same resolution as the screen you are using, and save it as a BMP or JPG file.
.h file to include extra bytes, which will distort the image.The colors of the picture should be consistent with the standard colors of the drawing board that comes with Windows. The color of the 2.13-inch Monochrome ePaper in this tutorial should only be pure black and white.
08 Bitmap Conversion
Step 1 — Open Image2Lcd
Open Image2Lcd.7z (https://files.seeedstudio.com/wiki/eInk/xiao-expansion/Image2Lcd.7z), extract it, and open the application.
Step 2 — Configure the Output Settings
Open the picture, select the "Output file type" as "C array (*.c)", and select the "Scan mode" as "Horizon Scan". The other parameter settings for a 2.13-inch Monochrome ePaper are as follows:
| Setting | Value |
|---|---|
| BitPixl | Monochrome |
| Max Width and Height | 128 x 250 |
| Color Mode | Reverse Color |
| Display Mode | Normal |
Step 3 — Save the Output File
Click "Save" to save the LCD output array as a .h file.
09 Downloading and Setting Up the Code
Step 1 — Download the Demo Code
Download the demo code (https://github.com/Allen-Kuang/e-ink_Demo/tree/main/2.13-inch%20E-paper%20-%20monocolor%20122x250/example) for the 2.13-inch E-paper - monocolor 122x250.
Step 2 — Open the Example Sketch
Once you have downloaded and extracted the demo code, navigate to and open the "2.13-inch E-paper - monocolor 122x250" folder. Move your files to this folder, then open the "example" folder and use Arduino IDE to open the "example.ino" file.
Step 3 — Replace the Demo Image File
Delete the demo.h file and replace it with the .h file you outputted from Image2Lcd, then include it in the code.
Step 4 — Select the Board
Click the Board selection dropdown menu, then click on "Select other board and port..."
Step 5 — Select the Port
Select the communication port for your XIAO, then search for and select "COM7 Serial Port (USB)" or whatever appears on your side.
Step 6 — Reference Your Image in Code
Don't forget to include your outputted .h file from Image2Lcd in the following line of code:
EPD_WhiteScreen_ALL(gImage_pricetag);
Step 7 — Upload the Firmware
Click "Upload" to flash the firmware onto the XIAO.
Step 8 — Verify the Display
You should see the ePaper display refreshing with the image, as shown below:
10 Updating the Price
Step 1 — Open Your Design Tool
Go to Canva or wherever you did your ePaper image design.
Step 2 — Update the Price
Change it to your desired price.
Step 3 — Reconvert and Reflash
Repeat the Bitmap Conversion and Downloading and Setting Up the Code steps above, and you're good to go.
As shown above, the price changed from PHP 500 to PHP 1000.
11 System Demonstration
Video Demonstration
12 Conclusion
Tired of endless paper price tags? This project explores a revolutionary idea: using e-ink displays in grocery stores. These low-power, easy-to-read screens can replace paper tags, saving money and reducing waste. The Seeeduino XIAO, a tiny powerhouse, allows for quick price updates via USB — no reprinting, no paper waste, just a reflash. This project points to a smoother, more sustainable way to handle grocery store labeling using e-ink technology.
13 References
-
XIAO eInk Expansion Board Wiki
(https://wiki.seeedstudio.com/XIAO-eInk-Expansion-Board/) -
Seeeduino XIAO Wiki
(https://wiki.seeedstudio.com/Seeeduino-XIAO/) -
e-ink_Demo — GitHub
(https://github.com/Allen-Kuang/e-ink_Demo)
14 Project Authors
- Christian Kyle Mari Arcamo
- Lukie-Mar Lonzaga
- Miles Darren Bagnol
- Elijah Joseph Orias
