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

../../_images/inkplate6.jpg

Inkplate 6

# 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

See Also