Pico e-Paper 4.2 B

From Waveshare Wiki
Revision as of 07:19, 1 September 2023 by Waveshare-admin (talk | contribs) (Text replacement - "https://www.waveshare.com/w/upload/" to "https://files.waveshare.com/upload/")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Pico e-Paper 4.2 B
Pico e-Paper 4.2 B

4.2inch EPD Module for Raspberry Pi Pico,
400 × 300, Black / White / Red, SPI
{{{name2}}}

{{{name3}}}

{{{name4}}}

{{{name5}}}

Overview

This is a 4.2inch e-Paper display module for Raspberry Pi Pico, 400 x 300 pixels, supports red, black, white colors. SPI interface.

Features

  • No backlight, keeps displaying last content for a long time even when power down.
  • Ultra-low power consumption, basically power is only required for refreshing.
  • SPI interface, requires minimal IO pins.
  • Onboard voltage translator, compatible with 3.3V / 5V MCUs.
  • 2 x user buttons for easy interaction.

Specification

  • Size: 4.2 inch
  • Outline dimensions (bare screen): 90.1mm × 77.0mm × 1.18mm
  • Outline dimensions (driver board): 93.5mm × 78.5mm
  • Display size: 84.8mm x 63.6mm
  • Operating voltage: 3.3V/5V
  • Communication interface: SPI
  • Pitch: 0.212 x 0.212
  • Resolution: 400 x 300
  • Display color: Red, Black, white
  • Greyscale: 2
  • Full refresh: 15s
  • Refreshing power: 38.4mW(typ.)
  • Sleep current: <0.01uA (almost 0)

Note: Refresh time: refresh time for the experimental test data, the actual refresh time will be inaccurate, subject to the actual effect. The global refresh process will have a flickering effect, this is a normal phenomenon.
Power consumption: power consumption data for the experimental test data, the actual power consumption due to the existence of the driver board, and the actual use of different circumstances, there will be a certain error, subject to the actual effect.

SPI Timing

1.54inch-e-paper-manual-1.png
Note: Different from the traditional SPI protocol, the data line from the slave to the master is hidden since the device only has a display requirement.

  • CS is a slave chip select, when CS is low, the chip is enabled.
  • DC is data/command control pin, when DC = 0, write command, when DC = 1, write data.
  • SCLK is the SPI communication clock.
  • SDIN is the data line from the master to the slave in SPI communication.
  • Timing: CPHL=0, CPOL=0 (SPI0)

【Note】: for more details about SPI communication, you can search on the Internet.

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 suspending 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
Black:■:Bit 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:

E-paper hardware work 1.png
For computer, the data is saved in MSB format:
E-paper hardware work 2.png
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 the black and white picture, another is the red and white picture. When transmitting, because one register controls a black or white pixel, one controls 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 use 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.

2.13inch-epPaer-B-pixels.png

If you define that the data of white pixel is 1 and the black is 0, then we can get:

2.13inch-epPaer-B-pixels-2.png

So that we can use 1 byte to control every eight pixels.

2.13inch-epPaer-B-pixels-3.png

Pinout

Pico-ePaper-4.2-details-inter.jpg

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.
Pico-ePaper-connect020.jpg

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).

E-paper for Pico use 1.png

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_Code\c\lib\Config.

  • 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_Code\c\lib\e-Paper
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 update
//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 e-Paper (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_DisplayPart()
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 e-Paper 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_JetsonNano\c\lib\GUI\GUI_Paint.c(.h).
E-paper Driver HAT GUI.png
The fonts used can be found in the directory: RaspberryPi_JetsonNano\c\lib\Fonts.
E-paper Driver HAT Fonts.png

  • 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, UWORD 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, ROTATE_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.
SPI-epaper-C-0.png SPI-epaper-C-90.png SPI-epaper-C-180.pngSPI-epaper-C-270.png
  • 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, MIRROR_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, UWORD 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_Pixel, 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 Color, 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, UWORD 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 Color, 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* Font, 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: 5*8
 	 	font12: 7*12
 	 	font16: 11*16
 	 	font20: 14*20
 	 	font24: 17*24
 	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, sFONT* 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: 5*8
 	 	font12: 7*12
 	 	font16: 11*16
 	 	font20: 14*20
 	 	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, cFONT* 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 11*21,Chinese 16*21
 	 	font24CN: ascii 24*41,Chinese 32*41
 	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, UWORD 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: 5*8
 	 	font12: 7*12
 	 	font16: 11*16
 	 	font20: 14*20
 	 	font24: 17*24
 	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: 5*8
 	 	font12: 7*12
 	 	font16: 11*16
 	 	font20: 14*20
 	 	font24: 17*24
 	Color_Foreground: foreground
 	Color_Background: background

Resource

Document

Demo codes

Development Software

Pico Quick Start

Download Firmware

  • MicroPython Firmware Download

MicroPython Firmware Download.gif

  • C_Blink Firmware Download

C Blink Download.gif

Video Tutorial

  • 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

C/C++ Series

Arduino IDE Series

