SX1509 16 通道 I/O 扩展器(带 LED 驱动器和键盘引擎)
组件/集线器
Section titled “组件/集线器”SX1509 组件允许您在 ESPHome 中扩展 I/O 能力:(数据手册,SparkFun)。它使用 I²C 总线 进行通信。
配置完成后,您可以将 16 个引脚中的任何一个用于您的项目。在 ESPHome 中,它们模拟真实的内部 GPIO 引脚,因此可以与 ESPHome 的许多组件一起使用,例如 GPIO 二进制传感器或 GPIO 开关。SX1509 不仅能进行简单的数字引脚控制,还可以产生 PWM 信号。此外,它内置了键盘引擎,可以连接最多 64 个按钮,组成 8x8 矩阵。
理论上任何接受 引脚模式 的选项都可以使用,但一些使用引脚模式的复杂组件将无法工作。例如 I²C 或 SPI 引脚。
# 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的变量中。
-
NOTE
使用 按键收集器 组件可以自动处理多个按键(例如 PIN 码输入)。
应注意 I/O 引脚的功能。
| I/O | 输入 输出 PWM | 行 | 列 |
|---|---|---|---|
| 0 | ✓ | ✓ | |
| 1 | ✓ | ✓ | |
| 2 | ✓ | ✓ | |
| 3 | ✓ | ✓ | |
| 4 | ✓ | ✓ | |
| 5 | ✓ | ✓ | |
| 6 | ✓ | ✓ | |
| 7 | ✓ | ✓ | |
| 8 | ✓ | ✓ | |
| 9 | ✓ | ✓ | |
| 10 | ✓ | ✓ | |
| 11 | ✓ | ✓ | |
| 12 | ✓ | ✓ | |
| 13 | ✓ | ✓ | |
| 14 | ✓ | ✓ | |
| 15 | ✓ | ✓ |
二进制传感器
Section titled “二进制传感器”要使用键盘上的单个按键,您需要在配置中添加单独的 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): 此按键在键盘上的列号。
引脚配置变量
Section titled “引脚配置变量”使用以下配置项,您可以将 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): 为引脚设置的引脚模式。可选值为
INPUT、INPUT_PULLUP、OUTPUT或OUTPUT_OPEN_DRAIN。