WAVESHARE Pico e-Paper 2.9 B EPD Module for Raspberry Pi Pico User Guide
- June 16, 2024
- WAVESHARE
Table of Contents
- Pico e-Paper 2.9 B EPD Module for Raspberry Pi Pico
- Product Information
- Specifications
- Product Usage Instructions
- Upload Demo At the First Time
- Open Source Demo
- Question: What is the usage environment of the e-ink
- Question: What are the precautions for e-ink screen
- Question: Why can’t Chinese characters be displayed on the
- Question: After using for a period of time, the screen refresh
- Question: Why does the e-Paper show a black border?
- Question: What is the specification of the screen cable
Pico e-Paper 2.9 B EPD Module for Raspberry Pi Pico
Product Information
Specifications
- Product Name: Pico e-Paper 2.9 (B)
- Usage Environment: Indoor recommended
- E-Ink Screen Usage Environment:
- Recommended Relative Humidity: 35%~65%RH
- Maximum Storage Time: 6 months below 55%RH
- Transportation Time: 10 days
- Screen Cable Interface Specification: 0.5mm pitch, 24Pin
Product Usage Instructions
Upload Demo At the First Time
-
Press and hold the BOOTSET button on the Pico board.
-
Connect the Pico to the USB port of the computer via the Micro
USB cable. -
Release the button when the computer recognizes a removable
hard drive (RPI-RP2). -
Download the demo and open arduinoPWMD1-LED path under the
D1LED.ino. -
Click Tools -> Port and remember the existing COM (different
computers show different COM, remember the existing COM on your
computer). -
Connect the driver board to the computer with a USB cable.
-
Click Tools -> Ports and select uf2 Board for the first
connection. -
After the upload is complete, connecting again will result in
an additional COM port. -
Click Tool -> Dev Board -> Raspberry Pi Pico/RP2040 ->
Raspberry Pi Pico. -
After setting, click the right arrow to upload.
-
If you encounter problems, reinstall or replace the Arduino IDE
version. -
To uninstall the Arduino IDE, uninstall it cleanly.
-
Manually delete all the contents of the folder
C:Users[name]AppDataLocalArduino15 (you need to show hidden
files to see it). -
Reinstall the Arduino IDE.
Open Source Demo
- MicroPython Demo (GitHub)
- MicroPython Firmware/Blink Demo (C)
- Official Raspberry Pi C/C++ Demo
- Official Raspberry Pi MicroPython Demo
- Arduino Official C/C++ Demo
FAQ
Question: What is the usage environment of the e-ink
screen?
Answer: The recommended relative humidity for the e-ink screen
is 35%~65%RH. For storage, it should be below 55%RH, and the
maximum storage time is 6 months. During transportation, it should
not exceed 10 days.
Question: What are the precautions for e-ink screen
refresh?
Answer: The e-ink screen is recommended for indoor use. If used
outdoors, it should be protected from direct sunlight and UV rays.
When designing products with e-ink screens, ensure that the
temperature and humidity requirements of the screen are met.
Question: Why can’t Chinese characters be displayed on the
e-ink screen?
Answer: The Chinese character library in our routine uses the
GB2312 encoding method. To display Chinese characters, please
change your xxx_test.c file to the GB2312 encoding format, compile
and download it.
Question: After using for a period of time, the screen refresh
(full refresh) has a serious afterimage problem that cannot be
repaired?
Answer: After each refresh operation, it is recommended to set
the screen to sleep mode or directly power off the device to
prevent the screen from being in a high voltage state for a long
time, which may cause burnout.
Question: Why does the e-Paper show a black border?
Answer: The border display color can be set through the Border
Waveform Control register or the VCOM AND DATA INTERVAL SETTING
register.
Question: What is the specification of the screen cable
interface?
Answer: The screen cable interface has a 0.5mm pitch and 24
pins.
Pico e-Paper 2.9 (B)
Overview
Pico e-Paper 2.9 (B)
2.9inch EPD (Electronic Paper Display) Module For Raspberry Pi Pico, 296 × 128
Pixels, Black / White / Red, SPI Interface.
Specification
Size: 2.9inch Outline dimensions(raw panel): 79.0mm × 36.7mm × 1.05mm Outline dimension(driver board): 82.0mm × 38.0mm Display size: 66.89mm × 29.05mm Operating voltage: 3.3V/5V Interface: SPI Dot pitch: 0.138 × 0.138 Resolution: 296 × 128 Display color: Black, White, Red Greyscale: 2 full refresh time: 15s Refresh power: 26.4mW (typ.) Standby current: <0.01uA (almost none) Note:
2.9inch EPD Module for Raspberry Pi Pico,
296 × 128, Black / White /Red, SPI
1. Refresh time: The refresh time is the experimental results, the actual
refresh time will have errors, and the actual effect shall prevail. There will
be a flickering effect during the global refresh process, this is a normal
phenomenon.
2. Power consumption: The power consumption data is the experimental results.
The actual power consumption will have a certain error due to the existence of
the driver board and the actual use situation. The actual effect shall
prevail.
SPI Communication Timing
Since the ink screen only needs to be displayed, the data cable (MISO) sent
from the machine and received by the host is hidden here.
CS: Slave chip select, when CS is low, the chip is enabled. DC: data/command
control pin, write command when DC=0; write data when DC=1. SCLK: SPI
communication clock. SDIN: SPI communication master sends, the slave receives.
Timing: CPHL=0, CPOL=0 (SPI0)
Remarks For specific information about SPI, you can search for information
online. Working Protocol
This product is an E-paper device adopting the image display technology of
Microencapsulated Electrophoretic Display, MED. The initial approach is to
create tiny spheres, in which the charged color pigments are suspended in the
transparent oil and would move depending on the electronic charge. The E-paper
screen displays patterns by reflecting the ambient light, so it has no
background light requirement. (Note that the e-Paper cannot support updating
directly under sunlight). How to define pixels In a monochrome picture we
define the pixels, 0 is black and 1 is white.
White : Bit 1
BlackBit 0
The dot in the figure is called a pixel. As we know, 1 and 0 are used to
define the color, therefore we can use one bit to define the color of one
pixel, and 1 byte = 8pixels For example, If we set the first 8 pixels to black
and the last 8 pixels to white, we show it by codes, they will be 16-bit as
below:
For the computer, the data is saved in MSB format:
So we can use two bytes for 16 pixels. For 2.13inch e-paper B, the display
colors are red, black, and white. We need to split the picture into 2
pictures, one is a black and white picture, and another is a red and white
picture. When transmitting, because one register controls a black or white
pixel, one controls a Red or white display. The black and white part of 2.13
use 1 byte to control 8 pixels, and the red and white part uses 1 byte to
control 8 pixels. For example, suppose there are 8 pixels, the first 4 are
red, and the back 4 are black: They need to be disassembled into a black and
white picture and a red and white picture. Both pictures have 8 pixels, but
the first four pixels of the black and white picture are white, the last 4
pixels are black, and the first 4 pixels of the red and white picture One
pixel is red, and the last four pixels are white.
If you define that the data of the white pixel is 1 and the black is 0, then
we can get:
So that we can use 1 byte to control every eight pixels.
Precautions
1. For the screen that supports partial update, please note that you cannot
refresh the screen with the partial mode all the time. After several partial
updating, you need to fully refresh the screen once. Otherwise, the screen
display effect will be abnormal, which cannot be repaired!
2. Because of the different batches, some of them have aberrations. Store the
e-Paper right side up will reduce it. And if the e-Paper didn’t be refreshed
for a long time, it will become more and more reddish/yellowish. Please use
the demo code to refresh the e-paper several times in this case.
3. Note that the screen cannot be powered on for a long time. When the screen
is not refreshed, please set the screen to sleep mode, or power off the
e-Paper. Otherwise, the screen will remain in a high voltage state for a long
time, which will damage the e-Paper and cannot be repaired!
4. When using the e-Paper, it is recommended that the refresh interval be at
least 180s, and refresh at least once every 24 hours. If the e-Paper is not
used for a long time, the ink screen should be brushed and stored. (Refer to
the datasheet for specific storage environment requirements)
5. After the screen enters sleep mode, the sent image data will be ignored,
and it can be refreshed normally only after initializing again.
6. Control the 0x3C or 0x50 (refer to the datasheet for details) register to
adjust the border color. In the routine, you can adjust the Border Waveform
Control register or VCOM AND DATA INTERVAL SETTING to set the border.
7. If you find that the created image data is displayed incorrectly on the
screen, it is recommended to check whether the image size setting is correct,
change the width and height settings of the image and try again.
8. The working voltage of the e-Paper is 3.3V. If you buy the raw panel and
you need to add a level convert circuit for compatibility with 5V voltage. The
new version of the driver board (V2.1 and subsequent versions) has added a
level processing circuit, which can support both 3.3V and 5V working
environments. The old version can only support a 3.3V working environment. You
can confirm the version before using it. (The one with the 20-pin chip on the
PCB is generally the new version)
9. The FPC cable of the screen is relatively fragile, pay attention to
bending the cable along the horizontal direction of the screen when using it,
and do not bend the cable along the vertical direction of the screen
10. The screen of e-Paper is relatively fragile, please try to avoid
dropping, bumping, and pressing hard.
11. We recommend that customers use the sample program provided by us to test
with the corresponding development board after they get the screen.
RPi Pico
Hardware Connection
Please take care of the direction when connecting Pico. A logo of the USB port is printed to indicate the directory, you can also check the pins. If you want to connect the board by an 8-pin cable, you can refer to the table below:
e-Paper Pico
Description
VCC VSYS
Power input
GND GND
Ground
DIN GP11 MOSI pin of SPI interface, data transmitted from Master to Slave.
CLK GP10
SCK pin of SPI interface, clock input
CS GP9
Chip select pin of SPI interface, Low Active
DC GP8
Data/Command control pin (High: Data; Low: Command)
RST GP12
Reset pin, low active
BUSY GP13
Busy output pin
KEY0 GP2
User key 0
KEY1 GP3
User key 1
RUN RUN
Reset
You can just attach the board to Pico like the Pico-ePaper-7.5.
Setup Environment
You can refer to the guides for Raspberry Pi:
https://www.raspberrypi.org/documentation/pico/getting-started/ Download Demo
codes
Open a terminal of Pi and run the following command:
cd ~ sudo wget https://files.waveshare.com/upload/2/27/Pico_ePaper_Code.zip
unzip Pico_ePaper_Code.zip -d Pico_ePaper_Code cd ~/Pico_ePaper_Code
You can also clone the codes from Github.
cd ~ git clone https://github.com/waveshare/Pico_ePaper_Code.git cd
~/Pico_ePaper_Code
About the examples
The guides are based on Raspberry Pi. C codes
The example provided is compatible with several types, you need to modify the
main.c file, uncomment the definition according to the actual type of display
you get. For example, if you have the Pico-ePaper-2.13, please modify the
main.c file, uncomment line 18 (or maybe it is line 19).
Set the project:
cd ~/Pico_ePaper_Code/c
Create build folder and add the SDK. ../../pico-sdk is the default path of the
SDK, if you save the SDK to other directories, please change it to the actual
path.
mkdir build cd build export PICO_SDK_PATH=../../pico-sdk
Run cmake command to generate Makefile file.
cmake ..
Run the command make to compile the codes.
make -j9
After compiling, the epd.uf2 file is generated. Next, press and hold the
BOOTSEL button on the Pico board, connect the Pico to the Raspberry Pi using
the Micro USB cable, and release the button. At this point, the device will
recognize a removable disk (RPI-RP2). Copy the epd.uf2 file just generated to
the newly recognized removable disk (RPI-RP2), Pico will automatically restart
the running program. Python First press and hold the BOOTSEL button on the
Pico board, use the Micro USB cable to connect the Pico to the Raspberry Pi,
then release the button. At this point, the device will recognize a removable
disk (RPI-RP2). Copy the rp2-pico-20210418-v1.15.uf2 file in the python
directory to the removable disk (RPI-RP2) just identified. Update Thonny IDE.
sudo apt upgrade thonny
Open Thonny IDE (click on the Raspberry logo -> Programming -> Thonny Python
IDE ), and select the interpreter:
Select Tools -> Options… -> Interpreter. Select MicroPython (Raspberry Pi Pico
and ttyACM0 port). Open the Pico_ePaper-xxx.py file in Thonny IDE, then run
the current script (click the green triangle).
C Code Analysis
Bottom Hardware Interface We package the hardware layer for easily porting to
the different hardware platforms. DEV_Config.c(.h) in the directory:
Pico_ePaper_CodeclibConfig.
Data type:
define UBYTE uint8_t #define UWORD uint16_t #define UDOUBLE uint32_t
Module initialize and exit:
void DEV_Module_Init(void); void DEV_Module_Exit(void); Note 1. The functions
above are used to initialize the display or exit handle.
GPIO Write/Read:
void DEV_Digital_Write(UWORD Pin, UBYTE Value); UBYTE DEV_Digital_Read(UWORD
Pin);
SPI transmits data:
void DEV_SPI_WriteByte(UBYTE Value);
EPD driver The driver codes of EPD are saved in the directory:
Pico_ePaper_CodeclibePaper Open the .h header file, you can check all the
functions defined.
Initialize e-Paper, this function is always used at the beginning and after
waking up the display.
//2.13inch e-Paper, 2.13inch e-Paper V2, 2.13inch e-Paper (D), 2.9inch
e-Paper, 2.9inch e-Paper (D) void EPD_xxx_Init(UBYTE Mode); // Mode = 0 fully
update, Mode = 1 partial updat e //Other types void EPD_xxx_Init(void);
xxx should be changed by the type of e-Paper, For example, if you use 2.13inch
e-Paper (D), to fully update, it should be EPD_2IN13D_Init(0) and
EPD_2IN13D_Init(1) for the partial update;
Clear: this function is used to clear the display to white.
void EPD_xxx_Clear(void);
xxx should be changed by the type of e-Paper, For example, if you use 2.9inch
ePaper (D), it should be EPD_2IN9D_Clear();
Send the image data (one frame) to EPD and display
//Bicolor version void EPD_xxx_Display(UBYTE Image); //Tricolor version void
EPD_xxx_Display(const UBYTE blackimage, const UBYTE ryimage);
There are several types which are different from others
//Partial update for 2.13inch e-paper (D), 2.9inch e-paper (D) void
EPD_2IN13D_DisplayPart(UBYTE Image); void EPD_2IN9D_DisplayPart(UBYTE
Image);
//For 2.13inch e-paper V2, you need to first useEPD_xxx_DisplayPartBaseImage
to display a static background and then partial update by the function
EPD_xxx_Dis playPart() void EPD_2IN13_V2_DisplayPart(UBYTE Image); void
EPD_2IN13_V2_DisplayPartBaseImage(UBYTE Image);
Enter sleep mode
void EPD_xxx_Sleep(void);
Note, You should only hardware reset or use initialize function to wake up
ePaper from sleep mode xxx is the type of e-Paper, for example, if you use
2.13inch e-Paper D, it should be EPD_2IN13D_Sleep(). Application Programming
Interface We provide basic GUI functions for testing, like draw point, line,
string, and so on. The GUI function can be found in the directory:
RaspberryPi_JetsonNanoclibGUIGUI_Paint.c(.h).
The fonts used can be found in the directory: RaspberryPi_JetsonNanoclibFonts.
Create a new image, you can set the image name, width, height, rotate angle,
and color.
void Paint_NewImage(UBYTE image, UWORD Width, UWORD Height, UWORD Rotate,
UWOR D Color) Parameters:
image: Name of the image buffer, this is a pointer; Width: Width of the image;
Height: Height of the image; Rotate: Rotate the angle of the Image; Color: The
initial color of the image;
Select image buffer: You can create multiple image buffers at the same time
and select the certain one and draw by this function.
void Paint_SelectImage(UBYTE *image) Parameters:
image: The name of the image buffer, this is a pointer;
Rotate image: You need to set the rotation angle of the image, this function
should be used after Paint_SelectImage(). The angle can be 0, 90, 180, or 270.
void Paint_SetRotate(UWORD Rotate) Parameters:
Rotate: Rotate the angle of the image, the parameter can be ROTATE_0, R
OTATE_90, ROTATE_180, ROTATE_270.
Note After rotating, the place of the first pixel is different, we take a
1.54-inch
e-paper as an example.
Image mirror: This function is used to set the image mirror.
void Paint_SetMirroring(UBYTE mirror) Parameters:
mirror: Mirror type if the image, the parameter can be MIRROR_NONE, MIR
ROR_HORIZONTAL, MIRROR_VERTICAL, MIRROR_ORIGIN.
Set the position and color of pixels: This is the basic function of GUI, it is
used to set the position and color of a pixel in the buffer.
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) Parameters:
Xpoint: The X-axis value of the point in the image buffer Ypoint: The Y-axis
value of the point in the image buffer Color: The color of the point
Clear display: To set the color of the image, this function always be used to
clear the display.
void Paint_Clear(UWORD Color) Parameters:
Color: The color of the image
Color of the windows: This function is used to set the color of windows, it is always used for updating partial areas like displaying a clock.
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
UWO RD Color) Parameters:
Xpoint: The X-axis value of the start point in the image buffer Ypoint: The
Y-axis value of the start point in the image buffer Xend: The X-axis value of
the end point in the image buffer Yend: The Y-axis value of the end point in
the image buffer Color: The color of the windows
Draw point: Draw a point at the position X point, Y point of the image
buffer, you can configure the color, size, and style.
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pix
el, DOT_STYLE Dot_Style)
Parameters:
Xpoint: X-axis value of the point.
Ypoint: Y-axis value of the point.
Color: Color of the point
Dot_Pixel: Size of the point, 8 sizes are available.
typedef enum {
DOT_PIXEL_1X1 = 1, // 1 x 1
DOT_PIXEL_2X2 ,
// 2 X 2
DOT_PIXEL_3X3 ,
// 3 X 3
DOT_PIXEL_4X4 ,
// 4 X 4
DOT_PIXEL_5X5 ,
// 5 X 5
DOT_PIXEL_6X6 ,
// 6 X 6
DOT_PIXEL_7X7 ,
// 7 X 7
DOT_PIXEL_8X8 ,
// 8 X 8
} DOT_PIXEL;
Dot_Style: Style of the point, define the extended mode of the point.
typedef enum {
DOT_FILL_AROUND = 1,
DOT_FILL_RIGHTUP,
} DOT_STYLE;
Draw the line: Draw a line from (Xstart, Ystart) to (Xend, Yend) in the image buffer, you can configure the color, width, and style.
void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD C
olor, LINE_STYLE Line_Style , LINE_STYLE Line_Style)
Parameters:
Xstart: Xstart of the line
Ystart: Ystart of the line
Xend: Xend of the line
Yend: Yend of the line
Color: Color of the line
Line_width: Width of the line, 8 sizes are available.
typedef enum {
DOT_PIXEL_1X1 = 1, // 1 x 1
DOT_PIXEL_2X2 ,
// 2 X 2
DOT_PIXEL_3X3 ,
// 3 X 3
DOT_PIXEL_4X4 ,
// 4 X 4
DOT_PIXEL_5X5 ,
// 5 X 5
DOT_PIXEL_6X6 ,
// 6 X 6
DOT_PIXEL_7X7 ,
// 7 X 7
DOT_PIXEL_8X8 ,
// 8 X 8
} DOT_PIXEL;
Line_Style: Style of the line, Solid or Dotted.
typedef enum {
LINE_STYLE_SOLID = 0,
LINE_STYLE_DOTTED,
} LINE_STYLE;
Draw a rectangle: Draw a rectangle from (Xstart, Ystart) to (Xend, Yend), you can configure the color, width, and style.
void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UW
ORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
Parameters:
Xstart: Xstart of the rectangle.
Ystart: Ystart of the rectangle.
Xend: Xend of the rectangle.
Yend: Yend of the rectangle.
Color: Color of the rectangle
Line_width: The width of the edges. 8 sizes are available.
typedef enum {
DOT_PIXEL_1X1 = 1, // 1 x 1
DOT_PIXEL_2X2 ,
// 2 X 2
DOT_PIXEL_3X3 ,
// 3 X 3
DOT_PIXEL_4X4 ,
// 4 X 4
DOT_PIXEL_5X5 ,
// 5 X 5
DOT_PIXEL_6X6 ,
// 6 X 6
DOT_PIXEL_7X7 ,
// 7 X 7
DOT_PIXEL_8X8 ,
// 8 X 8
} DOT_PIXEL;
Draw_Fill: Style of the rectangle, empty or filled.
typedef enum {
DRAW_FILL_EMPTY = 0,
DRAW_FILL_FULL,
} DRAW_FILL;
Draw circle: Draw a circle in the image buffer, use (X_Center Y_Center) as the center and Radius as the radius. You can configure the color, width of the line, and the style of the circle.
void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Colo
r, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
Parameters:
X_Center: X-axis of center
Y_Center: Y-axis of center
Radius: Radius of circle
Color: Color of the circle
Line_width: The width of arc, 8 sizes are available.
typedef enum {
DOT_PIXEL_1X1 = 1, // 1 x 1
DOT_PIXEL_2X2 ,
// 2 X 2
DOT_PIXEL_3X3 ,
// 3 X 3
DOT_PIXEL_4X4 ,
// 4 X 4
DOT_PIXEL_5X5 ,
// 5 X 5
DOT_PIXEL_6X6 ,
// 6 X 6
DOT_PIXEL_7X7 ,
// 7 X 7
DOT_PIXEL_8X8 ,
// 8 X 8
} DOT_PIXEL;
Draw_Fill: Style of the circle: empty or filled.
typedef enum {
DRAW_FILL_EMPTY = 0,
DRAW_FILL_FULL,
} DRAW_FILL;
Show Ascii character: Show a character in (Xstart, Ystart) position, you can
configure the font, foreground, and background.
void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Ascii_Char, sFONT
F ont, UWORD Color_Foreground, UWORD Color_Background) Parameters:
Xstart: Xstart of the character Ystart: Ystart of the character Ascii_Char:
Ascii char Font: five fonts are avaialble
font8: 58 font12: 712 font16: 1116 font20: 1420 font24: 1724
Color_Foreground: foreground color Color_Background: background color
Draw the string: Draw the string at (Xstart Ystart), you can configure the
fonts, foreground, and the background
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char pString,
sFON T Font, UWORD Color_Foreground, UWORD Color_Background) Parameters:
Xstart: Xstart of the string Ystart: Ystart of the string pString: String
Font: five fonts are available:
font8: 58 font12: 712 font16: 1116 font20: 1420 font24: 17*24
Color_Foreground: foreground color Color_Background: background color
Draw Chinese string: Draw the Chinese string at (Xstart Ystart) of the image
buffer. You can configure fonts (GB2312), foreground, and background.
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char pString,
cFON T font, UWORD Color_Foreground, UWORD Color_Background) Parameters:
Xstart: Xstart of string Ystart: Ystart of string pString: string Font: GB2312
fonts, two fonts are available
font12CN: ascii 1121Chinese 1621 font24CN: ascii 2441Chinese 3241
Color_Foreground: Foreground color Color_Background: Background color
Draw number: Draw numbers at (Xstart Ystart) of the image buffer. You can
select font, foreground, and background.
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT Font,
UW ORD Color_Foreground, UWORD Color_Background) Parameters:
Xstart: Xstart of numbers Ystart: Ystart of numbers Nummber: numbers
displayed. It supports int type and 2147483647 is the maximum supported Font:
Ascii fonts, five fonts are available:
font8: 58 font12: 712 font16: 1116 font20: 1420 font24: 1724
Color_Foreground: foreground Color_Background: background
Display time: Display time at (Xstart Ystart) of the image buffer, you can
configure fonts, foreground, and background.
This function is used for partial updating. Note that some of the e-Paper
don’t
support partial updates and you cannot use partial updates all the time, which
will have ghosts problems and destroy the display.
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME pTime, sFONT
Font, UWORD Color_Background, UWORD Color_Foreground) Parameters:
Xstart: Xstart of time Ystart: Ystart of time pTime: Structure of time Font:
Ascii font, five fonts are available
font8: 58 font12: 712 font16: 1116 font20: 1420 font24: 17*24
Color_Foreground: foreground Color_Background: background
Resource
Document Schematic 2.9inch e-Paper (B) Specification
Demo codes
Demo codes Github link
Development Software
Thonny Python IDE (Windows V3.3.3) Zimo221.7z Image2Lcd.7z
Pico Quick Start Download Firmware
MicroPython Firmware Download C_Blink Firmware Download Video Tutorial
[Expand] [Expand]
Pico Tutorial I – Basic Introduction
Pico Tutorial II – GPIO
Pico Tutorial III – PWM
Pico Tutorial IV – ADC
Pico Tutorial V – UART
Pico Tutorial VI – To be continued…
MicroPython Series
MicroPython machine.Pin Function MicroPython machine.PWM Function MicroPython
machine.ADC Function MicroPython machine.UART Function MicroPython machine.I2C
Function MicroPython machine.SPI Function MicroPython rp2.StateMachine
[Expand] [Expand] [Expand] [Expand] [Expand]
C/C++ Series
C/C++ Windows Tutorial 1 – Environment Setting C/C++ Windows Tutorial 1 –
Create New Project
Arduino IDE Series Install Arduino IDE 1. Download the Arduino IDE installation package from Arduino website .
2. Just click on “JUST DOWNLOAD”.
3. Click to install after downloading.
4. Note: You will be prompted to install the driver during the installation
process, we can click Install.
Install Arduino-Pico Core on Arduino IDE 1. Open Arduino IDE, click the File
on the left corner and choose “Preferences”.
2. Add the following link in the additional development board manager URL,
then click OK. https://github.com/earlephilhower/arduino-
pico/releases/download/globa l/package_rp2040_index.json
Note: If you already have the ESP8266 board URL, you can separate the URLs
with commas like this:
https://dl.espressif.com/dl/package_esp32_index.json,https://github.co
m/earlephilhower/arduino-pico/releases/download/global/packagerp2040
index.json 3. Click on Tools -> Dev Board -> Dev Board Manager -> Search for
pico, it shows installed since my computer has already installed it.
Upload Demo At the First Time
1. Press and hold the BOOTSET button on the Pico board, connect the Pico to
the USB port of the computer via the Micro USB cable, and release the button
when the computer recognizes a removable hard drive (RPI-RP2).
2. Download the demo, open arduinoPWMD1-LED path under the D1LED.ino.
3. Click Tools -> Port, remember the existing COM, do not need to click this
COM (different computers show different COM, remember the existing COM on your
computer).
4. Connect the driver board to the computer with a USB cable, then click Tools -> Ports, select uf2 Board for the first connection, and after the upload is complete, connecting again will result in an additional COM port.
5. Click Tool -> Dev Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.
6. After setting, click the right arrow to upload.
If you encounter problems during the period, you need to reinstall or replace
the Arduino IDE version, uninstall the Arduino IDE needs to be uninstalled
cleanly, after uninstalling the software you need to manually delete all the
contents of the folder C:Users [name]AppDataLocalArduino15 (you need to show
the hidden files in order to see it) and then reinstall. Pico-W Series
Tutorial (To be continued…)
Open Source Demo
MicroPython Demo (GitHub) MicroPython Firmware/Blink Demo (C) Official
Raspberry Pi C/C++ Demo Official Raspberry Pi MicroPython Demo Arduino
Official C/C++ Demo
FAQ
Question:What is the usage environment of the e-ink screen? Answer:
Operating conditions Temperature range: 0~50°C; Humidity range:
35%~65%RH.
Storage conditions Temperature range: below 30°C; Humidity range:
below 55%RH; Maximum storage time: 6 months.
Transport conditions Temperature range: -25~70°C; Maximum
transportation time: 10 days.
After unpacking Temperature range: 20°C±5°C; Humidity range:
50±5%RH; Maximum storage time: Assemble within 72 hours.
Question:Precautions for e-ink screen refresh? Answer:
Refresh mode Full refresh: The electronic ink screen will flicker several
times during the refresh process (the number of flickers depends on the
refresh time), and the flicker is to remove the afterimage to achieve the best
display effect. Partial refresh: The electronic ink screen has no flickering
effect during the refresh process. Users who use the partial brushing function
note that after refreshing several times, a full brush operation should be
performed to remove the residual image, otherwise the residual image problem
will become more and more serious, or even damage the screen (currently only
some black and white e-ink screens support partial brushing, please refer to
product page description).
Refresh rate During use, it is recommended that customers set the refresh
interval of the e-ink screen to at least 180 seconds (except for products that
support the local brush function) During the standby process (that is, after
the refresh operation), it is recommended that the customer set the e-ink
screen to sleep mode, or power off operation (the power supply part of the ink
screen can be disconnected with an analog switch) to reduce power consumption
and prolong the life of the e-ink screen. (If some e-ink screens are powered
on for a long time, the screen will be damaged beyond repair.) During the use
of the three-color e-ink screen, it is recommended that customers update the
display screen at least once every 24 hours (if the screen remains the same
screen for a long time, the screen burn will be difficult to repair).
Usage scenarios The e-ink screen is recommended for indoor use. If you use it
outdoors, you need to avoid direct sunlight on the e-ink screen and take UV
protection measures at the same time. When designing eink screen products,
customers should pay attention to determining whether the use environment
meets the temperature and humidity requirements of the e-ink screen.
Question:Chinese cannot be displayed on the e-ink screen? Answer: The Chinese
character library of our routine uses the GB2312 encoding method, please
change your xxx_test.c file to GB2312 encoding format, compile and download
it, and then it can be displayed normally.
Question:After using for a period of time, the screen refresh (full refresh)
has a serious afterimage problem that cannot be repaired? Answer: Power on the
development board for a long time, after each refresh operation, it is
recommended to set the screen to sleep mode or directly power off processing,
otherwise, the screen may burn out when the screen is in a high voltage state
for a long time.
Question: e-Paper shows black border? Answer: The border display color can be
set through the Border Waveform Control register or the VCOM AND DATA INTERVAL
SETTING register.
Question: What is the specification of the screen cable interface? Answer:
0.5mm pitch, 24Pin.
In this case, the customer needs to reduce the position of the round brush and
clear the screen after 5 rounds of brushing (increasing the voltage of VCOM
can improve the color, but it will increase the afterimage).
Question: After the ink screen enters deep sleep mode, can it be refreshed
again? Answer: Yes, but you need to re-initialize the electronic paper with
software.
Question:When the 2.9-inch EPD is in deep sleep mode, the first time it wakes
up, the screen refresh will be unclean. How can I solve it? Answer: The
process of re-awakening the e-ink screen is actually the process of repowering
on, so when the EPD wakes up, the screen must be cleared first, so as to avoid
the afterimage phenomenon to the greatest extent.
Question: Are bare screen products shipped with a surface coating? Answer:
with film.
Question: Does e-Paper have a built-in temperature sensor? Answer: Yes, you
can also use the IIC pin external LM75 temperature sensor.
Question:When testing the program, the program keeps stuck on an e-Paper busy?
Answer: It may be caused by the unsuccessful spi driver 1. Check whether the
wiring is correct 2. Check whether the spi is turned on and whether the
parameters are configured correctly (spi baud rate, spi mode, and other
parameters).
Question: What is the refresh rate/lifetime of this e-ink screen? Answer:
Ideally, with normal use, it can be refreshed 1,000,000 times (1 million
times).
Support
Technical Support
If you need technical support or have any feedback/review, please click the
Submit Now button to submit a ticket, Our support team will check and reply to
you within 1 to 2 working days. Please be patient as we make every effort to
help you to resolve the issue. Working Time: 9 AM – 6 AM GMT+8 (Monday to
Friday)
Submit Now
References
Read User Manual Online (PDF format)
Read User Manual Online (PDF format) >>