LoginSignup
15
18

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-03-01

2019年11月28日追記:新しいライブラリ GxEPD2 を使った記事を書きました
→ 「電子ペーパー を ESP32 と Arduino開発環境で使う その2」
https://qiita.com/nanbuwks/items/266bf61726b005d8e221
以下は旧いライブラリで試したものです。


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.

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18