書き込みボードと電子ペーパーディスプレイが分離できるモジュールを入手しました。
SeeedStudio XIAO で電子ペーパーディスプレイを制御します。
記事の内容
SeeedStudio のePaper Breakout BoardとePaper Displayを使います。
XIAO規格のマイコン基板との親和性が良く配線不要で使用できます。
記事の内容
・XIAO基板を使って表示してみます
・ブレッドボードを使用して表示してみます
・RP2040マイコンでも使用できるようにライブラリを修正します
・ESP32, RP2040, nRF52840, SAMD21マイコンで使用できるサンプルスケッチを掲載します。
ePaper Breakout Board
主な仕様
電源 | 3.3V |
接続 | SPI |
その他 | Seeedstudio XIAO 規格マイコン基板 |
SeeedStudio ePaper Breakout Board ページ :
XIAO eInk Expansion Board | Seeed Studio Wiki
ピン配置

ピンソケットにXIAO基板をマウントした場合のピン配置です。

外観


Monochrome ePaper Display
主な仕様
接続 | FPC (SeeedStudio ePaper Breakout Boardと接続) |
カラー | 白黒 |
サイズ | 2.13inch |
解像度(h, w) | 122, 250 |
外観


パッケージはSeeedstudio梱包箱です。
いつも丁寧な梱包です。

使ってみた
ePaper Breakout BoardにSeeedStudioの XIAO 規格マイコンをマウントして使用します。
ロープロファイルピンソケットを使用しているため、ピンヘッダの半分くらいの挿抜なのが楽です。
ピンヘッダを取り付けなくても使用できます。

ピンヘッダを取り付けた場合は下図のようなブレッドボードに配線をすることでXIAO規格以外でも使用することができます。
画像はXIAO ESP32C3で配線した図です。

SeeedStudioのMonochrome ePaper Displayは書き込み用のボードとディスプレイが別体にできるため、ディスプレイだけのとても薄い状態で表示使用することができます。

ePaper自体書き込みにもたつきがあるので、高速な描画や書き換え回数の多い用途には不向きなです。
これらのサンプルテキスト表示でも3, 4秒程度かかります。
描画の終わった状態では電源が無くても表示が維持できる点や、バックライト無しでも視認できます。
ライブラリにはLOLINの “Arduino library for the LOLIN e-paper display”を使用しました。
このライブラリはRP2040には対応していなかったため修正して使用しています。
ライブラリの修正方法はこちらで紹介しています。
まとめ
Good
・XIAO規格のマイコン基板なら配線不要で使用できる
・ePaper Display単体に分離できるので、狭小か所での使用でも対応できる
Bad
・画面の更新が遅い
・発光機能がないので暗い空間では表示の認識が難しい
準備
開発環境
Arduino環境でRaspberryPi Picoを使用します。
Arduino環境の準備はこちらの記事で紹介しています。
ボードライブラリ
XIAOシリーズの動作確認をしたので多種にわたるライブラリを掲載します。
必要なボードライブラリをインストールします。
ボード名 | ボードマネージャURL | ボードライブラリ | 選択するボード |
---|---|---|---|
Raspberry Pi Pico | https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json | Raspberry Pi RP2040 Boards | Raspberry Pi Pico |
XIAO RP2040 | https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json | Raspberry Pi RP2040 Boards | Generic RP2040 |
XIAO ESP32 C3 | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json | esp32 by Espressif Systems | ESP32C3 Dev Module |
XIAO ESP32 C6 | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json | esp32 by Espressif Systems | ESP32C6 Dev Module |
XIAO ESP32 S3 | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json | esp32 by Espressif Systems | ESP32S3 Dev Module |
XIAO nRF52840 | https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json | Seeed nRF52 Boards by Seeed Studio | Seeed XIAO nRF52840 |
XIAO SAMD21 | https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json | Seeed SAMD Boards by Seeed Studio | Seeeduino XIAO |
モジュールライブラリ
1.モジュールライブラリのインストール
モジュールライブラリにはLOLIN EPD_Libraryを使用します。
Githubからダウンロードし、ArduinoIDEの
メニュー > Sketch > Include Library > Add Zip Library … からインストールします。
インストール方法は、「Arduino環境の作り方」の「Zipファイルからインストール」で紹介しています。
ライブラリ名 | github URL | 動作確認時バージョン |
---|---|---|
Arduino library for the LOLIN e-paper display | https://github.com/wemos/LOLIN_EPD_Library | 不明 |
Adafruitのライブラリでも表示はしますが、画面上部に「砂嵐」が映ってしまいます。
Adafruit製以外のモジュールを使用すると起きる現象のようです。
ライブラリ名:Adafruit EPD byAdafruit(Ver 4.5.6)

