Difference between revisions of "4.2inch e-Paper Module (B)"

From Waveshare Wiki
Jump to: navigation, search
(Demo code)
Line 15: Line 15:
 
{{Product List|OLEDs / LCDs/e-Paper}}
 
{{Product List|OLEDs / LCDs/e-Paper}}
 
}}
 
}}
== Introduction ==
+
<div class="tabber">
 +
<div class="tabbertab" title="Introduction">
 +
= Introduction =
 
{{E-Paper Raw Panel}}
 
{{E-Paper Raw Panel}}
  
Line 22: Line 24:
 
{{Amazon|{{#urlget:amazon|default}}=display
 
{{Amazon|{{#urlget:amazon|default}}=display
 
|More = [http://www.waveshare.com/product/4.2inch-e-paper-module-b.htm More]}}
 
|More = [http://www.waveshare.com/product/4.2inch-e-paper-module-b.htm More]}}
<!--
+
 
== Interfaces ==
+
= Interfaces =
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
Line 42: Line 44:
 
| BUSY || Busy state output pin (Low for busy)
 
| BUSY || Busy state output pin (Low for busy)
 
|}
 
|}
== Working principle ==
+
= Working principle =
=== Introduction ===
+
; Introduction  
 +
----
 
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 display patterns by reflecting the ambient light, so it has no background light requirement. Under sunshine, the E-paper screen still has high visibility with a wide viewing angle of 180 degree. It is the ideal choice for E-reading.  
 
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 display patterns by reflecting the ambient light, so it has no background light requirement. Under sunshine, the E-paper screen still has high visibility with a wide viewing angle of 180 degree. It is the ideal choice for E-reading.  
=== Communication protocol ===
+
;Communication protocol
[[File:1.54inch-e-paper-manual-1.png|400px|thumb|SPI timing]]
+
----
 +
[[File:1.54inch-e-paper-manual-1.png|400px]]
 +
 
 
Note: Different from the traditional SPI protocol, the data line from the slave to the master is hidden since the device only has display requirement.  
 
Note: Different from the traditional SPI protocol, the data line from the slave to the master is hidden since the device only has display requirement.  
 
* CS is slave chip select, when CS is low, the chip is enabled.
 
* CS is slave chip select, when CS is low, the chip is enabled.
Line 57: Line 62:
 
* There are 4 SPI communication modes. SPI0 is commonly used, in which CPHL = 0, CPOL = 0.
 
* There are 4 SPI communication modes. SPI0 is commonly used, in which CPHL = 0, CPOL = 0.
 
As you can see from the figure above, data transmission starts at the first falling edge of SCLK, and 8 bits of data are transferred in one clock cycle. In here, SPI0 is in used, and data is transferred by bits, MSB first.
 
As you can see from the figure above, data transmission starts at the first falling edge of SCLK, and 8 bits of data are transferred in one clock cycle. In here, SPI0 is in used, and data is transferred by bits, MSB first.
 
+
</div>
== How to use ==
+
<!--
=== Working with Raspberry Pi ===
+
==== Installing libraries required ====
+
If you want to connect your E-paper screen to Raspberry Pi, you should install some necessary libraries, or else the [[:File:4.2inch-e-paper-module-b-code.7z|Demo (click to download)]] below may work improperly. For more information about how to install the Raspberry Pi libraries, please visit the website: [[Pioneer600#Libraries_Installation_for_RPi|Libraries Installation for RPi]].
+
 
+
You can find the detailed presentation about the installations of libraries wiringPi, bcm2835 and python.
+
==== Hardware connection ====
+
Here is the connection between Raspberry Pi 3B and E-paper.
+
{|class="wikitable"
+
|-
+
! e-Paper !! Raspberry Pi 3B
+
|-
+
| 3.3V || 3.3V
+
|-
+
| GND || GND
+
|-
+
| DIN || MOSI
+
|-
+
| CLK || SCLK
+
|-
+
| CS || CE0
+
|-
+
| DC || Pin22/GPIO25
+
|-
+
| RST || Pin11/GPIO17
+
|-
+
| BUSY || Pin18/GPIO24
+
|}
+
 
+
==== Expected result ====
+
1) After the corresponding libraries installed, you can copy the relative programs into your Raspberry Pi, and then enter the corresponding file.
+
* '''BCM2835:''' Execute the command: <code>make</code>, to compile the code and generate a file <code>epd</code>. Execute the command: <code>sudo ./epd</code>, the program will run.
+
* '''WringPi:''' Execute the command: <code>make</code>, to compile the code and generate a file <code>epd</code>. Execute the command: <code>sudo ./epd</code>, the program will run.
+
* '''Python:''' Execute the command: <code>sudo python main.py</code>
+
2) Image will be displayed on the screen.
+
* Note: The refresh rate of this module is slow, and it will flicker for several times during refreshing (about 15s). Please be patient.
+
=== Working with Arduino ===
+
==== Hardware connection ====
+
{|class="wikitable"
+
|-
+
! e-Paper !! UNO PLUS (3.3V)
+
|-
+
| 3.3V || 3V3
+
|-
+
| GND || GND
+
|-
+
| DIN || D11
+
|-
+
| CLK || D13
+
|-
+
| CS || D10
+
|-
+
| DC || D9
+
|-
+
| RST || D8
+
|-
+
| BUSY || D7
+
|}
+
 
+
==== Expected result ====
+
# Copy the libraries file of Arduino demo code to the libraries folder which is under the installation directory of Arduino IDE, it usually is C:\users\username\documents\arduino\libraries. You can also designate the location on Arduino IDE-> File ->Preferences ->Sketchbook location
+
# Upload the project.
+
# E-paper will display the image.
+
Note:
+
* Note: The refresh rate of this module is slow, and it will flicker for several times during refreshing (about 15s). Please be patient.
+
=== Working with the STM32 development board ===
+
* Here we use STM32F103ZE development board.
+
* The demo code is based on HAL, so you can port the demo code to other STM board with STM32CubeMX.
+
* The demo code can be compiled successfully in Keil v5
+
==== Hardware connection ====
+
Connecting to the STM32F103ZE:
+
{|class="wikitable"
+
|-
+
! e-Paper !! STM32F103ZE
+
|-
+
| 3.3V || 3V3
+
|-
+
| GND || GND
+
|-
+
| DIN || PA7 (MOSI)
+
|-
+
| CLK || PA5 (SCK)
+
|-
+
| CS || PA4
+
|-
+
| DC || PA2
+
|-
+
| RST || PA1
+
|-
+
| BUSY || PA3
+
|}
+
 
+
==== Expected result ====
+
# Open the project (epd-demo.uvprojx), which is under the MDK-ARM directory.
+
# Click Build to compile the project.
+
# Click Download to load the code to your board.
+
* Reset, the screen will display image.
+
*: Note: The refresh rate of this module is slow, and it will flicker for several times during refreshing (about 15s). Please be patient.
+
== Code analysis ==
+
Here, we will analyze the driving code and take the demos for Raspberry Pi based on WiringPi library as examples.
+
=== Hardware interface function ===
+
The functions of drive code like DigitalWrite, DigitalRead, SendCommand, SenData and DelayMs call the interface functions which are provided by hardware device (epdif.h, epdif.c, epdif.cpp) to respectively implements the functions that Control IO Level, Read IO Level, Send SPI Command, Send SPI Data and Delay For Millisecond. If you want to port the demo code, you need to implement all the interfaces of epdif (e-paper display interface) according to the corresponding hardware device.
+
 
+
Note that Raspberry Pi uses hardware chip select while transmitting SPI data. So we needn’t set the CS pin to LOW before transmitting data, and the code will set it automatically while transmitting. However, for Arduino and STM32, etc. you need to explicitly set the CS pin to LOW with codes to start the SPI transmission of module.
+
=== Send Commands and Data (SendCommand and SendData) ===
+
SendCommand and SendData are used to send commands and data to module respectively. What the difference between them is that, D/C pin is set to LOW for sending commands and HIGH for sending data. If the D/C pin is LOW, the data transmitted from SPI interface to module will be recognized as commands and executed. If the D/C pin is HIGH, the data will be recognized as normal data. Generally, normal data will follow the command, works as parameter or image data.
+
=== Reset (Reset) ===
+
Module will reset if RST pin is LOW. It is used to restart the module after powered on or awakened. After restarting, you need to initialize module with initialization function (Init) for working properly.
+
 
+
=== Initialization (Init) ===
+
After powering on the module, initialization function (Init) will configure the parameters of module. It can also wake up module from sleep mode. Process of initialization: reset -> booster soft start -> power on -> panel setting.
+
=== Configuration of LUT table(SetLut) ===
+
Look-up table is stored in the module, which is provided by us. So the table may be different among different batches. If the table changed, we will update the demo code as soon as possible.
+
 
=== Display a Frame (DisplayFrame) ===
 
=== Display a Frame (DisplayFrame) ===
 
DisplayFrame is used to send a frame to module, and the screen will refresh and display it.
 
DisplayFrame is used to send a frame to module, and the screen will refresh and display it.
Line 187: Line 80:
 
* This module doesn’t support partial refresh.
 
* This module doesn’t support partial refresh.
 
* The refresh rate of this module is slow, and it will flicker for several times during refreshing (about 15s). Please be patient.
 
* The refresh rate of this module is slow, and it will flicker for several times during refreshing (about 15s). Please be patient.
=== Sleep mode (Sleep) ===
 
Sleep can make the module go into sleep mode to reduce the consumption.
 
 
Process: VCOM and data interval setting -> power off -> deep sleep
 
 
If you want to wake up the module from sleep mode, you need to give a LOW pulse to RST pin. Then maybe you need to reconfigure the parameter of power (According to the batches, some of them need to reconfigure, some needn’t). So if you want to wake up module, you had better use the Init function instead of Reset. Reset function and relative commands will be executed while executing the Init function.
 
=== How to display an image ===
 
There are two ways to display pictures. One is display directly and other is indirectly.
 
 
Display directly: Read the data of pictures with library functions, and decode. Then convert it to arrays and send to module. About how to implement it, you can refer to the python examples of Raspberry Pi. (The C demo doesn’t display pictures directly)
 
 
Display indirectly: Converting pictures to relative arrays on PC and save as c file. Then you can use the c file on your project. This chapter we will talk about how to convert a picture to array.
 
 
# Open a picture with drawing tool comes with Windows system, create a new image, and set the pixel to 400x300.
 
# Because this module can only display two gray level (Only black and white), we need to convert picture to monochrome bitmap before converting it to array. That is, File -> BMP picture -> Monochrome Bitmap.
 
#: There are two monochrome bitmap on examples pack, which are used for demonstration (raspberrypi/python/black.bmp and raspberrypi/python/red.bmp).
 
# Use [[:File:Image2Lcd.7z|Image2Lcd.exe]] software to generate corresponding array for picture (.c file). Open picture with this software, set the parameters:
 
#* Output data type: C language array
 
#* Scanning mode: vertical scanning
 
#* Output gray: single color (gray level of two)
 
#* Maximum width and height: 400 and 300
 
#* Include the data of Image Header: Don’t check
 
#* Inverse color: Check (Check: the white on image will be inversed to 1, and black is inversed to 0)
 
# Click “Save”, to generate .c file. Copy the corresponding array into your project, and you can display picture by calling this array.
 
 
-->
 
-->
 
+
<div class="tabbertab" title="Resources">
 
== Resources ==
 
== Resources ==
=== Documentation ===
+
= Documentation =
 
*[https://www.waveshare.com/w/upload/2/20/4.2inch-e-paper-module-b-user-manual-en.pdf User Manual]
 
*[https://www.waveshare.com/w/upload/2/20/4.2inch-e-paper-module-b-user-manual-en.pdf User Manual]
 
{{Commom Instruction of SPI e-paper}}
 
{{Commom Instruction of SPI e-paper}}
 
* [[:File:4.2inch_e-Paper_Schematic.pdf|Schematic]]
 
* [[:File:4.2inch_e-Paper_Schematic.pdf|Schematic]]
  
=== Demo code ===
+
= Demo code =
 
* [[:File:4.2inch-e-paper-module-b-code.7z|Demo code]]
 
* [[:File:4.2inch-e-paper-module-b-code.7z|Demo code]]
 
*[https://github.com/waveshare/e-Paper Github]
 
*[https://github.com/waveshare/e-Paper Github]
  
=== Datasheets ===
+
= Datasheets =
 
* [[:File:4.2inch-e-paper-b-specification.pdf|Datasheets]]
 
* [[:File:4.2inch-e-paper-b-specification.pdf|Datasheets]]
===Related Resources===
+
 
 +
=Related Resources=
 
This is a post in Arduino Form about our SPI e-Paper thanks to ZinggJM, maybe you want to refer to.
 
This is a post in Arduino Form about our SPI e-Paper thanks to ZinggJM, maybe you want to refer to.
 
*[https://forum.arduino.cc/index.php?topic=487007.0 Waveshare e-Paper display with SPI]
 
*[https://forum.arduino.cc/index.php?topic=487007.0 Waveshare e-Paper display with SPI]
 
+
</div>
 +
<div class="tabbertab" title="FAQ">
 
== FAQ ==
 
== FAQ ==
 
<!--{{e-Paper FAQ}}-->
 
<!--{{e-Paper FAQ}}-->
 
{{e-Paper FAQ}}
 
{{e-Paper FAQ}}
 
+
</div>
 +
</div>
 
==Support==
 
==Support==
 
{{Service00}}
 
{{Service00}}

Revision as of 02:57, 11 September 2019

4.2inch e-Paper (B)
lik=https://www.waveshare.com/4.2inch-e-Paper-B.htm

400x300, 4.2inch E-Ink display raw panel
4.2inch e-Paper Module (B)
4.2inch-e-paper-module-b-3.jpg

400x300, 4.2inch E-Ink display module, three-color, SPI interface
{{{name3}}}

{{{name4}}}

{{{name5}}}

Primary Attribute
Category: OLEDs / LCDs, LCD
{{{userDefinedInfo}}}: {{{userdefinedvalue}}}
Brand: Waveshare
Website
English: Waveshare website
Chinese: 官方中文站点
Onboard Interfaces
SPI
Related Products

Introduction

Note: The raw panel require a driver board, If you are the first time use this e-Paper, we recommend you to buy the HAT version or buy more one driver hat for easy use, otherwise you need to make the driver board yourself. And this instruction is based on the version with PCB or driver board.

400x300, 4.2inch E-Ink display module, three-color, SPI interface

More

Interfaces

VCC 3.3V
GND GND
DIN SPI MOSI
CLK SPI SCK
CS SPI chip select (Low active)
DC Data/Command control pin (High for data, and low for command)
RST External reset pin (Low for reset)
BUSY Busy state output pin (Low for busy)

Working principle

Introduction

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 display patterns by reflecting the ambient light, so it has no background light requirement. Under sunshine, the E-paper screen still has high visibility with a wide viewing angle of 180 degree. It is the ideal choice for E-reading.

Communication protocol

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 display requirement.

  • CS is 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.

SPI communication has data transfer timing, which is combined by CPHA and CPOL.

  1. CPOL determines the level of the serial synchronous clock at idle state. When CPOL = 0, the level is Low. However, CPOL has little effect to the transmission.
  2. CPHA determines whether data is collected at the first clock edge or at the second clock edge of serial synchronous clock; when CPHL = 0, data is collected at the first clock edge.
  • There are 4 SPI communication modes. SPI0 is commonly used, in which CPHL = 0, CPOL = 0.

As you can see from the figure above, data transmission starts at the first falling edge of SCLK, and 8 bits of data are transferred in one clock cycle. In here, SPI0 is in used, and data is transferred by bits, MSB first.

Resources

Documentation

Demo code

Datasheets

Related Resources

This is a post in Arduino Form about our SPI e-Paper thanks to ZinggJM, maybe you want to refer to.

FAQ

Question:
Working requirements of e-Paper?
Answer:
  • Two-color B/W e-paper
    • 【Working】Temperature: 0~50°C; Humidity: 35%~65%RH
    • 【Storage】Temperature: ≤30°C; Humidity: ≤55%RH; Max storage time: 6 months
    • 【Transport】Temperature: -25~70°C; Max transport time: 10 days
    • 【Unpack】Temperature: 20°C±5°C; Humidity: 50%RH±5%RH; Max storage time: Should be assembled in 72h
  • Three-Color e-Paper
    • 【Working】Temperature: 0~40°C; Humidity: 35%~65%RH
    • 【Storage】Temperature: ≤30°C; Humidity: ≤55%RH; Max storage time: 3 months
    • 【Transport】Temperature: -25~60°C; Max transport time: 10 days
    • 【Unpack】Temperature: 20°C±5°C; Humidity: 50%RH±5%RH; Max storage time: Should be assembled in 72h

When store three-color e-Paper, please refresh it to white, and keep the screen upward. Note that you need to update it at least every three months.


Question:
What do you need to note about e-Paper refreshing?
Answer:
  • Refresh mode
    • Full refresh: e-Paper flicker when full refreshing to remove ghost image for best display.
    • Partial refresh: It don't flicker if you use partial refresh (only some of the two-color e-paper support partial refresh). Note that you cannot use Partial refresh all the time, you should full refresh e-paper regularly, otherwise, ghost problem will get worse even damage.
  • Refresh rate
    • When using, you should set the update interval at least 180s.(except Partial supportable types)
    • Please set the e-Paper to sleep mode or power off it directly, otherwise, the e-Paper is damaged because of working in high voltage for long time.
    • You need to update the content of three-color e-Paper at least one time every 24h to avoid from burn-in problem.
  • Working place
  • We recommend you to use the e-Paper indoor. If you need to set the e-paper outdoor, Please place the e-paper in shadow and protect it from UV. When you designed you e-paper product, you should take care about the working situation like temperature, humidity, etc.


Question:
How much could the flexible e-paper be bended
Answer:
  • The IC part of e-Paper cannot be bended, you can bend the display area in degree larger than 60°C


Question:
Why the e-Paper cant work with Arduino?
Answer:

The I/O level of Arduino is 5V, and the e-Paper should be driven with 3V3. If your Arduino cant drive the e-Paper successfully, please try to convert the level to 3.3V

You can also try to connect the Vcc pin to the 5V of Arduino to see whether the e-Paper works, but we recommend you not to use 5V for a long time.


Question:
Why does the color of e-Paper look a little black or grey?
Answer:

You can try to change the value of Vcom on demo codes.


Question:
Three-color e-paper looks more red/yellow than the picture on website?
Answer:

Because of different batch, some of them have aberration. Store the e-Paper right side up will reduce it. And if the e-Paper didn't be refreshed for long time, it will become more and more red/yellow. Please use the demo code to refresh the e-paper for several times in this case.


Question:
Why my e-paper has ghosting problem after working for some days
Answer:

Please set the e-paper to sleep mode or disconnect it if you needn't refresh the e-paper but need to power on your development board or Raspberry Pi for long time.Otherwise, the voltage of panel keeps high and it will damage the panel



Question:
Why the FPC of the e-Paper is broken after using for some times?
Answer:
Please make sure you have used it in correct way.

E-Paper FAQ FPC.jpg


Support

Mail.png Contact your seller (fast response and most recommended)

or send emails to [email protected] (not fast enough but please be patient) for help.

Our working time: 09:00-18:00 (UTC+8 Monday to Saturday)