Difference between revisions of "1.54inch e-Paper Module"

From Waveshare Wiki
Jump to: navigation, search
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Infobox item|colorscheme=blue
+
{{Infobox item
|brief=200x200, 1.54inch E-Ink display module
+
|name=1.54inch e-Paper
|img=[[File:1.54inch-e-paper-module-6.jpg|300px|link=http://www.waveshare.com/1.54inch-e-Paper-Module.htm]]
+
|name2=1.54inch e-Paper Module
|caption=200x200, 1.54inch E-Ink display module, SPI interface
+
|img=[[File:1.54inch-e-Paper-1.jpg|300px|link=https://www.waveshare.com/1.54inch-e-Paper.htm]]
 +
|img2=[[File:1.54inch-e-paper-module-6.jpg|300px|link=http://www.waveshare.com/1.54inch-e-Paper-Module.htm]]
 +
|caption=200x200, 1.54inch E-Ink display raw panel
 +
|caption2=200x200, 1.54inch E-Ink display module, SPI interface
 
|category=[[:Category:OLEDs / LCDs|OLEDs / LCDs]], [[:Category:LCD|LCD]]
 
|category=[[:Category:OLEDs / LCDs|OLEDs / LCDs]], [[:Category:LCD|LCD]]
 
|brand=Waveshare
 
|brand=Waveshare
Line 13: Line 16:
 
}}
 
}}
 
== Introduction ==
 
== Introduction ==
 +
<!-- {{e-Paper Raw Panel}}-->
 +
'''Note:''' Please read the user manual before you using the e-paper
 +
 
200x200, 1.54inch E-Ink display module, SPI interface
 
200x200, 1.54inch E-Ink display module, SPI interface
  
 
{{Amazon|{{#urlget:amazon|default}}=display
 
{{Amazon|{{#urlget:amazon|default}}=display
 
|More = [http://www.waveshare.com/product/1.54inch-e-Paper-Module.htm More]}}
 
|More = [http://www.waveshare.com/product/1.54inch-e-Paper-Module.htm More]}}
 +
===Video===
 +
<youtube height=400px, width=400px>https://youtu.be/-XbwDC2AOOw</youtube>
 +
<!--
 
== Interfaces ==
 
== Interfaces ==
 
{|class="wikitable"
 
{|class="wikitable"
Line 74: Line 83:
 
| CS || CE0
 
| CS || CE0
 
|-
 
|-
| DC || 25
+
| DC || Pin22/GPIO25
 
|-
 
|-
| RST || 17
+
| RST || Pin11/GPIO17
 
|-
 
|-
| BUSY || 24
+
| BUSY || Pin18/GPIO24
 
|}
 
|}
 +
 
==== Expected result ====
 
==== Expected result ====
1. After installed the corresponding libraries, you can copy the relative programs into your Raspberry Pi, and then enter the corresponding file.
+
# 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.  
+
#* '''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.  
+
#* '''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>
+
#* '''Python:''' Execute the command: <code>sudo python main.py</code>
2. Refreshes the whole screen and then displays strings and shapes.
+
# The screen displays strings and shapes after whole screen refresh.
3. Refreshes the partial screen and then displays images and the time. This function demonstrates the partial refreshing capability.
+
# The screen displays images and the time after partial screen refresh. This demonstrates the partial refreshing capability.
 
=== Working with Arduino ===
 
=== Working with Arduino ===
 
==== Hardware connection ====
 
==== Hardware connection ====
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
! e-Paper !! Arduino
+
! e-Paper !! UNO PLUS (3.3V)
 
|-
 
|-
 
| 3.3V || 3V3
 
| 3.3V || 3V3
Line 109: Line 119:
 
| BUSY || D7
 
| BUSY || D7
 
|}
 
|}
 +
 
==== Expected result ====
 
==== Expected result ====
1. Copy the files from the directory arduino/libraries of the demo package to documents/arduino/libraries, where can be specified by Arduino IDE --> File --> Preferences --> Sketchbook location.
+
# Copy the files from the directory arduino/libraries of the demo package to documents/arduino/libraries, where can be specified by Arduino IDE -> File -> Preferences -> Sketchbook location.
2. Click the button '''Upload''' to compile and upload the program to your Arduino board.
+
# Click the button '''Upload''' to compile and upload the program to your Arduino board.
3. Refreshes the whole screen and then displays strings and shapes.
+
# The screen displays strings and shapes after whole screen refresh.
4. Refreshes the partial screen and then displays images and the time. This function demonstrates the partial refreshing capability.
+
# The screen displays images and the time after partial screen refresh. This demonstrates the partial refreshing capability.
 
=== Working with the STM32 development board ===
 
=== Working with the STM32 development board ===
 
Here we use the development board XNUCLEO-F103RB. The Demo is base on the library HAL.
 
Here we use the development board XNUCLEO-F103RB. The Demo is base on the library HAL.
Line 139: Line 150:
 
|}
 
|}
 
==== Expected result ====
 
==== Expected result ====
1. Open the Keil project (MDK-ARM/epd-demo.uvprojx)
+
# Open the Keil project (MDK-ARM/epd-demo.uvprojx)
2. Click '''Build''' to compile the project.
+
# Click '''Build''' to compile the project.
3. Click '''Download''' to download the program to the target board.
+
# Click '''Download''' to download the program to the target board.
4. Refreshes the whole screen and then displays strings and shapes.
+
# The screen displays strings and shapes after whole screen refresh.
5. Refreshes the partial screen and then displays images and the time. This function demonstrates the partial refreshing capability.
+
# The screen displays images and the time after partial screen refresh. This demonstrates the partial refreshing capability.
 
== Code analysis ==
 
== Code analysis ==
Here, we will analyze the driving code and take the demo of Raspberry Pi based on WiringPi library as examples.  
+
Here, we will analyze the driving code and take the demos for Raspberry Pi based on WiringPi library as examples.  
 
=== Hardware interface function ===
 
=== 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.
 
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.
Line 153: Line 164:
 
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.
 
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) ===
 
=== Reset (Reset) ===
Module will reset if RST pin is LOW. It is used to restart the module after power on or wake it up from sleep mode. After restarting, you need to initialize module with initialization function (Init) for working properly.
+
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) ===
 
=== Initialization (Init) ===
 
Init has 3 effects: 1, Set the arguments at power up. 2, Awaken the module from deep sleep. 3, Set the mode to Full update or Partial update.
 
Init has 3 effects: 1, Set the arguments at power up. 2, Awaken the module from deep sleep. 3, Set the mode to Full update or Partial update.
  
Process of initialization: reset --> driver output control --> booster soft start control --> write VCOM register --> set dummy line period --> set gate time --> data entry mode setting --> look-up table setting
+
Process of initialization: reset -> driver output control -> booster soft start control -> write VCOM register -> set dummy line period -> set gate time -> data entry mode setting -> look-up table setting
 
=== Configuration of LUT table(SetLut) ===
 
=== Configuration of LUT table(SetLut) ===
 
Look-up table is used to set the update mode of the module. This table is provided by us but it may be different among different batches. If the table changed, we will update the demo code as soon as possible.  
 
Look-up table is used to set the update mode of the module. This table is provided by us but it may be different among different batches. If the table changed, we will update the demo code as soon as possible.  
Line 163: Line 175:
 
SetFrameMemory is used to write image data to the memory.  
 
SetFrameMemory is used to write image data to the memory.  
 
* Process:  
 
* Process:  
:: Set the area size (see the function SetMemoryArea) --> set the start point (see the function SetMemoryPointer) --> send the command ''Write RAM'' --> start image data transfer.  
+
:: Set the area size (see the function SetMemoryArea) -> set the start point (see the function SetMemoryPointer) -> send the command ''Write RAM'' -> start image data transfer.  
* The module has two memory areas. Once DisplayFrame is invoked, the following function SetFrameMemory will set the other memory area, e.g. to set all the two memory areas, the process is: SetFrameMemory --> DisplayFrame --> SetFrameMemory --> DisplayFrame, i.e. set and update twice.
+
* The module has two memory areas. Once DisplayFrame is invoked, the following action of SetFrameMemory will set the other memory area, e.g. to set all the two memory areas, the process is: SetFrameMemory -> DisplayFrame -> SetFrameMemory -> DisplayFrame, i.e. set and update twice.
 
* The data from SPI interface is first saved into the memory and then updated if the module received the update command.
 
* The data from SPI interface is first saved into the memory and then updated if the module received the update command.
 
* About the image to be sent: 1 byte = 8 pixels, doesn’t support Gray scale (Can only display black and white). A bit set stands for a white pixel, otherwise a bit reset stands for a black pixel.
 
* About the image to be sent: 1 byte = 8 pixels, doesn’t support Gray scale (Can only display black and white). A bit set stands for a white pixel, otherwise a bit reset stands for a black pixel.
Line 174: Line 186:
 
0x66:8 pixels ■□□■■□□■
 
0x66:8 pixels ■□□■■□□■
 
</pre>
 
</pre>
 +
 
=== Display a Frame (DisplayFrame) ===
 
=== Display a Frame (DisplayFrame) ===
 
DisplayFrame is used to display the data from the frame memory.
 
DisplayFrame is used to display the data from the frame memory.
  
 
Note:
 
Note:
* The module has two memory areas. Once DisplayFrame is invoked, the following function SetFrameMemory will set the other memory area, e.g. to set all the two memory areas, the process is: SetFrameMemory --> DisplayFrame --> SetFrameMemory --> DisplayFrame, i.e. set and update twice.
+
* The module has two memory areas. Once DisplayFrame is invoked, the following function SetFrameMemory will set the other memory area, e.g. to set all the two memory areas, the process is: SetFrameMemory -> DisplayFrame -> SetFrameMemory -> DisplayFrame, i.e. set and update twice.
 
* The data from SPI interface is first saved into the memory and then updated if the module received the update command.
 
* The data from SPI interface is first saved into the memory and then updated if the module received the update command.
 
* The module will flicker during full update.
 
* The module will flicker during full update.
Line 198: Line 211:
  
 
# Open a picture with drawing tool comes with Windows system, create a new image, and set the pixel to 200x200.
 
# Open a picture with drawing tool comes with Windows system, create a new image, and set the pixel to 200x200.
# 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.
+
# 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).
+
#: There is a monochrome bitmap on examples pack for demonstration (raspberrypi/python/monocolor.bmp).
# Use Image2Lcd.exe software to generate corresponding array for picture (.c file). Open picture with this software, set the parameters:
+
# 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
 
#* Output data type: C language array
 
#* Scanning mode: vertical scanning
 
#* Scanning mode: vertical scanning
Line 212: Line 225:
  
 
[[File:1.54inch-e-paper-manual-4.png|400px]]
 
[[File:1.54inch-e-paper-manual-4.png|400px]]
 
+
-->
 
== Resources ==
 
== Resources ==
 
=== Documentation ===
 
=== Documentation ===
 +
*[https://www.waveshare.com/w/upload/7/7f/1.54inch_e-paper_module_user_manual_en.pdf User Manual]
 +
{{Commom Instruction of SPI e-paper}}
 
* [[:File:1.54inch_e-Paper_Schematic.pdf|Schematic]]
 
* [[:File:1.54inch_e-Paper_Schematic.pdf|Schematic]]
 +
 
=== Demo code ===
 
=== Demo code ===
 
* [[:File:1.54inch_e-Paper_Module_code.7z|Demo code]]
 
* [[:File:1.54inch_e-Paper_Module_code.7z|Demo code]]
Line 224: Line 240:
 
* [[:File:2.13inch_e-Paper_Datasheet.pdf|2.13inch_e-Paper_Datasheet.pdf]]
 
* [[:File:2.13inch_e-Paper_Datasheet.pdf|2.13inch_e-Paper_Datasheet.pdf]]
 
* [[:File:2.9inch_e-Paper_Datasheet.pdf|2.9inch_e-Paper_Datasheet.pdf]]
 
* [[:File:2.9inch_e-Paper_Datasheet.pdf|2.9inch_e-Paper_Datasheet.pdf]]
 +
===Certification===
 +
*[https://www.waveshare.com/w/upload/e/e2/1.54_e-paper_Certification.rar CE RoHS]
 +
== FAQ ==
 +
<!--{{e-Paper FAQ}}-->
 +
{{e-Paper FAQ}}
  
 
==Support==
 
==Support==
 
{{Service00}}
 
{{Service00}}

Revision as of 09:42, 15 December 2018

1.54inch e-Paper
1.54inch-e-Paper-1.jpg

200x200, 1.54inch E-Ink display raw panel
1.54inch e-Paper Module
1.54inch-e-paper-module-6.jpg

200x200, 1.54inch E-Ink display module, SPI interface
{{{name3}}}

{{{name4}}}

{{{name5}}}

Introduction

Note: Please read the user manual before you using the e-paper

200x200, 1.54inch E-Ink display module, SPI interface

More

Video

Resources

Documentation

Demo code

Demo video

Datasheets

Certification

FAQ

 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.


Support

Support

If you require technical support, please go to the Support page and open a ticket.