Waveshare E-Paper Cloud module

esp32 global Comes with ESPHome misc
Waveshare E-Paper Cloud module - waveshare213_back.jpg
Waveshare E-Paper Cloud module - waveshare213_front.jpg

Overview

A module composed of:

GPIO Pinout

PIN (e-Paper)ESP32Description
VCCVCCPower input (3.3V)
GNDGNDGND
KEY12User button, Low active
SCK13CLK pin of SPI, clock input
DIN14MOSI pin of SPI, data input
CS15Chip select pin of SPI, Low active
BUSY25Busy pin, it indicates whether the e-Paper is busy
RST26Reset pin, Low active
DC27Data/Command control pin, Low for Command and High for Data
ADC36ADC data input, the voltage detected is the 1/3 of the battery voltage.

Product Images

Flashing

Make sure you have a working driver installed for the CP2102 USB to serial convertor chip. I had problems with the stock MacOS Monterey one. After that simply connect to the USB-C port and flash as usual (in case of problems with enter programming mode, connect IO0 to GND, reset the device with reset button (EN) and keep the connection between GPIO0 and GND until programming starts).

Device Specific Config

substitutions:
  devicename: "waveshare"
esp32:
  board: esp32dev
  framework:
    type: arduino
sensor:
  - platform: adc
    pin: GPIO36
    name: "${devicename} Battery voltage"
    id: battery_voltage
    icon: mdi:battery
    device_class: voltage
    attenuation: auto # without attenuation the adc is saturated (VBat/3 > 1.1 V)
    filters:
     - multiply: 3
    update_interval: 60s
spi:
  clk_pin: GPIO13
  mosi_pin: GPIO14
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO12
      inverted: true # user button pull IO12 to GND
      mode:          # pin as input and enable pull up
        input: true
        pullup: true
    name: "${devicename} button"
    filters:
      - delayed_on: 50ms
    on_press:
      - logger.log: "Button pressed"
font:
  - file: "gfonts://Roboto"
    id: roboto
    size: 20
display:
  - platform: waveshare_epaper
    cs_pin: GPIO15
    dc_pin: GPIO27
    busy_pin: GPIO25
    reset_pin: GPIO26
    model: 2.13in-ttgo-dke # choose your display size here
    rotation: 270
    full_update_every: 12 # every 12th time
    update_interval: 60s
    lambda: |-
      it.print(0, 0, id(roboto), "Hello World!");