devices.esphome.io

Waveshare E-Paper Cloud module

Waveshare E-Paper Cloud module

Device Type: misc
Electrical Standard: global
Board: esp32

A module composed of:

  • ESP32 chip
  • E-Paper display of several different sizes
  • Battery

Powered by USB-C

Vendor documentation:

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

Product Image Product Image

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!");
Edit this page on GitHub