I²C 总线
此组件为您的 ESP32、ESP8266、RP2040 或 NRF52 设置 I²C 总线。为了让这些组件 正常工作,您需要在配置中定义 I²C 总线。在 ESP32 上(Arduino 和 ESP-IDF 框架),默认启用内部上拉电阻。在 ESP8266 上,内部 10kΩ 上拉电阻始终启用。对于较长的线路或多个设备,仍然建议使用外部上拉。 您可以在一个 I²C 总线上使用多个设备,因为每个设备都有 一个唯一地址用于它与 ESP 之间的通信。您可以通过将两根线(SDA 和 SCL)从每个设备板跳线到下一个设备板,或 将每个设备的线连接回 ESP 上的两个 I²C 引脚来做到这一点。
# ESP32 示例配置项i2c: sda: GPIOXX scl: GPIOXX scan: true id: bus_a-
sda (Optional, Pin): I²C 总线数据线的引脚。 默认为您板子的默认值(通常 ESP32 为 GPIO21,ESP8266 为 GPIO4)。
-
scl (Optional, Pin): I²C 总线时钟线的引脚。 默认为您板子的默认值(通常 ESP32 为 GPIO22, ESP8266 为 GPIO5)。
-
scan (Optional, boolean): ESPHome 是否应在启动时搜索 I²C 地址空间。 默认为
true。 -
frequency (Optional, frequency): 设置 I²C 总线应运行的频率。 默认为
50kHz。NRF52 的默认值为100kHz。值为10kHz、50kHz、100kHz、200kHz…800kHz。 NRF52 仅支持100kHz和400kHz。 -
timeout (Optional, Time): 设置 I²C 总线超时。 默认为框架默认值(
esp32上为100us,esp8266上为1s,rp2040上为1s)。esp32上最大为 13ms。 -
sda_pullup_enabled (Optional, boolean): 启用 SDA 引脚的内部上拉电阻。 默认为
true。仅适用于 ESP32。 -
scl_pullup_enabled (Optional, boolean): 启用 SCL 引脚的内部上拉电阻。 默认为
true。仅适用于 ESP32。 -
low_power_mode (Optional, boolean): 启用低功耗(仅主机)I²C 总线。 仅适用于 ESP32C5、ESP32C6 和 ESP32P4。除非需要,否则默认为
false。 -
id (Optional, ID): 如果需要多个 I²C 总线,手动为此 I²C 总线指定 ID。
NOTE
如果设备可以支持多个 I²C 总线,这些总线需要按如下方式定义,传感器需要指定正确的总线进行设置:
# 示例配置项i2c: - id: bus_a sda: GPIOXX scl: GPIOXX scan: true - id: bus_b sda: GPIOXX scl: GPIOXX scan: true# 传感器应按如下方式指定sensor: - platform: bme680 i2c_id: bus_b address: 0x76# ...有关 I²C 多路复用,请参阅 Tca9548A。