Inkplate E-Paper Displays
The Inkplate family consists of Wi-Fi enabled ESP32-based e-paper displays by Soldered Electronics. Each board integrates the e-paper panel, an ESP32 module, a TPS65186 PMIC, and a GPIO I/O expander into a single ready-to-use unit. For hardware details and board-specific documentation, see the Inkplate documentation.
Supported Models
Section titled “Supported Models”| Model key | Product | Resolution |
|---|---|---|
inkplate4 | Inkplate 4 TEMPERA | 600×600 |
inkplate5v1 | Inkplate 5 v1 | 960×540 |
inkplate5v2 | Inkplate 5 v2 | 1280×720 |
inkplate6v1 | Inkplate 6 v1 | 800×600 |
inkplate6v2 | Inkplate 6 v2+ | 800×600 |
inkplate6plus | Inkplate 6 PLUS | 1024×758 |
inkplate6flick | Inkplate 6 FLICK | 1024×758 |
inkplate10 | Inkplate 10 | 1200×825 |
Minimal Configuration
Section titled “Minimal Configuration”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate6v2 pca6416a_id: pca6416a_hub update_interval: 60s lambda: |- it.print(0, 0, id(my_font), "Hello World!");NOTE
Inkplate boards require PSRAM for framebuffer allocation. Add psram: to your configuration.
WARNING
Partial updates (full_update_every > 1) are not supported in grayscale mode and are ignored.
Configuration Variables
Section titled “Configuration Variables”-
model (Required, enum): The Inkplate board model. One of:
inkplate4inkplate5v1inkplate5v2inkplate6v1inkplate6v2inkplate6plusinkplate6flickinkplate10
-
pca6416a_id (Optional, ID): ID of the PCA6416A I/O expander. Required for all models except
inkplate6v1. -
mcp23017_id (Optional, ID): ID of the MCP23017 I/O expander. Required for
inkplate6v1. Exactly one ofpca6416a_idormcp23017_idmust be specified. -
grayscale_mode (Optional, boolean): Enable 3-bit grayscale rendering. Defaults to
false. -
full_update_every (Optional, int): Perform a full refresh every N updates. Set to
1to always do a full refresh (partial updating disabled). Set to a higher value to enable partial updates with a periodic full refresh. Defaults to1. -
id (Optional, ID): Manually specify the ID used for code generation.
-
lambda (Optional, lambda): The lambda to use for rendering. See Display Rendering Engine.
-
update_interval (Optional, Time): Interval between refreshes. Minimum
5s. Defaults to1minwhenlambdaorpagesis configured. -
pages (Optional, list): Show pages instead of a single lambda. See Display Pages.
The component communicates with the onboard TPS65186 PMIC over I²C. The i2c: bus must be
configured. See I²C Bus.
- address (Optional, int): I²C address of the TPS65186 PMIC. Defaults to
0x48. - i2c_id (Optional, ID): ID of the I²C bus to use.
Inkplate 4
Section titled “Inkplate 4”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate4 pca6416a_id: pca6416a_hub update_interval: 60sInkplate 5 v1
Section titled “Inkplate 5 v1”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate5v1 pca6416a_id: pca6416a_hub update_interval: 60sInkplate 5 v2
Section titled “Inkplate 5 v2”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate5v2 pca6416a_id: pca6416a_hub update_interval: 60sInkplate 6 v1
Section titled “Inkplate 6 v1”The original Inkplate 6 uses an MCP23017 I/O expander. Use mcp23017_id instead of pca6416a_id:
i2c:
mcp23017: - id: mcp23017_hub address: 0x20
display: - platform: inkplate model: inkplate6v1 mcp23017_id: mcp23017_hub update_interval: 60sInkplate 6 v2
Section titled “Inkplate 6 v2”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate6v2 pca6416a_id: pca6416a_hub update_interval: 60sInkplate 6 PLUS
Section titled “Inkplate 6 PLUS”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate6plus pca6416a_id: pca6416a_hub update_interval: 60sInkplate 6 FLICK
Section titled “Inkplate 6 FLICK”i2c:
pca6416a: - id: pca6416a_hub address: 0x20
display: - platform: inkplate model: inkplate6flick pca6416a_id: pca6416a_hub update_interval: 60sInkplate 10
Section titled “Inkplate 10”The Inkplate 10 board has two PCA6416A expanders. The display driver only uses the primary expander
at address 0x20. The secondary expander at 0x21 can be declared independently to access its
additional I/O pins.
i2c:
pca6416a: - id: pca6416a_hub address: 0x20 - id: pca6416a_hub2 address: 0x21
display: - platform: inkplate model: inkplate10 pca6416a_id: pca6416a_hub update_interval: 60sBasic Rendering
Section titled “Basic Rendering”Use lambda to draw on the display. See Display Rendering Engine
for the full drawing API.
font: - file: "gfonts://Roboto" id: roboto_48 size: 48
display: - platform: inkplate model: inkplate6v2 pca6416a_id: pca6416a_hub update_interval: 60s lambda: |- it.fill(COLOR_OFF); it.print(10, 10, id(roboto_48), COLOR_ON, "Hello World!"); it.rectangle(10, 80, 200, 100);Grayscale Rendering
Section titled “Grayscale Rendering”Enable grayscale_mode to draw with 8 gray levels (3-bit). Use color values from 0x00 (black)
to 0xFF (white):
display: - platform: inkplate model: inkplate6v2 pca6416a_id: pca6416a_hub grayscale_mode: true update_interval: 60s lambda: |- it.fill(Color(0xFF, 0xFF, 0xFF)); it.filled_rectangle(0, 0, 100, 100, Color(0x00, 0x00, 0x00)); it.filled_rectangle(100, 0, 100, 100, Color(0x80, 0x80, 0x80));Partial Updates
Section titled “Partial Updates”Set full_update_every to reduce flicker on frequent updates. A full refresh runs every N cycles
to clear ghosting.
WARNING
Partial updates only work in black and white mode (grayscale_mode: false). When grayscale is
enabled, partial updates are silently ignored and every update is a full refresh.
display: - platform: inkplate model: inkplate6v2 pca6416a_id: pca6416a_hub full_update_every: 10 update_interval: 5s lambda: |- it.fill(COLOR_OFF); it.strftime(400, 300, id(roboto_48), COLOR_ON, TextAlign::CENTER, "%H:%M:%S", id(esptime).now());