an ESP32-PICO-D4 witha 1.02 inch e-paper display

In this article we look at an ESP32 board which is a combination of an ESP32-PICO-D4 and a 1.02 inch e-paper display

The board does not have a USB to serial chip and therefore you need a download adapter which can be bought with the display

There is a micro sd (tf) card slot and also 2 GPIO expansion headers

Features

– 3D printed shell
– ESP32-PICO-D4 4MB Flash WIFI/Bluetooth
– Low power consumption sleep mode is about 10uA
– 1.02 inch e-paper @ 128 X 80
– Three-way toggle button
– TF card socket
– Reset button
– Battery charging and discharging circuit
– Bottom expansion interface (2.54 female row)
– T-U2T downloader (if you already have this downloader, you don’t need to buy it again)
– TYPE-C USB

Pinout

Purchase

About $20 for this board with the downloader

AliExpress – LILYGO® TTGO Mini E-Paper Core 1.02 Inch TF Card ESP32 PICO / T- U2T USB to TTL Downloader Wifi BLE Module Development Board

Arduino Instructions

Donwload all the files from https://github.com/Xinyuan-LilyGO/LilyGO-Mini-Epaper

  1. Copy all the folders in the lib directory to "C:\User\<YourName>\Documents\Arduino\libraries"
  2. At the top of the sketch, define the model of the board and screen to be used
  3. Select ESP32 Pico Kit in the development board, and keep the other options as default
  4. If you do not find the ESP32 series in the development board, then you should see the following installation method How to install ESP32 in ArduinoIDE
  5. For the version of the board you purchased, please check the product link below
  6. When you think there is a problem with your board, you can pull the binary file corresponding to your screen model in the firmware directory, follow the SETTING.png settings in the directory, download it to the board, and then observe the execution.

Code

This is one of the default examples there are several in the download above.

/*
    LilyGo Ink Screen Series u8g2Fonts Test
        - Created by Lewis he
*/
 
// According to the board, cancel the corresponding macro definition
// #define LILYGO_T5_V213
// #define LILYGO_T5_V22
// #define LILYGO_T5_V24
// #define LILYGO_T5_V28
#define LILYGO_T5_V102
// #define LILYGO_T5_V266
// #define LILYGO_EPD_DISPLAY_102
// #define LILYGO_EPD_DISPLAY_154
 
 
#include <boards.h>
#include <GxEPD.h>
 
#if defined(LILYGO_T5_V102) || defined(LILYGO_EPD_DISPLAY_102)
#include <GxGDGDEW0102T4/GxGDGDEW0102T4.h> //1.02" b/w
#elif defined(LILYGO_T5_V266)
#include <GxDEPG0266BN/GxDEPG0266BN.h>    // 2.66" b/w   form DKE GROUP
#elif defined(LILYGO_T5_V213)
#include <GxDEPG0213BN/GxDEPG0213BN.h>    // 2.13" b/w  form DKE GROUP
#else
// #include <GxGDGDEW0102T4/GxGDGDEW0102T4.h> //1.02" b/w
// #include <GxGDEW0154Z04/GxGDEW0154Z04.h>  // 1.54" b/w/r 200x200
// #include <GxGDEW0154Z17/GxGDEW0154Z17.h>  // 1.54" b/w/r 152x152
// #include <GxGDEH0154D67/GxGDEH0154D67.h>  // 1.54" b/w
// #include <GxDEPG0150BN/GxDEPG0150BN.h>    // 1.51" b/w   form DKE GROUP
// #include <GxDEPG0266BN/GxDEPG0266BN.h>    // 2.66" b/w   form DKE GROUP
// #include <GxDEPG0290R/GxDEPG0290R.h>      // 2.9" b/w/r  form DKE GROUP
// #include <GxDEPG0290B/GxDEPG0290B.h>      // 2.9" b/w    form DKE GROUP
// #include <GxGDEW029Z10/GxGDEW029Z10.h>    // 2.9" b/w/r  form GoodDisplay
// #include <GxGDEW0213Z16/GxGDEW0213Z16.h>  // 2.13" b/w/r form GoodDisplay
// #include <GxGDE0213B1/GxGDE0213B1.h>      // 2.13" b/w  old panel , form GoodDisplay
// #include <GxGDEH0213B72/GxGDEH0213B72.h>  // 2.13" b/w  old panel , form GoodDisplay
// #include <GxGDEH0213B73/GxGDEH0213B73.h>  // 2.13" b/w  old panel , form GoodDisplay
// #include <GxGDEM0213B74/GxGDEM0213B74.h>  // 2.13" b/w  form GoodDisplay 4-color
// #include <GxGDEW0213M21/GxGDEW0213M21.h>  // 2.13"  b/w Ultra wide temperature , form GoodDisplay
// #include <GxDEPG0213BN/GxDEPG0213BN.h>    // 2.13" b/w  form DKE GROUP
// #include <GxGDEW027W3/GxGDEW027W3.h>      // 2.7" b/w   form GoodDisplay
// #include <GxGDEW027C44/GxGDEW027C44.h>    // 2.7" b/w/r form GoodDisplay
// #include <GxGDEH029A1/GxGDEH029A1.h>      // 2.9" b/w   form GoodDisplay
// #include <GxDEPG0750BN/GxDEPG0750BN.h>    // 7.5" b/w   form DKE GROUP
#endif
 
#include GxEPD_BitmapExamples
// FreeFonts from Adafruit_GFX
#include <Fonts/FreeMonoBold9pt7b.h>
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold18pt7b.h>
#include <GxIO/GxIO_SPI/GxIO_SPI.h>
#include <GxIO/GxIO.h>
 
 
GxIO_Class io(SPI,  EPD_CS, EPD_DC,  EPD_RSET);
GxEPD_Class display(io, EPD_RSET, EPD_BUSY);
 
void LilyGo_logo();
 
 
void setup(void)
{
    Serial.begin(115200);
    Serial.println();
    Serial.println("setup");
 
#if defined(LILYGO_EPD_DISPLAY_102)
    pinMode(EPD_POWER_ENABLE, OUTPUT);
    digitalWrite(EPD_POWER_ENABLE, HIGH);
#endif /*LILYGO_EPD_DISPLAY_102*/
#if defined(LILYGO_T5_V102)
    pinMode(POWER_ENABLE, OUTPUT);
    digitalWrite(POWER_ENABLE, HIGH);
#endif /*LILYGO_T5_V102*/
    SPI.begin(EPD_SCLK, EPD_MISO, EPD_MOSI);
    display.init(); // enable diagnostic output on Serial
 
    LilyGo_logo();
    Serial.println("setup done");
}
 
 
void loop()
{
 
    display.setRotation(1);
    display.fillScreen(GxEPD_WHITE);
    display.setTextColor(GxEPD_BLACK);
    display.setFont(&FreeMonoBold9pt7b);
    display.setCursor(0, 45);
    display.println("Hello World");
    display.update();
    delay(10000);
}
 
 
 
void LilyGo_logo(void)
{
    display.setRotation(0);
    display.fillScreen(GxEPD_WHITE);
    display.drawExampleBitmap(BitmapExample1, 0, 0, GxEPD_WIDTH, GxEPD_HEIGHT, GxEPD_BLACK);
    display.update();
}

 

Links

SHARE
Previous articleHTU31 Humidity and Temperature Sensor and ESP32 board example
Next articleESP32 and ICM-20948 MotionTracking device arduino example