Small e-Paper Shield V2

Introduction

e-paper might be the most comfortable material to read. It reflects light instead of emits light to mimic the experience of conventional paper reading. And in this way much less power is consumed. Small e-paper shield is a driver shield for e-paper of small sizes. It’s capable of driving e-papers of 1.44 inch, 2.0 inch and 2.7 inch and supports more than 170 langusges. The upper surface of this shield is left flat and clean to give great support to the e-paper attached to it. If you are considering a lightweight and comfortable to read display, e-paper would be a good choice.

Attention: Since this driver board supports e-papers of different sizes. e-paper is not included in this product. We have e-paper of 2.0 inch and 2.7 inch on sale simultaneously. Go and add the most suitable one to your cart now!

Choose the library

In order to choose the correct library you should know the version of your panel.

Pay attention to your panel’s label:

  • if the model name is ‘EG020AS012’ or ‘EM027AS011’,then you should choose the old library, please click here Small e-Paper Library.

  • if the model name is ‘EG020BS011’ or ‘EM027BS013’,then you should choose the new library,please click here New Panel Library【EPD_V230】.

Specifications


Compatible board: Arduino Uno/Leonardo/Arduino Mega/Linkit ONE

Operating Voltage: 3.3/5VDC

Operating Current(refresh screen):40mA

Interface Type: SPI

PINs on Arduino

Arduino E-paper
D2 M_EPD_PANEL_ON
D3 M_EPD_BORDER
D4 M_/SD_CS
D5 M_EPD_PWM
D6 M_EPD_/RESET
D7 M_EPD_BUSY
D8 M_EPD_DISCHARGE
D9 M_/WORD_STOCK_CS
D10 M_/EPD_CS
ICSP PORT M_MOSI , M_SCK , M_MISO
A0 M_TEMP_SEN
A1 M_OE123
A2 M_CKV
A3 M_STV_IN
3.3V M_VCC_3V3
5V M_VCC_5V

Demonstration


Small e-Paper Shield can display image, a variety of graphics and texts. There are plenty of examples in library that give you some ideas on how to use the module. Now let us experience the strong library and wide viewing angle of e-Paper.

Hardware Installation

  • Connect e-Paper to the FFC interface of Small e-Paper Shield.
  • Plug Small e-Paper Shield to Arduino/Seeeduino and connect it to PC using a USB cable.

Now it is time to show demos using the library which needs download from here. After downloading, you need put it into the library file of Arduino IDE by the path:…\arduino-1.0.1\libraries.

Demo Showing

Here we select the 2.0 inch screen as an example to show its display functions.

Demo 1: Display texts

  • Open the code: File- >Examples- >ePaper->text as show below:

We need to re-emphasize this note:
If you use Arduino UNO, Seeeduino 3.0 and any board that uses Atmega 328P or Atmega32U4 as controller, you should insert an SD card using this demo. The SD card is used to store temporary data because of the little storage space of Atmega328p and Atmega32U4.
If you use an Arduino Mega, or any other board that uses Atmega1280 or Atmega2560, you don't need to insert an SD card.
  • Change the parameter to match your screen size. You need to change 200 to 270 if your screen is 2.7 inch. And you need to do this change when usisng other examples.

    #define SCREEN_SIZE 200 // choose screen size: 144, 200, 270

  • Upload the code to your microcontroller. Please click here if you do not know how to.

  • Now you can see this:

  • Try to change the display text and display location. You may learn every function usage.

Demo 2: Display graphic

The example: draw will be a good example to display a variety of graphics. You need to open this code: draw like demo 1. Remember the note about whether you need a SD card to complete the demo. Please make sure the SD card is needed or not, depending on your microcontroller type. And change the parameter to match your screen size.

After completing modifications and uploading the code, a beautiful pattern will display on the screen:

The picture is created by calling the draw graphic functions. You can make your pattern and try it on the screen. Every draw function has a specific description in the reference.

Demo 3: Display image

Similar to TFT displays and OLED displays, the small e-Paper Shield supports displaying images.

Now you need to open the image example: File- >Examples- >ePaper->image.

You need to upload the code to see the result.

Note:As you can see, the default screen size in this “image” sketch is set as 2.7 inch. Please modify the screen size setting in case of improper display.

  #define SCREEN_SIZE 200         // choose screen size here: 144, 200, 270 

Of course, you can change the display image by changing the image’s lattice data.

For example, your e-Paper screen is 2.7 inch, so you need get the lattice data of a 264 X176 pixel and copy the code to ‘’’static unsigned char image_270[] PROGMEM ={}’’’ in picture.h. You need to copy the code for a lattice data of a 200x96 pixel to ‘’’static unsigned char image_200[] PROGMEM ={}’’’ when using a 2.0 inch screen.

How to Display an Image

Thanks to the contribution of Muchiri John, we got a very useful and easy-to-use tool. With this tool, to display an image is no more a difficult thing.

You can download the tool here

Reference


Small e-Paper library provides complete software interfaces to exercise the capabilities of e-Paper display. There are specific description about functions.

Function Description:

1. void begin(EPD_size sz);

The function is setup screen size.

  • sz: can be EPD_1_44, EPD_2_0, EPD_2_7.

2. void setDirection(EPD_DIR dir);

The function is used to set the display direction.

  • dir: can be DIRLEFT,DIRRIGHT,DIRNORMAL,DIRDOWN

