跳转到内容

SX1509 16 通道 I/O 扩展器(带 LED 驱动器和键盘引擎)

SX1509 组件允许您在 ESPHome 中扩展 I/O 能力:(数据手册SparkFun)。它使用 I²C 总线 进行通信。

配置完成后,您可以将 16 个引脚中的任何一个用于您的项目。在 ESPHome 中,它们模拟真实的内部 GPIO 引脚,因此可以与 ESPHome 的许多组件一起使用,例如 GPIO 二进制传感器或 GPIO 开关。SX1509 不仅能进行简单的数字引脚控制,还可以产生 PWM 信号。此外,它内置了键盘引擎,可以连接最多 64 个按钮,组成 8x8 矩阵。

理论上任何接受 引脚模式 的选项都可以使用,但一些使用引脚模式的复杂组件将无法工作。例如 I²C 或 SPI 引脚。

SX1509 16 通道 I/O 扩展器。
# SX1509 设备的示例配置项
sx1509:
- id: sx1509_hub1
address: 0x3E
# 如果需要键盘功能
keypad:
key_rows: 3
key_columns: 4
sleep_time: 256
scan_time: 2
debounce_time: 1
  • id (必填, ID): 用于此 SX1509 组件的 ID。
  • address (可选, int): 驱动器的 I²C 地址。默认为 0x3E

SX1509 集成了完全可编程的键盘扫描引擎,用于实现键盘应用。支持最多 8x8 矩阵(即 64 个按键)。

  • keypad (可选): 添加此项以启用键盘功能。

    • key_rows (必填, int): 要使用的键盘行数。这会启用前 8 个引脚中的任意数量。例如,值为 3 时启用引脚 0、1、2 作为键盘矩阵的行。此值必须在 2 到 8 之间。

    • key_columns (必填, int): 要使用的键盘列数。这会启用后 8 个引脚中的任意数量。例如,值为 4 时启用引脚 8、9、10、11 作为键盘矩阵的列。此值必须在 1 到 8 之间。

    • sleep_time (可选, int): 在此时间内无按键按下将使键盘引擎进入休眠状态。

    • scan_time (可选, int): 每行扫描时间(必须大于去抖时间)。

    • debounce_time (可选, int): 去抖时间,对所有 IO 通用。

    • keys (可选, string): 矩阵上的按键,从左上到右下,逐行排列。key_collector 需要此项。

    • on_key (可选, 自动化): 当按键被按下时执行的自动化。按键值在名为 x 的变量中。

SX1509 键盘设置的引脚(图片来自数据手册)。

NOTE

使用 按键收集器 组件可以自动处理多个按键(例如 PIN 码输入)。

应注意 I/O 引脚的功能。

I/O输入 输出 PWM
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

要使用键盘上的单个按键,您需要在配置中添加单独的 binary_sensor 条目。

# 键盘按键的单独二进制传感器
binary_sensor:
- platform: sx1509
sx1509_id: sx1509_hub1
name: "keypadkey_0"
row: 0
col: 0
- platform: sx1509
sx1509_id: sx1509_hub1
name: "keypadkey_1"
row: 0
col: 1
  • row (必填, int): 此按键在键盘上的行号。
  • col (必填, int): 此按键在键盘上的列号。

使用以下配置项,您可以将 SX1509 的单个引脚用作 binary_sensor、switch 或 output 的引脚。输出可以进一步用于添加支持 PWM 的灯光,如单色灯光。

# 单独的二进制传感器输入
binary_sensor:
- platform: gpio
name: "SX1509 引脚 #0"
pin:
sx1509: sx1509_hub1
# 使用 SX1509 上的引脚编号 0
number: 0
mode:
input: true
pullup: true
inverted: true
# 单独的二进制输出
switch:
- platform: gpio
name: "SX1509 引脚 #1"
pin:
sx1509: sx1509_hub1
# 使用 SX1509 上的引脚编号 1
number: 1
# 用作开关输出
mode:
output: true
inverted: false
# 单独的输出
output:
- platform: sx1509
sx1509_id: sx1509_hub1
id: 'sx1509_output'
# 使用 SX1509 上的引脚编号 2
pin: 2
# 灯光可以使用配置好的输出
light:
- platform: monochromatic
id: light0
name: "light0"
output: sx1509_output
  • sx1509 (必填, ID): 引脚所属的 SX1509 组件的 ID。

  • number (必填, int): 引脚编号。

  • inverted (可选, boolean): 是否将所有读取和写入的值视为反转。默认为 false

  • mode (可选, string): 为引脚设置的引脚模式。可选值为 INPUTINPUT_PULLUPOUTPUTOUTPUT_OPEN_DRAIN