devices.esphome.io
Waveshare E-Paper Cloud module
Waveshare E-Paper Cloud module
Device Type: miscElectrical Standard: globalBoard: 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) | ESP32 | Description | 
|---|---|---|
| VCC | VCC | Power input (3.3V) | 
| GND | GND | GND | 
| KEY | 12 | User button, Low active | 
| SCK | 13 | CLK pin of SPI, clock input | 
| DIN | 14 | MOSI pin of SPI, data input | 
| CS | 15 | Chip select pin of SPI, Low active | 
| BUSY | 25 | Busy pin, it indicates whether the e-Paper is busy | 
| RST | 26 | Reset pin, Low active | 
| DC | 27 | Data/Command control pin, Low for Command and High for Data | 
| ADC | 36 | ADC 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!");