NeoPixelBus 灯
WARNING
NeoPixelBus 无法与 ESP-IDF 配合使用。
对于无时钟灯,您可以使用 Esp32 Rmt Led Strip,对于 SPI LED,请参见 Spi Led Strip。
neopixelbus 灯光平台允许您在 ESPHome 中为可单独寻址的灯(如 NeoPixel 或 WS2812)创建 RGB 灯。
它与 Fastled 平台非常相似。 实际上,大多数可寻址灯都可以通过两个灯光平台支持。 区别在于它们使用不同的库:fastled 平台使用 FastLED 库,而此组件内部使用 NeoPixelBus 库。
# 配置示例light: - platform: neopixelbus type: GRB variant: WS2811 pin: GPIOXX num_leds: 60 name: "NeoPixel Light"基本选项:
- num_leds (必需, 整数): 连接的 LED 数量。
类型选项:
-
type (可选, 字符串): 灯的类型。用于指定它是 RGBW 还是 RGB 灯以及颜色的顺序。默认为
GRB。如果您有带白色通道的灯和/或颜色顺序错误,请更改此选项。 -
variant (必需, 字符串): 灯的芯片组。
支持以下选项:
800KBPS(通用选项,推荐用于没有明确支持的芯片组)400KBPSWS2811WS2812WS2812XWS2813SK6812TM1814TM1829TM1914APA106LC8812
此外,还支持以下双线芯片组(设置
data_pin和clock_pin):WS2801DotStarLPD6803LPD8806P9813
-
method (可选, 字符串): 用于传输数据的方法。默认情况下,ESPHome 将尝试使用此芯片组、ESP 平台和给定引脚可用的最佳方法。更多信息请参见方法。
-
invert (可选, 布尔值): 反转数据输出,用于 n 型晶体管。默认为
no。
引脚选项:
某些芯片组有两个数据引脚需要连接,其他只有一个。如果您有一根线,只需指定 pin,否则同时指定 clock_pin 和 data_pin。
WARNING
在 ESP8266 上,强烈建议将灯带连接到引脚 GPIO3 以减少闪烁。
NeoPixelBus 支持不同的方法将像素数据传输到灯带,具体取决于芯片组、ESP 平台和引脚。
每种方法在稳定性和速度方面都有自己的优缺点。默认情况下,ESPHome 将选择设备上可用的最佳方法。但是,您可以通过手动提供 method 选项来覆盖此设置。
light: - platform: neopixelbus # ... method: type: esp8266_uart bus: 0 async: false使用 type 配置变量选择使用的方法。其他配置设置因方法而异:
-
bit_bang: 最简单的方法,在所有平台上可用。但是,它可能会产生相当多的闪烁,因此不推荐使用。在 ESP8266 上,支持引脚 GPIO0-GPIO15,在 ESP32 上支持引脚 GPIO0-GPIO31。
-
esp8266_dma: ESP8266 的推荐方法。仅在引脚 GPIO3 上可用。
-
esp8266_uart: ESP8266 的替代方法,使用 UART 外设发送数据。在引脚 GPIO1 上可用于总线 0,在引脚 GPIO2 上可用于总线 1。其他选项:
-
bus (可选, 整数): 要使用的 UART 总线。如果为 0,记录器
baud_rate选项必须设置为 0,并且通过 USB/串口的日志将无法工作。 -
async (可选, 布尔值): 使用异步传输。默认为
false。如果启用,即使使用总线 1,也必须禁用记录器。
-
-
esp32_i2s: ESP32 的推荐方法,但在 ESP32-C3 或 ESP32-S3 上不可用。在所有输出引脚上可用。其他选项:
- bus (可选): 要使用的 I2S 总线。ESP32 有总线 0 或 1 可用,但 ESP32-S2 只有总线 0。可选
0、1、dynamic。
- bus (可选): 要使用的 I2S 总线。ESP32 有总线 0 或 1 可用,但 ESP32-S2 只有总线 0。可选
-
esp32_rmt: ESP32 的替代方法,使用 RMT 外设发送数据。在所有输出引脚上可用。其他选项:
- channel (可选): 要使用的 RMT 通道。ESP32 有通道 0-7,ESP32-C3 有 0-1,ESP32-S2 有 0-3,ESP32-S3 有 0-3。在 ESP32 上默认为 6,在其他 ESP32 变体上默认为 1。
以下方法仅适用于双线芯片(指定 data_pin 和 clock_pin):
-
spi: 使用硬件 SPI 接口传输数据。在两个 ESP 平台上可用。其他选项:
- bus (可选, 字符串): 在 ESP32 上可以选择要使用的 SPI 总线。可选
vspi和hspi。 - speed (可选, 整数): 发送数据的频率。默认为
10MHz。可选40MHz、20MHz、10MHz、5MHz、2MHz、1MHz、500KHz。
在 ESP8266 上,
data_pin只能使用 GPIO13,clock_pin只能使用 GPIO14。 - bus (可选, 字符串): 在 ESP32 上可以选择要使用的 SPI 总线。可选
出于历史原因,method 键也接受由单个值组成的简写语法。不再推荐使用此方法,但在此记录以供参考。可能的值有:
ESP8266_DMA(用于esp8266_dma)ESP8266_UART0(用于总线 0 上的esp8266_uart)ESP8266_UART1(用于总线 1 上的esp8266_uart)ESP8266_ASYNC_UART0(用于总线 0 上启用 async 的esp8266_uart)ESP8266_ASYNC_UART1(用于总线 1 上启用 async 的esp8266_uart)ESP32_I2S_0(用于总线 0 上的esp32_i2s)ESP32_I2S_1(用于总线 1 上的esp32_i2s)BIT_BANG(用于bit_bang)