2.モジュールライブラリの修正
LOLIN EPD_LibraryをRP2040に対応させるための修正をします。
ESP32系を使用する場合はこの作業は不要です。
C:\Users\<アカウント>\Documents\Arduino\libraries\LOLIN_EPD\src\LOLIN_EPD.cpp
を開き、以下 Added for RP2040コメントの2行を追記します。
#ifdef __AVR__
#include <avr/pgmspace.h>
#elif defined(ESP8266) || defined(ESP32)
#include <pgmspace.h>
#elif defined(ARDUINO_ARCH_RP2040) //<-Added for RP2040
#include <pgmspace.h> //<-Added for RP2040
#else
#define pgm_read_byte(addr) (*(const unsigned char *)(addr)) ///< read bytes from program memory
#endif
接続
ePaper Breakout BoardとMonochrome ePaper DisplayをFPCケーブルで接続します。
使い方
文字の表示
説明
シンプルに文字列を表示します。
“TAMANEGI”
“SSD1680”
“Res=250 x 122”
XIAO規格を使用し「ボードマウント版」「ブレッドボード配線版」のどちらでも使用できます。
ボードライブラリで定義しているマクロによりボードごとにピン設定とSPIの初期化を変更しています。
XIAO規格では以下ボードに対応、動作確認をしています。
・SAMD21
・ESP32 S3
・ESP32 C3
・ESP32 C6
・RP2040
・nRF52840
配線
ボードマウント版
XIAOボードの方向に注意して取り付けます。

ブレッドボード配線版
配線は代表でXIAO RP2040で示しています。
配線の位置関係はすべてのXIAOで同じです。

スケッチ
#include <LOLIN_EPD.h>
#include <Adafruit_GFX.h>
//ボード選択
//XIAO SAMD21 : Seeeduino XIAO
//XIAO ESP32 C3 : ESP32C3 Dev Module
//XIAO ESP32 S3 : ESP32S3 Dev Module
//XIAO RP2040 : Generic RP2040
//XIAO nRF5280 : Seeed XIAO nRF52840
//SAMD21
#ifdef ARDUINO_ARCH_SAMD
#define EPD_CS (1)
#define EPD_DC (3)
#define EPD_RST (0)
#define EPD_BUSY (5)
#endif
//ESP32 C3
#ifdef ARDUINO_ESP32S3_DEV
#define EPD_CS (2)
#define EPD_DC (4)
#define EPD_RST (1)
#define EPD_BUSY (6)
#define EPD_MOSI (9)
#define EPD_SCK (7)
#endif
//ESP32 C3
#ifdef ARDUINO_ESP32C3_DEV
#define EPD_CS (3)
#define EPD_DC (5)
#define EPD_RST (2)
#define EPD_BUSY (7)
#define EPD_MOSI (10)
#define EPD_SCK (8)
#endif
//ESP32 C6
#ifdef ARDUINO_ESP32C6_DEV
#define EPD_CS (1)
#define EPD_DC (21)
#define EPD_RST (0)
#define EPD_BUSY (23)
#define EPD_MOSI (18)
#define EPD_SCK (19)
#endif
//XIAO RP2040
#ifdef ARDUINO_ARCH_RP2040
#define EPD_CS (27)
#define EPD_DC (29)
#define EPD_RST (26)
#define EPD_BUSY (7)
#define EPD_MOSI (3)
#define EPD_SCK (2)
#endif
//XIAO nRF52840(Sense)
#ifdef ARDUINO_ARCH_NRF52
#define EPD_CS (1)
#define EPD_DC (3)
#define EPD_RST (0)
#define EPD_BUSY (5)
#endif
LOLIN_SSD1680 EPD(250, 122, EPD_DC, EPD_RST, EPD_CS, EPD_BUSY);
void setup(void)
{
#ifdef ARDUINO_ARCH_SAMD
SPI.begin();
#endif
#ifdef ARDUINO_ARCH_NRF52
SPI.begin();
#endif
#ifdef ARDUINO_ESP32S3_DEV
SPI.begin(EPD_SCK, -1, EPD_MOSI, EPD_CS);
#endif
#ifdef ARDUINO_ESP32C3_DEV
SPI.begin(EPD_SCK, -1, EPD_MOSI, EPD_CS);
#endif
#ifdef ARDUINO_ESP32C6_DEV
SPI.begin(EPD_SCK, -1, EPD_MOSI, EPD_CS);
#endif
#ifdef ARDUINO_ARCH_RP2040
SPI.setTX(EPD_MOSI);
SPI.setSCK(EPD_SCK);
SPI.begin();
#endif
EPD.begin();
// large block of text
EPD.clearBuffer();
EPD.fillScreen(EPD_WHITE);
EPD.setTextSize(4);
EPD.setTextColor(EPD_BLACK);
EPD.setCursor(0,0);
EPD.println("TAMANEGI");
EPD.setTextSize(3);
EPD.setTextColor(EPD_BLACK);
EPD.println("");
EPD.println("SSD1680");
EPD.println("Res=250 x 122");
EPD.display();
}
void loop()
{
}
結果
結果は代表してXIAO SAMD21を掲載します。
XIAO規格すべてで表示できました。

ブレッドボード配線でも表示できました。

コメント