Install Arduino IDE

  1. Download the Arduino IDE installation package from Arduino website.
    RoArm-M1 Tutorial II01.jpg
  2. Just click on "JUST DOWNLOAD".
    Arduino IDE Pico.png
  3. Click to install after downloading.
    RoArm-M1 Tutorial II02.gif
  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".
    RoArm-M1 Tutorial04.jpg
  2. Add the following link in the additional development board manager URL, then click OK.
    https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

    RoArm-M1 Tutorial II05.jpg
    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.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
    
  3. Click on Tools -> Dev Board -> Dev Board Manager -> Search for pico, it shows installed since my computer has already installed it.
    Pico Get Start 05.png
    Pico Get Start 06.png

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).
    Pico Get Start.gif
  2. Download the demo, open arduino\PWM\D1-LED path under the D1-LED.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).
    UGV1 doenload02EN.png
  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.
    UGV1 doenload03EN.png
  5. Click Tool -> Dev Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.
    Pico Get Start02.png
  6. After setting, click the right arrow to upload.
    Pico Get Start03.png
    • 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]\AppData\Local\Arduino15 (you need to show the hidden files in order to see it) and then reinstall.


Open Source Demo

FAQ

Question about Software

 Answer:
*Our demo uses stm32f103zet6. If the customer modifies other models in MDK, such as stm32f103rbt6, the ram space becomes smaller, and the stack size and heap size in the startup file need to be modified on the original basis.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
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).
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The process of re-awakening the e-ink screen is actually the process of re-powering. Therefore, when the EPD wakes up, the screen must be cleared first, so as to avoid the afterimage phenomenon to the greatest extent.

{{{5}}}


 Answer:
*It may be caused by the unsuccessful spi driver.

1. First 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).

{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The full refresh initialization function needs to be added when the ink screen is switched from partial refresh to full refresh.

{{{5}}}


 Answer:
It may be a demo based on the BCM2835 library that has run the C language before. At this time, you need to restart the Raspberry Pi and then run the Python demo.

{{{5}}}


 Answer:
*Install the imaging library using the command sudo apt-get install python-imaging
{{{3}}}
{{{4}}}

{{{5}}}


Question about Hardware

 Answer:
Yes, now there is a level conversion chip onboard, supporting a 5V drive.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
  • The rated input voltage of the ink screen is 2.3~3.6V. If it is a 5V system, level conversion is required. In addition, the voltage should not be lower than 2.5V, so as not to affect the display effect of the e-paper screen.
  • Device selection can use the model in the schematic diagram we provide or choose according to the data sheet.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Yes, pay attention to the correct timing.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
  • Check if SPI communication is normal.
  • Confirm whether the BUSY pin is normally initialized to input mode.
  • It may be that there is no normal reset, try to shorten the duration of the low level during reset (because the power-off switch is added to the drive circuit, the reset low level is too long, which will cause the drive board to power off and cause the reset to fail).
  • If the busy function sends the 0x71 command, you can try to comment it out.
{{{3}}}
{{{4}}}

{{{5}}}



 Answer:
Cable socket 0.5-24pin rear-flip 2.0H (FPC connector).

{{{5}}}


Question about Screen

 Answer:
  • 【Working 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.
  • 【Transportation 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.
{{{3}}}
{{{4}}}

{{{5}}}


 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.
    • Bureau brush: 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 (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).
  • Application
    • The e-ink screen is recommended for indoor use. If it is used outdoors, it is necessary to avoid direct sunlight on the e-ink screen, and at the same time, take UV protection measures, because charged particles will dry out under strong light for a long time, resulting in loss of activity and failure to refresh. This situation is irreversible. When designing e-ink screen products, customers should pay attention to determining whether the use environment meets the requirements of the e-paper screen.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Ideally, with normal use, it can be refreshed 1,000,000 times (1 million times).
{{{3}}}
{{{4}}}

{{{5}}}


 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.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Yes, but you need to re-initialize the electronic paper with software.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Maybe the SPI rate is too high, resulting in data loss, try to reduce the SPI rate.

Insufficient or unstable power supply leads to data loss.
The data cable is too long to cause data loss, the extension cable should not exceed 20cm.

{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The display gray scale of electrophoretic electronic paper is determined by the spatial position of the particles in the Microcapsule or Microcup. The electrophoresis phenomenon occurs between black particles and white particles under the action of voltage. This voltage sequence that promotes the electrophoretic movement of the particles is the driving force of the electronic paper. waveform. The driving waveform is the core part of the electronic paper display, and the optimization of the driving waveform will directly affect the display effect of the display. The driving waveform file is used to describe the parameters formed by the voltage sequence that promotes the electrophoretic movement of the particles, and it needs to be called regularly when the electronic paper is refreshed.

Different batches of e-paper diaphragms and electrophoretic matrices require different voltage values ​​when driving the display due to materials, manufacturing processes, etc. The waveform of the e-ink screen is reflected in the relationship between grayscale, voltage, and temperature. Generally speaking, after each batch of electrophoresis matrix is ​​generated, there will be a corresponding waveform file in the form of a .wbf file. The film manufacturer will provide the waveform file and electrophoresis matrix to the manufacturer of the electronic paper screen, and then the manufacturer of the electronic paper screen integrates the protection board, substrate, and driver and then provides it to customers; if the waveform file does not correspond to the screen, it is likely that the display cannot be displayed or the display effect is unsatisfactory. Generally, the waveform file has OTP built into the driver IC of the ink screen when leaving the factory, and some programs we provide also call external waveform files to drive the e-ink screen.

{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
LUT is the abbreviation of LOOK UP TABLE, and OTP is the abbreviation of ONE TIME PROGRAM. The original intention of LUT is to load waveform files, and the waveform files are divided into OTP and REGISTER. Among them, OTP is the built-in waveform storage method, and REGISTER is the external waveform storage method.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
with film.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
At present, all screens have built-in temperature sensors, and you can also use an external LM75 temperature sensor with IIC pins.
{{{3}}}
{{{4}}}

{{{5}}}


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)