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!");