跳转到内容

ST7567 LCD 图形显示

st7567 显示平台允许你使用基于 Sitronix ST7567 芯片系列的 128x64 显示模块(ST7567A、ST7567S、ST7567G 等)(数据手册、 Sitronix)配合 ESPHome。

注意,此组件用于通过 I²C 总线(参见 通过 I²C) 或 3 线或 4 线 SPI 总线(参见 通过 SPI)连接的显示。 它是一种单色 LCD 图形显示。

基于 ST7567A 的 LCD 图形显示(I²C)

NOTE

电压: 检查你的模块规格了解所需的电源。大多数模块对 3.3V 到 5V 的电压范围都能耐受,但有些可能需要 5V 或 3.3V。

电气干扰: 为减少噪声引起的故障,数据手册建议”在指定间隔内定期使用刷新序列”。

没人知道确切的间隔是什么 —— 它根据你的电气环境而变化 —— 例如,有些可能需要每小时一次。 如果不执行刷新序列,LCD 上的图像一段时间后可能会出现问题。

你可以使用 interval: 部分并调用 request_refresh() 函数来计划刷新,之后它将在下次组件更新时执行显示 刷新序列。

将模块上的 SDA 和 SCL 引脚连接到为 I²C 总线 选择的引脚。 如果你的显示模块有 RESET 引脚,你可以选择将它连接到 ESP 的引脚,这可能 提高可靠性。对于电源,连接 VCC 到 3.3V,GND 到 GND。

# 示例最小配置条目
i2c:
sda: D1
scl: D2
display:
- platform: st7567_i2c
id: my_display
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
interval:
- interval: 1h
then:
- lambda: id(my_display).request_refresh();
  • address (可选, int): 手动指定显示的 I²C 地址。默认为 0x3F。

  • i2c_id (可选, ID): 如果你想 使用多个 I²C 总线,请手动指定 I²C 组件 的 ID。

  • reset_pin (可选, Pin Schema): RESET 引脚。默认为未连接。

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

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

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

  • lambda (可选, lambda): 用于在显示上渲染内容的 lambda。

  • invert_colors (可选, boolean): 显示硬件颜色反转。默认为 false。

  • rotation (可选): 设置显示的旋转角度。你在 lambda: 中绘制的一切都将 根据此选项进行旋转。可选值为 0°(默认)、90°、180°、270°。

  • transform (可选): 使用硬件转换显示。所有默认值均为 false。

    • mirror_x (可选, boolean): 如果为 true,则镜像物理 X 轴。
    • mirror_y (可选, boolean): 如果为 true,则镜像物理 Y 轴。

加速总线: 为了加速显示更新过程,你可以选择更高的 I²C 频率,例如:

# 示例提高 I²C 总线速度
i2c:
sda: D1
scl: D2
frequency: 400kHz

硬件旋转: 180 度旋转可以在硬件中实现,如下面的示例所示:

# 使用 transform 部分通过硬件实现 180° 旋转的示例
display:
- platform: st7567_i2c
id: my_display
transform:
mirror_x: true
mirror_y: true
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");

将 D0 连接到为 SPI 总线 选择的 CLK 引脚,将 D1 连接到 MOSI 引脚,并将 DC 和 CS 连接到 ESP 上的某些 GPIO 引脚。对于电源,连接 VCC 到 3.3V,GND 到 GND。 你还可以选择将 RESET 引脚连接到 ESP 的引脚,这可能提高可靠性。

# 示例最小配置条目
spi:
clk_pin: D1
mosi_pin: D2
display:
- platform: st7567_spi
id: my_display
dc_pin: D3
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
interval:
- interval: 1h
then:
- lambda: id(my_display).request_refresh();
  • dc_pin (必需, Pin Schema): DC 引脚。

  • cs_pin (可选, Pin Schema): 片选(CS)引脚。

  • reset_pin (可选, Pin Schema): RESET 引脚。默认为未连接。

  • spi_id (可选, ID): 如果你想 使用多个 SPI 总线,请手动指定 SPI 组件 的 ID。

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

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

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

  • lambda (可选, lambda): 用于在显示上渲染内容的 lambda。

  • invert_colors (可选, boolean): 显示硬件颜色反转。默认为 false。

  • rotation (可选): 设置显示的旋转角度。你在 lambda: 中绘制的一切都将 根据此选项进行旋转。可选值为 0°(默认)、90°、180°、270°。

  • transform (可选): 使用硬件转换显示。所有默认值均为 false。

    • mirror_x (可选, boolean): 如果为 true,则镜像物理 X 轴。
    • mirror_y (可选, boolean): 如果为 true,则镜像物理 Y 轴。

硬件旋转: 180 度旋转可以在硬件中实现,如下面的示例所示:

# 使用 transform 部分通过硬件实现 180° 旋转的示例
display:
- platform: st7567_spi
id: my_display
dc_pin: D3
transform:
mirror_x: true
mirror_y: true
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");