Skip to main content

XIAO 的 LED 驱动板入门指南


XIAO 的 LED 驱动板是一款紧凑而强大的解决方案,支持 5V 和 12V LED 灯条,包括流行的可寻址 RGB LED,如 NeoPixel WS2812、WS2813、WS2815。它兼容所有 XIAO 板,通过使用 XIAO ESP32 系列实现 WLED 和 Home Assistant 的智能控制和自动化,同时提供灵活的电源选项和全面的保护,确保您的照明设置安全可靠。

简介

特性

规格

项目详情
电源输入DC 12V/2A
LED 电源支持DC 12V / DC 5V
工作电流工作电流
LED 连接器4 针 3.81mm 螺丝端子块连接器:
12V | 5V | A0 | GND
Grove I²C 连接器D5 | D4 | 5V | GND
用户按钮D3
用户针脚SPI x1, Uart x1, Digital x2

硬件概览

适配电源输入

支持的 LED 指南

入门指南

此 LED 驱动板专为 Seeed Studio XIAO 系列设计。其功能因搭配的 XIAO 微控制器而异。例如,与 XIAO nRF52840 配合使用时,可以读取板载 IMU 数据以动态改变 LED 颜色。与 ESP32 系列板搭配时,可以集成到 Home Assistant 中,实现无缝智能家居控制。此外,与 XIAO ESP32-C3 配合使用时,它支持运行 WLED 以实现高级 LED 效果。请按照以下教程详细探索这些功能。

使用 Arduino

您需要为 XIAO 配置 Arduino 环境并添加板载包。

:::提示 如果这是您第一次使用 Arduino,我们强烈建议您参考 Arduino 入门指南。 :::

软件准备

步骤 1. 启动 Arduino 应用程序。

步骤 2. 选择您的开发板型号并将其添加到 Arduino IDE。

  • 如果您希望使用 Seeed Studio XIAO SAMD21 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO RP2040 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO RP2350 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO nRF52840 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO ESP32C3 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO ESP32C6 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO ESP32S3 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO RA4M1 进行后续操作,请参考 此教程 完成添加。

  • 如果您希望使用 Seeed Studio XIAO MG24 进行后续操作,请参考 此教程 完成添加。

步骤 3. 安装所需的库。

  • 打开 Arduino IDE,导航到 Sketch > Include Library > Manage Libraries...,在 Arduino 库管理器中搜索库,输入关键字 "Adafruit_NeoPixel",并安装最新版本。

:::注意

MG24 当前不支持标准 NeoPixel 库。然而,Silicon Labs 在官方 MG24 核心中提供了一个替代方案:ezWS2812 驱动程序,该驱动程序通过硬件 SPI 或 GPIO 支持 WS2812 LED。您可以在 这里 找到更多详细信息。

:::

简单示例

步骤 1. 硬件准备

Seeed Studio XIAO RP2350适用于 XIAO 的 LED 驱动板Grove - RGB LED Stick (15-WS2813 Mini)

步骤 2. 按如下所示连接 Seeed Studio XIAO RP2350、LED 驱动板(适用于 XIAO)和 Grove - RGB LED Stick (15-WS2813 Mini):

步骤 3. 以下示例程序用于控制包含 3 个 NeoPixel 的 LED,使每个灯珠分别显示 红色绿色蓝色

#include <Adafruit_NeoPixel.h>

// Arduino 上连接到 NeoPixel 的引脚
#define PIN D5

// 连接到 Arduino 的 NeoPixel 数量
#define NUMPIXELS 3

// 在设置 NeoPixel 库时,我们需要告诉它像素数量和使用的引脚。
// 注意,对于较旧的 NeoPixel 灯条,可能需要更改第三个参数 ——
// 请参阅 strandtest 示例以获取更多可能值的信息。
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin(); // 初始化 NeoPixel 灯条对象
}

void loop() {
pixels.clear(); // 将所有像素颜色设置为“关闭”

// pixels.Color() 接受 RGB 值,范围从 0,0,0 到 255,255,255
// 灯条中的第一个 NeoPixel 是 #0,第二个是 1,以此类推
pixels.setPixelColor(0, pixels.Color(255, 0, 0));
pixels.setPixelColor(1, pixels.Color(0, 255, 0));
pixels.setPixelColor(2, pixels.Color(0, 0, 255));
// pixels.setBrightness() 接受亮度值,范围从 0 到 255
pixels.setBrightness(255);

pixels.show(); // 将更新后的像素颜色发送到硬件
}

上传程序并为 LED 驱动板供电,如果一切正常,您将看到如下效果:

