Posted at

電子ペーパー を ESP32 と Arduino開発環境で使う

More than 1 year has passed since last update.

WaveShareの電子ペーパーモジュール。

https://www.waveshare.com/wiki/2.9inch_e-Paper_Module_(B)

2.9inの白黒赤のもの。

実態は GoodDisplay社 の E-Paper Display にインターフェース基板をつけたもの。

GDEW029Z10 2.9 inch 128 x 296 3 color SPI display

GDEW029Z10 には IL0373コントローラが内蔵されている。

http://www.good-display.com/download_detail/downloadsId=535.html

これらを使うことの出来るライブラリとして、GoodDisplay SPI ディスプレイ用の Arduino ライブラリがある。

https://github.com/ZinggJM/GxEPD

このモジュールを使った。

これを試してみた。


環境


  • ちょっと前のArduino1.6.9

  • Ubuntu Linux 16.04 AMD64

  • ESP32

Arduino環境からESP32にプログラムできるようになっているとします。


インストール

まず上記ページから ZIP でダウンロードしました。

ライブラリのインストール方法は通常のライブラリと同様。

- GxEPD-master.zipを解凍して、

- できたGxEPD-masterフォルダを

- Arduinoのスケッチが保存されるフォルダのlibrariesフォルダ内部に移動

ArduinoIDEを起動して、サンプルプログラムGxEPD_SPI_TestExampleを使う。

以下の箇所をモジュールに合わせて有効なものを選びなおす。


// select the display class to use, only one
//#include <GxGDEP015OC1/GxGDEP015OC1.cpp> // 1.54" b/w
//#include <GxGDEW0154Z04/GxGDEW0154Z04.cpp> // 1.54" b/w/r
//#include <GxGDE0213B1/GxGDE0213B1.cpp> // 2.13" b/w
//#include <GxGDEW0213Z16/GxGDEW0213Z16.cpp> // 2.13" b/w/r
//#include <GxGDEH029A1/GxGDEH029A1.cpp> // 2.9" b/w
#include <GxGDEW029Z10/GxGDEW029Z10.cpp> // 2.9" b/w/r
//#include <GxGDEW027C44/GxGDEW027C44.cpp> // 2.7" b/w/r
//#include <GxGDEW027W3/GxGDEW027W3.cpp> // 2.7" b/w
//#include <GxGDEW042T2/GxGDEW042T2.cpp> // 4.2" b/w
//#include <GxGDEW042Z15/GxGDEW042Z15.cpp> // 4.2" b/w/r
//#include <GxGDEW075T8/GxGDEW075T8.cpp> // 7.5" b/w
//#include <GxGDEW075Z09/GxGDEW075Z09.cpp> // 7.5" b/w/r

実際の接続に合わせて設定を直す。ESP32で使うので、以下の箇所を

(変更前)

#elif defined(ESP32)

// pins_arduino.h, e.g. LOLIN32
//static const uint8_t SS = 5;
//static const uint8_t MOSI = 23;
//static const uint8_t MISO = 19;
//static const uint8_t SCK = 18;

// GxIO_SPI(SPIClass& spi, int8_t cs, int8_t dc, int8_t rst = -1, int8_t bl = -1);
GxIO_Class io(SPI, SS, 17, 16); // arbitrary selection of 17, 16
// GxGDEP015OC1(GxIO& io, uint8_t rst = D4, uint8_t busy = D2);
GxEPD_Class display(io, 16, 4); // arbitrary selection of (16), 4



(変更後)

#elif defined(ESP32)

// pins_arduino.h, e.g. LOLIN32
//static const uint8_t SS = 5;
//static const uint8_t MOSI = 23;
//static const uint8_t MISO = 19;
//static const uint8_t SCK = 18;

GxIO_Class io(SPI, SS, 16, 17);
GxEPD_Class display(io, 17, 21);

コンパイルすると、


In file included from /tmp/arduino_modified_sketch_971536/GxEPD_SPI_TestExample.ino:51:0:
/home/nanbuwks/Arduino/libraries/GxEPD-master/GxEPD.h:5:17: fatal error: SPI.h: No such file or directory
compilation terminated.

とか

In file included from /tmp/arduino_modified_sketch_78349/GxEPD_SPI_MultiExample.ino:45:0:
/home/nanbuwks/Arduino/libraries/GxEPD-master/GxEPD.h:7:26: fatal error: Adafruit_GFX.h: No such file or directory
compilation terminated.

とかのエラーがでたので、

(変更前)


#include <GxEPD.h>



(変更後)


#include <SPI.h>
#include <Adafruit_GFX.h>
#include <GxEPD.h>

とするとOK.