Inkplate 6

All-in-one e-paper display Inkplate 6 Inkplate 6 is a powerful, Wi-Fi enabled ESP32 based six-inch e-paper display – recycled from a Kindle e-reader. Its main feature is simplicity. Learn more at Inkplate’s website

../../_images/Inkplate.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

  ckv_pin: 32
  sph_pin: 33
  gmod_pin:
    mcp23017: mcp23017_hub
    number: 1
  gpio0_enable_pin:
    mcp23017: mcp23017_hub
    number: 8
  oe_pin:
    mcp23017: mcp23017_hub
    number: 0
  spv_pin:
    mcp23017: mcp23017_hub
    number: 2
  powerup_pin:
    mcp23017: mcp23017_hub
    number: 4
  wakeup_pin:
    mcp23017: mcp23017_hub
    number: 3
  vcom_pin:
    mcp23017: 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.

  • 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 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
  platform: ESP32
  board: esp-wrover-kit

logger:

wifi:
  ssid: <YOUR WIFI SSID>
  password: <YOUR WIFI PASSWORD>
  ap:
    ssid: Inkplate-AP
    password: '12345678'

captive_portal:

ota:

api:

switch:
  - platform: restart
    name: "Inkplate Reboot"
    id: reboot

  - platform: gpio
    id: battery_read_mosfet
    pin:
      mcp23017: 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: 11db
    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:
      mcp23017: mcp23017_hub
      number: 10
  - platform: gpio
    name: "Inkplate Touch Pad 2"
    pin:
      mcp23017: mcp23017_hub
      number: 11
  - platform: gpio
    name: "Inkplate Touch Pad 3"
    pin:
      mcp23017: 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:
    mcp23017: mcp23017_hub
    number: 1
  gpio0_enable_pin:
    mcp23017: mcp23017_hub
    number: 8
  oe_pin:
    mcp23017: mcp23017_hub
    number: 0
  spv_pin:
    mcp23017: mcp23017_hub
    number: 2
  powerup_pin:
    mcp23017: mcp23017_hub
    number: 4
  wakeup_pin:
    mcp23017: mcp23017_hub
    number: 3
  vcom_pin:
    mcp23017: 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");
    }