Inkplate 6, 10 and 6 Plus¶
All-in-one e-paper display Inkplate 6
, Inkplate 10
and Inkplate 6 Plus
.
The Inkplate 6, 10 and 6 Plus are powerful, Wi-Fi enabled ESP32 based six-inch e-paper displays - recycled from a Kindle e-reader. Its main feature is simplicity.
Learn more at Inkplate’s documentation website
# Example minimal configuration entry
mcp23017:
- id: mcp23017_hub
address: 0x20
display:
- platform: inkplate6
id: inkplate_display
greyscale: false
partial_updating: false
update_interval: 60s
model: inkplate_6
ckv_pin: 32
sph_pin: 33
gmod_pin:
mcp23xxx: mcp23017_hub
number: 1
gpio0_enable_pin:
mcp23xxx: mcp23017_hub
number: 8
oe_pin:
mcp23xxx: mcp23017_hub
number: 0
spv_pin:
mcp23xxx: mcp23017_hub
number: 2
powerup_pin:
mcp23xxx: mcp23017_hub
number: 4
wakeup_pin:
mcp23xxx: mcp23017_hub
number: 3
vcom_pin:
mcp23xxx: mcp23017_hub
number: 5
Warning
When using the Inkplate epaper module, the GPIO pin numbers above cannot be changed as they are hardwired within the module/PCB.
Warning
Inkplate module cannot perform partial update if 3 bit mode is on. It just ignores the function call in that case.
Configuration variables:¶
id (Optional, ID): Manually specify the ID used for code generation.
model (Optional, enum): Specify the model. Defaults to
inkplate_6
. -inkplate_6
-inkplate_10
-inkplate_6_plus
-inkplate_6_v2
greyscale (Optional, boolean): Makes the screen display 3 bit colors. Defaults to
false
partial_updating (Optional, boolean): Makes the screen update partially, which is faster, but leaves burnin. Defaults to
false
full_update_every (Optional, int): When partial updating is enabled, forces a full screen update after chosen number of updates. Defaults to
10
lambda (Optional, lambda): The lambda to use for rendering the content on the display. See Display Rendering Engine for more information.
update_interval (Optional, Time): The interval to re-draw the screen. Defaults to
5s
.pages (Optional, list): Show pages instead of a single lambda. See Display Pages.
ckv_pin (Required, Pin): The CKV pin for the Inkplate display.
gmod_pin (Required, Pin): The GMOD pin for the Inkplate display.
gpio0_enable_pin (Required, Pin): The GPIO0 Enable pin for the Inkplate display.
oe_pin (Required, Pin): The OE pin for the Inkplate display.
powerup_pin (Required, Pin): The Powerup pin for the Inkplate display.
sph_pin (Required, Pin): The SPH pin for the Inkplate display.
spv_pin (Required, Pin): The SPV pin for the Inkplate display.
vcom_pin (Required, Pin): The VCOM pin for the Inkplate display.
cl_pin (Optional, Pin): The CL pin for the Inkplate display. Defaults to GPIO0.
le_pin (Optional, Pin): The LE pin for the Inkplate display. Defaults to GPIO2.
display_data_0_pin (Optional, Pin): The Data 0 pin for the Inkplate display. Defaults to GPIO4.
display_data_1_pin (Optional, Pin): The Data 1 pin for the Inkplate display. Defaults to GPIO5.
display_data_2_pin (Optional, Pin): The Data 2 pin for the Inkplate display. Defaults to GPIO18.
display_data_3_pin (Optional, Pin): The Data 3 pin for the Inkplate display. Defaults to GPIO19.
display_data_4_pin (Optional, Pin): The Data 4 pin for the Inkplate display. Defaults to GPIO23.
display_data_5_pin (Optional, Pin): The Data 5 pin for the Inkplate display. Defaults to GPIO25.
display_data_6_pin (Optional, Pin): The Data 6 pin for the Inkplate display. Defaults to GPIO26.
display_data_7_pin (Optional, Pin): The Data 7 pin for the Inkplate display. Defaults to GPIO27.
Complete Inkplate 6 example¶
The following is a complete example YAML configuration that does a few things beyond the usual Wi-Fi, API, and OTA configuration.
# Example configuration entry
esphome:
name: inkplate
esp32:
board: esp-wrover-kit
logger:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap: {}
captive_portal:
ota:
platform: esphome
api:
switch:
- platform: restart
name: "Inkplate Reboot"
id: reboot
- platform: gpio
id: battery_read_mosfet
pin:
mcp23xxx: mcp23017_hub
number: 9
inverted: true
- platform: template
name: "Inkplate Greyscale mode"
lambda: return id(inkplate_display).get_greyscale();
turn_on_action:
- lambda: id(inkplate_display).set_greyscale(true);
turn_off_action:
- lambda: id(inkplate_display).set_greyscale(false);
- platform: template
name: "Inkplate Partial Updating"
lambda: return id(inkplate_display).get_partial_updating();
turn_on_action:
- lambda: id(inkplate_display).set_partial_updating(true);
turn_off_action:
- lambda: id(inkplate_display).set_partial_updating(false);
sensor:
- platform: adc
id: battery_voltage
update_interval: never
attenuation: 12db
pin: 35
- platform: template
name: "Inkplate Battery Voltage"
lambda: |-
id(battery_read_mosfet).turn_on();
delay(1);
float adc = id(battery_voltage).sample();
id(battery_read_mosfet).turn_off();
return adc;
filters:
- multiply: 2
i2c:
mcp23017:
- id: mcp23017_hub
address: 0x20
binary_sensor:
- platform: status
name: "Inkplate Status"
id: system_status
- platform: gpio
name: "Inkplate Touch Pad 1"
pin:
mcp23xxx: mcp23017_hub
number: 10
- platform: gpio
name: "Inkplate Touch Pad 2"
pin:
mcp23xxx: mcp23017_hub
number: 11
- platform: gpio
name: "Inkplate Touch Pad 3"
pin:
mcp23xxx: mcp23017_hub
number: 12
time:
- platform: sntp
id: esptime
font:
- file: "Helvetica.ttf"
id: helvetica_96
size: 96
- file: "Helvetica.ttf"
id: helvetica_48
size: 48
display:
- platform: inkplate6
id: inkplate_display
greyscale: false
partial_updating: false
update_interval: 60s
ckv_pin: 32
sph_pin: 33
gmod_pin:
mcp23xxx: mcp23017_hub
number: 1
gpio0_enable_pin:
mcp23xxx: mcp23017_hub
number: 8
oe_pin:
mcp23xxx: mcp23017_hub
number: 0
spv_pin:
mcp23xxx: mcp23017_hub
number: 2
powerup_pin:
mcp23xxx: mcp23017_hub
number: 4
wakeup_pin:
mcp23xxx: mcp23017_hub
number: 3
vcom_pin:
mcp23xxx: mcp23017_hub
number: 5
lambda: |-
it.fill(COLOR_ON);
it.print(100, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_LEFT, "ESPHome");
it.strftime(400, 300, id(helvetica_48), COLOR_OFF, TextAlign::CENTER, "%Y-%m-%d", id(esptime).now());
it.strftime(400, 400, id(helvetica_96), COLOR_OFF, TextAlign::CENTER, "%H:%M", id(esptime).now());
if (id(system_status).state) {
it.print(700, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_RIGHT, "Online");
} else {
it.print(700, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_RIGHT, "Offline");
}
Inkplate 6 Plus Touchscreen¶
The Inkplate 6 Plus has a built in touchscreen supported by ESPHome. Note you need to enable pin 12 on the mcp23017 to enable the touchscreen Below is a config example with touchscreen power switch:
switch:
- platform: gpio
name: 'Inkplate Touchscreen Enabled'
restore_mode: ALWAYS_ON
pin:
mcp23xxx: mcp23017_hub
number: 12
inverted: true
touchscreen:
- platform: ektf2232
interrupt_pin: GPIO36
rts_pin:
mcp23xxx: mcp23017_hub
number: 10
on_touch:
- logger.log:
format: "touch x=%d, y=%d"
args: ['touch.x', 'touch.y']
Inkplate 6 Plus Backlight¶
The Inkplate 6 Plus has a built in backlight supported by ESPHome. Below is a config example:
power_supply:
- id: backlight_power
keep_on_time: 0.2s
enable_time: 0s
pin:
mcp23xxx: mcp23017_hub
number: 11
output:
- platform: mcp47a1
id: backlight_brightness_output
power_supply: backlight_power
light:
- platform: monochromatic
output: backlight_brightness_output
id: backlight
default_transition_length: 0.2s
name: '${friendly_name} Backlight'
Inkplate 6 v2¶
The Inkplate 6 v2 has a slightly different configuration. The main difference is that it is using pca6416a instead of the mcp23017. Below is a config example:
# Example minimal configuration entry
pca6416a:
- id: pca6416a_hub
address: 0x20
display:
- platform: inkplate6
id: inkplate_display
greyscale: true
partial_updating: false
update_interval: never
model: inkplate_6_v2
ckv_pin: 32
sph_pin: 33
gmod_pin:
pca6416a: pca6416a_hub
number: 1
gpio0_enable_pin:
pca6416a: pca6416a_hub
number: 8
oe_pin:
pca6416a: pca6416a_hub
number: 0
spv_pin:
pca6416a: pca6416a_hub
number: 2
powerup_pin:
pca6416a: pca6416a_hub
number: 4
wakeup_pin:
pca6416a: pca6416a_hub
number: 3
vcom_pin:
pca6416a: pca6416a_hub
number: 5