3. int drawChar(char c, int x, int y);

The function can be used to display char.

  • c: the char you want to display.
  • x: the starting X-coordinate of char.

  • y: the starting Y-coordinate of char.

4. int drawString(char *string, int poX, int poY);

The function can be used to display char.

  • *string: the string you want to display.
  • poX: the starting X-coordinate of string.

  • poY: the starting Y-coordinate of string.

5. int drawNumber(long long_num,int poX, int poY);

The function can be used to display char.

  • long_num: the long integer data you want to display. The max is
  • poX: the starting X-coordinate of data

  • poY: the starting Y-coordinate of data

6. int drawFloat(float floatNumber,int decimal,int poX, int poY);

The function can be used to display float number. The display float data is rounding according to the setting decimal place.

  • floatNumber: the float number you want to display.
  • decimal: set the decimal place.
  • poX: the starting X-coordinate of data.

  • poY: the starting Y-coordinate of data.

7. int drawUnicode(unsigned int uniCode, int x, int y);

_The function can be used to display a Character or a Chinese using unicode. See the page 18 to 24 of the GT20L16P1Y datasheet to find the Char unicode, the characters include Latin、Hebrew、 Thai、Greek、 Kirill and Arabic. The Chinese unicode can see GB2312 (Simplified Chinese) character code table. _

  • uniCode:the machine code according to a character or a chinese.
  • x: the starting X-coordinate.

  • y: the starting Y-coordinate.

Note: the character unicode between 0x0020 to 0x007E can directly input via the keyboard. Such as the display of the character ‘G’ ,the function can be drawUnicode(0x0047, 3,10) or displayChar (‘s’,3,10);

8. int drawUnicodeString(unsigned int *uniCode, int len, int x, int y);

_The function can be used to display several characters and chinese. _

  • *uniCode: a unicode array.
  • len: string length.
  • x: the starting X-coordinate of string.

  • y: the starting Y-coordinate of string.

9. void drawLine(int x0, int y0, int x1, int y1);

_The function can be used to display a line. _

  • x0: the starting X-coordinate of line

  • y0: the starting Y-coordinate of line

  • x1: the end X-coordinate of line

  • y1: the end Y-coordinate of line

10. void drawCircle(int poX, int poY, int r);

_The function can be used to draw a circle. _

  • poX: the X-coordinate of the center

  • poY: the Y-coordinate of the center

  • r: the radius of center

11. void drawHorizontalLine( int poX, int poY, int len);

The function can be used to draw a horizontal line.

  • poX: the starting X-coordinate of the line.

  • poY: the starting Y-coordinate of the line.

  • len: the length of the line

12. void drawVerticalLine( int poX, int poY, int len);

The function can be used to draw a vertical line.

  • poX: the starting X-coordinate of the Line.

  • poY: the starting Y-coordinate of the Line.

  • len: the length of the line.

13. void drawRectangle(int poX, int poY, int len, int width);

The function can be used to draw a rectangle.

  • poX: the starting X-coordinate of the rectangle.

  • poY: the starting Y-coordinate of the rectangle.

  • len: the length of the rectangle.

  • width: the width of the rectangle.

14. void fillRectangle(int poX, int poY, int len, int width);

The function can be used to draw a fill rectangle.

  • poX: the starting X-coordinate of the rectangle.

  • poY: the starting Y-coordinate of the rectangle.

  • len: the length of the rectangle.

  • width: the width of the rectangle.

15. void fillCircle(int poX, int poY, int r);

_The function can be used to draw a fill circle. _

  • poX: the X-coordinate of the center.

  • poY: the Y-coordinate of the center.

  • r: the radius of center Example:
    EPAPER.drawRectangle(10, 10, 100, 80);
    EPAPER.fillCircle(50, 50, 30);
    EPAPER.fillRectangle(50, 65, 50, 20);
    EPAPER.drawCircle(150, 50, 10);
    EPAPER.fillCircle(150, 50, 5);
    EPAPER.drawHorizontalLine(120, 50, 60);
    EPAPER.drawVerticalLine(150, 20, 60);

16. void drawTraingle( int poX1, int poY1, int poX2, int poY2, int poX3, int poY3);

The function can be used to draw a triangle. It is formed by three points.

  • poX1(poX2,poX3): the X-coordinate of the triangle one point.

  • poY1(poY2,poY3): the Y-coordinate of the triangle one point.

Resources


Help us make it better

Thank you for choosing Seeed. A couple of months ago we initiated a project to improve our documentation system. What you are looking at now is the first edition of the new documentation system. Comparing to the old one, here is the progresses that we made:

  • Replaced the old documentation system with a new one that was developed from Mkdocs, a more widely used and cooler tool to develop documentation system.
  • Integrated the documentation system with our official website, now you can go to Bazaar and other section like Forum and Community more conveniently.
  • Reviewed and rewrote documents for hundreds of products for the system’s first edition, and will continue migrate documents from old wiki to the new one.

An easy-to-use instruction is as important as the product itself. We are expecting this new system will improve your experience when using Seeed’s products. However since this is the first edition, there are still many things need to improve, if you have any suggestions or findings, you are most welcome to submit the amended version as our contributor or give us suggestions in the survey below, Please don’t forget to leave your email address so that we can reply.

Happy hacking