动作-颜色同步 LED

步骤 1. 硬件准备

XIAO nRF52840LED 驱动板(适用于 XIAO)WS2812 LED

步骤 2. 按如下所示连接 Seeed Studio XIAO nRF52840、LED 驱动板(适用于 XIAO)和 WS2812 LED:

步骤 3. 以下代码通过读取 XIAO nRF52840 板载 LSM6DS3 加速度传感器的数据,并根据当前加速度值实时更改 LED 灯条的颜色。

#include <Arduino.h>
#include "LSM6DS3.h"
#include <Adafruit_NeoPixel.h>
#include "Wire.h"
#include "math.h"

// 定义连接到 NeoPixel 数据输入的引脚
#define PIN A0

// NeoPixel LED 的总数量
#define NUMPIXELS 300

// 创建一个 NeoPixel 灯条对象
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

// 加速度计数据变量
float ax = 0;
float ay = 0;
float az = 0;

// RGB 颜色分量
uint8_t r = 0;
uint8_t g = 0;
uint8_t b = 0;

// 打包的 24 位 RGB 颜色值
uint32_t packedRGB = 0;

// 创建一个 LSM6DS3 IMU 的实例,使用 I2C 模式,地址为 0x6A
LSM6DS3 myIMU(I2C_MODE, 0x6A);

void setup() {

Serial.begin(9600);

// 初始化 IMU 传感器并检查错误
if (myIMU.begin() != 0) {
Serial.println("设备错误");
} else {
Serial.println("设备正常!");
}

// 初始化 NeoPixel 灯条
pixels.begin();
}

void loop() {
// 从 IMU 读取加速度值
ax = myIMU.readFloatAccelX();
ay = myIMU.readFloatAccelY();
az = myIMU.readFloatAccelZ();

// 将加速度值(-1g 到 +1g)映射到 RGB 值(0 到 255)
// 以 128 为中心,允许正负变化
r = constrain(ax * 100 + 128, 0, 255);
g = constrain(ay * 100 + 128, 0, 255);
b = constrain(az * 100 + 128, 0, 255);

// 将 RGB 分量组合成一个 24 位颜色值
packedRGB = (r << 16) | (g << 8) | b;

// 清除所有现有像素
pixels.clear();

// 用计算出的颜色填充所有 LED
pixels.fill(packedRGB, 0, NUMPIXELS);
pixels.setBrightness(255);
pixels.show();
delay(100);
}

上传程序并为 LED 驱动板供电,如果一切正常,您将看到如下效果:

当你摇动模块时,灯带的颜色会发生变化。摇动越剧烈,颜色越亮。

使用 ESPHome 与 Home Assistant 互动

硬件准备

Home Assistant 设备

软件准备

ESPHome 是一个旨在让管理 ESP 板尽可能简单的工具。它读取 YAML 配置文件并创建自定义固件,然后安装到你的 ESP 设备上。在 ESPHome 的配置中添加的设备或传感器会自动显示在 Home Assistant 的用户界面中。ESPHome 可以帮助你连接并将数据发送到 Home Assistant 设备。

note

如果这是你第一次使用 Home Assistant 和 ESPHome,可以按照 这里 的分步指南安装 Home Assistant。

ESPHome 可作为 Home Assistant 插件,可以通过插件商店轻松安装。

  • 步骤 1. 点击 安装
  • 步骤 2. 启用所有选项并点击 启动

如果 ESPHome 成功加载,你将看到以下窗口:

温度-颜色同步 LED

步骤 1. 硬件准备

XIAO ESP32S3LED 驱动板(适用于 XIAO)Grove - 温湿度传感器 (DHT11)WS2812 LED

步骤 2. 按如下所示连接 Seeed Studio XIAO ESP32S3、LED 驱动板和 WS2812 LED:

步骤 3. 打开 ESPHome 页面,点击 + 新设备

步骤 4. 点击 继续

步骤 5. 为设备输入一个 名称,并输入 WiFi 凭据,例如 网络名称密码。然后点击 下一步

步骤 6. 选择 ESP32-S3 并点击

步骤 7. 点击 SKIP,因为我们将手动配置此开发板。

步骤 8. 点击新创建的开发板下的 EDIT

步骤 9. 将以下代码复制到 .yaml 文件的末尾,XIAO ESP32S3 从 DHT11 传感器读取温度,并根据温度与目标值的差异改变 RGB LED 的颜色,使用蓝色表示冷,红色表示热,绿色表示正常。

