跳转到内容

Inkplate 5、6、10 和 6 Plus

一体化电子墨水屏显示屏 Inkplate 5Inkplate 6Inkplate 10Inkplate 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 (可选, 枚举):指定型号。默认为 inkplate_6

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

  • partial_updating (可选, 布尔值):使屏幕部分更新,速度更快,但会留下残影。默认为 false

  • custom_waveform (可选, int):为显示屏设置自定义预定义波形。接受 1 到 4 的值。如果图像的灰度看起来太淡,这很有用。仅限 Inkplate10。默认为 0

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

  • transform (可选):变换显示屏显示。

    • flip_y (可选, 布尔值):在 Y 轴上翻转屏幕。默认为 false
    • flip_x (可选, 布尔值):在 X 轴上翻转屏幕。默认为 false
  • lambda (可选, lambda):用于在显示屏上渲染内容的 lambda。 详见显示渲染引擎

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

  • pages (可选, 列表):显示页面而不是单个 lambda。详见显示页面

  • ckv_pin (必填, 引脚):Inkplate 显示屏的 CKV 引脚。

  • gmod_pin (必填, 引脚):Inkplate 显示屏的 GMOD 引脚。

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

  • oe_pin (必填, 引脚):Inkplate 显示屏的 OE 引脚。

  • powerup_pin (必填, 引脚):Inkplate 显示屏的 Powerup 引脚。

  • sph_pin (必填, 引脚):Inkplate 显示屏的 SPH 引脚。

  • spv_pin (必填, 引脚):Inkplate 显示屏的 SPV 引脚。

  • vcom_pin (必填, 引脚):Inkplate 显示屏的 VCOM 引脚。

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

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

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

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

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

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

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

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

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

  • display_data_7_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