跳转到内容

Inkplate 5、6、10 和 6 Plus

All-in-one 电子纸显示 Inkplate 5、Inkplate 6、Inkplate 10 和 Inkplate 6 Plus。

Inkplate 5、6、10 和 6 Plus 是强大的、支持 Wi-Fi 的基于 ESP32 的六英寸电子纸显示 - 源自回收的 Kindle 电子阅读器。其主要特点是简单。

在 Inkplate 文档网站 了解更多信息

Inkplate 6
# 示例最小配置条目
mcp23017:
- id: mcp23017_hub
address: 0x20
display:
- platform: inkplate
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

使用 Inkplate 电子纸模块时,上述 GPIO 引脚编号不能更改,因为它们在 模块/PCB 内部是硬连线的。

WARNING

如果在 3 位模式下,Inkplate 模块无法执行局部更新。 在这种情况下它只是忽略该函数调用。

  • id (可选, ID): 手动指定用于代码生成的 ID。

  • model (可选, enum): 指定型号。默认为 inkplate_6。

    • inkplate_6
    • inkplate_10
    • inkplate_6_plus
    • inkplate_6_v2
    • inkplate_5
    • inkplate_5_v2
  • greyscale (可选, boolean): 使屏幕显示 3 位颜色。默认为 false

  • partial_updating (可选, boolean): 使屏幕部分更新,这样更快,但会留下烧屏。默认为 false

  • custom_waveform (可选, int): 为显示设置自定义预定义波形。接受 1 到 4 的值。如果图像的灰度显得发白则很有用。仅限 Inkplate10。默认为 0

  • full_update_every (可选, int): 启用部分更新时,在指定的更新次数后强制全屏幕更新。默认为 10

  • transform (可选): 转换显示的呈现方式。

    • flip_y (可选, boolean): 沿 Y 轴翻转屏幕。默认为 false
    • flip_x (可选, boolean): 沿 X 轴翻转屏幕。默认为 false
  • lambda (可选, lambda): 用于在显示上渲染内容的 lambda。 更多信息请参见 显示渲染引擎。

  • update_interval (可选, Time): 重新绘制屏幕的间隔。默认为 5s。

  • pages (可选, list): 显示页面而非单个 lambda。请参见 显示页面。

  • ckv_pin (必需, Pin): Inkplate 显示的 CKV 引脚。

  • gmod_pin (必需, Pin): Inkplate 显示的 GMOD 引脚。

  • gpio0_enable_pin (必需, Pin): Inkplate 显示的 GPIO0 使能引脚。

  • oe_pin (必需, Pin): Inkplate 显示的 OE 引脚。

  • powerup_pin (必需, Pin): Inkplate 显示的 Powerup 引脚。

  • sph_pin (必需, Pin): Inkplate 显示的 SPH 引脚。

  • spv_pin (必需, Pin): Inkplate 显示的 SPV 引脚。

  • vcom_pin (必需, Pin): Inkplate 显示的 VCOM 引脚。

  • cl_pin (可选, Pin): Inkplate 显示的 CL 引脚。 默认为 GPIO0。

  • le_pin (可选, Pin): Inkplate 显示的 LE 引脚。 默认为 GPIO2。

  • display_data_0_pin (可选, Pin): Inkplate 显示的 Data 0 引脚。 默认为 GPIO4。

  • display_data_1_pin (可选, Pin): Inkplate 显示的 Data 1 引脚。 默认为 GPIO5。

  • display_data_2_pin (可选, Pin): Inkplate 显示的 Data 2 引脚。 默认为 GPIO18。

  • display_data_3_pin (可选, Pin): Inkplate 显示的 Data 3 引脚。 默认为 GPIO19。

  • display_data_4_pin (可选, Pin): Inkplate 显示的 Data 4 引脚。 默认为 GPIO23。

  • display_data_5_pin (可选, Pin): Inkplate 显示的 Data 5 引脚。 默认为 GPIO25。

  • display_data_6_pin (可选, Pin): Inkplate 显示的 Data 6 引脚。 默认为 GPIO26。

  • display_data_7_pin (可选, Pin): Inkplate 显示的 Data 7 引脚。 默认为 GPIO27。

以下是一个完整的示例 YAML 配置,除了常规的 Wi-Fi、API 和 OTA 配置之外还做了一些事情。

# 示例配置条目
esphome:
name: inkplate
esp32:
board: esp-wrover-kit
cpu_frequency: 240MHz
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
psram:
display:
- platform: inkplate
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 有一个内置触摸屏,ESPHome 支持它。注意你需要在 mcp23017 上启用引脚 12 才能启用触摸屏 以下是一个带触摸屏电源开关的配置示例:

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 有一个内置背光,ESPHome 支持它。 以下是一个配置示例:

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 的配置略有不同。主要区别在于它使用的是 pca6416a 而不是 mcp23017。 以下是一个配置示例:

# 示例最小配置条目
pca6416a:
- id: pca6416a_hub
address: 0x20
display:
- platform: inkplate
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

Inkplate 5 的配置与 inkplate 6 v2 几乎相同。 以下是一个配置示例:

# 示例最小配置条目
pca6416a:
- id: pca6416a_hub
address: 0x20
display:
- platform: inkplate
id: inkplate_display
greyscale: true
partial_updating: false
update_interval: never
model: inkplate_5 # 或 inkplate_5_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

Inkplate 10 的配置与 5 和 6 类似,不同之处在于它有 2 个扩展器,并且电池读取 MOSFET 没有反转。此外,某些版本具有嵌入式 RTC 以辅助时钟同步。 以下是一个配置示例:

time:
- platform: pcf85063
id: esptime
# 除非外部 RTC
# 比内部时钟准确得多,否则无需重复同步
update_interval: never
- platform: homeassistant
# 改为尝试通过网络重复同步……
on_time_sync:
then:
# ……并在同步成功时更新 RTC
pcf85063.write_time:
pca6416a:
- id: pca6416a_hub
address: 0x20
# 用于显示控制和附加 I/O 的主扩展器
- id: pca6416a_hub2
address: 0x21
# 用于附加 I/O 的辅助扩展器
switch:
- platform: gpio
id: battery_read_mosfet
pin:
pca6416a: pca6416a_hub
number: 9
sensor:
- platform: adc
id: battery_voltage
update_interval: never
attenuation: 12db
pin: 35
- platform: template
name: "Inkplate Battery Voltage"
unit_of_measurement: "V"
accuracy_decimals: 3
lambda: |-
// 启用 MOSFET 以连接电池电压分压器
id(battery_read_mosfet).turn_on();
// 等待电压稳定
delay(5);
// 采样 ADC 值
float adc = id(battery_voltage).sample();
// 禁用 MOSFET 以节省功耗
id(battery_read_mosfet).turn_off();
return adc;
filters:
- multiply: 2 # 补偿电压分压器(1:2 比例)
display:
- platform: inkplate
id: inkplate_display
greyscale: true
partial_updating: false
update_interval: never
model: inkplate_10
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