# DHT11 温湿度传感器
sensor:
- platform: dht
pin: GPIO6
model: DHT11 # 如果使用其他型号,请更改为 DHT22 或 AM2302
temperature:
name: "Temperature"
id: temp_sensor
humidity:
name: "Humidity"
update_interval: 3s # 每 3 秒读取新值

# RGB LED (WS2812 单颗 LED)
light:
- platform: neopixelbus
variant: ws2813 # ⚠️ 根据实际 LED 类型调整 (例如 ws2812, ws2813, sk6812)
type: GRB # 颜色顺序 (绿色-红色-蓝色)
pin: GPIO1
num_leds: 50 # NeoPixel LED 的总数量
name: "Temperature Color LED"
id: rgb_led
restore_mode: ALWAYS_ON
default_transition_length: 0s

# 可调节的中心温度阈值
number:
- platform: template
name: "Target Temperature" # 中心温度值
id: target_temp
optimistic: true
min_value: 0
max_value: 40
step: 0.1
initial_value: 20.0 # 默认中心温度 (°C)

- platform: template
name: "Temperature Tolerance" # 中心温度的容差
id: temp_tolerance
optimistic: true
min_value: 0
max_value: 10
step: 0.1
initial_value: 5.0 # 默认容差值 (°C)

# 每 3 秒更新 LED 颜色:
# - 如果温度低于中心值减去容差,显示蓝色;
# - 如果温度高于中心值加上容差,显示红色;
# - 如果温度接近中心值,显示绿色;
# - 在过渡范围内显示蓝-绿-红的渐变;
# - 如果温度不可用,LED 闪烁紫色以指示传感器错误。

interval:
- interval: 3s
then:
- lambda: |-
float t = id(temp_sensor).state;
float center = id(target_temp).state;
float tolerance = id(temp_tolerance).state;
float r = 0.0, g = 0.0, b = 0.0;
float ratio = 0.0;

if (isnan(t)) {
// 闪烁紫色以指示温度缺失
static bool blink = false;
blink = !blink;
auto call = id(rgb_led).turn_on();
call.set_rgb(blink ? 0.5 : 0.0, 0.0, blink ? 0.5 : 0.0);
call.perform();
return;
}

// 根据温度计算 RGB 值
if (t <= (center - tolerance)) {
b = 1.0;
g = 0.0;
} else if (t >= (center + tolerance)) {
r = 1.0;
g = 0.0;
} else if (t <= center) {
ratio = (center - t) / tolerance;
b = ratio;
g = 1.0 - ratio;
} else {
ratio = (t - center) / tolerance;
r = ratio;
g = 1.0 - ratio;
}

// 更新 LED
auto call = id(rgb_led).turn_on();
call.set_rgb(r, g, b);
call.perform();

步骤 10. 点击右上角的 Install 按钮。然后选择最后一项 Manual download,选择 Modern format

此过程需要较长时间来下载和编译,请耐心等待。一旦准备就绪,固件将自动下载到您的计算机。

步骤 11. 使用 ESPhome Web 工具 将固件上传到 XIAO ESP32S3,点击 CONNECT

在弹出窗口中选择 XIAO ESP32 的串口,点击 INSTALL,然后选择从上述步骤下载的 .bin 文件。

步骤 11. 安装成功后,您可以看到如下界面:

当冷空气吹向温湿度传感器时,随着温度下降,灯带的颜色会逐渐从红色变为蓝色。

步骤 12. 添加到 Dashboard

打开 Setting >> Devices & Services,您可以找到您的 ESPhome 设备,点击 ADD 并将其添加到仪表盘,您可以看到如下界面:

运行 WLED

硬件准备

XIAO ESP32C3适用于 XIAO 的 LED 驱动板WS2812 LED

将 Seeed Studio XIAO nRF52840、适用于 XIAO 的 LED 驱动板和 WS2812 LED 按如下所示连接:

安装 WLED

步骤 1. 打开 WLED 安装网页,将 XIAO ESP32C3 连接到您的电脑,点击 Install,选择您的端口。

步骤 2. 安装成功后,需要配置设备的 WiFi,建议将您的 XIAO ESP32C3 和您的电脑/手机保持在同一局域网内。

步骤 3. 现在,您可以点击 VISIT DEVICE 来控制您的 LED 灯带。

步骤 4. 或者,您可以在手机应用市场安装 WLED 应用,并通过软件右上角的 + 号找到您的 LED 设备。

如果一切正常,您将看到如下效果:

资源

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供多种支持,以确保您使用我们的产品时获得流畅的体验。我们提供多个沟通渠道,以满足不同的偏好和需求。

Loading Comments...