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
最大工作电流12V/2A 5V/3A
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环境并添加板载包。

tip

如果这是您第一次使用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"库并安装最新版本。
  • 下载Seeed_Arduino_LSM6DS3库作为zip文件,打开Arduino IDE,导航到**Sketch > Include Library > Add .ZIP Library...**并打开下载的zip文件。
note

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

简单示例

步骤1. 硬件准备

Seeed Studio XIAO RP2350XIAO LED驱动板Grove - RGB LED灯条 (15-WS2813 Mini)

步骤 2. 按照下图所示连接 Seeed Studio XIAO RP2350、XIAO LED 驱动板和 Grove - RGB LED 灯条 (15-WS2813 Mini):

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

#include <Adafruit_NeoPixel.h>

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN D5

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 3

// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
pixels.begin(); // INITIALIZE NeoPixel strip object
}

void loop() {
pixels.clear(); // Set all pixel colors to 'off'

// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// The first NeoPixel in a strand is #0, second is 1, all the way up
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() takes brightness values, from 0 up to 255
pixels.setBrightness(255);

pixels.show(); // Send the updated pixel colors to the hardware.

}

上传程序并为LED驱动板供电,如果一切顺利,你可以看到如下效果:

运动-颜色同步LED

步骤 1. 硬件准备

XIAO nRF52840XIAO LED驱动板WS2812 LED

步骤 2. 按照下图所示连接Seeed Studio XIAO nRF52840、XIAO LED驱动板和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;

// 在I2C模式下创建LSM6DS3 IMU实例,地址为0x6A
LSM6DS3 myIMU(I2C_MODE, 0x6A);


void setup() {

Serial.begin(9600);

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

// 初始化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. 点击INSTALL
  • 步骤2. 启用所有选项并点击START

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

温度-颜色同步LED

步骤1. 硬件准备

XIAO ESP32S3XIAO LED驱动板Grove - 温湿度传感器 (DHT11)WS2812 LED

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

步骤3. 打开ESPHome页面,点击**+ NEW DEVICE**

步骤4. 点击CONTINUE

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

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

步骤 7. 点击跳过,因为我们将手动配置这个开发板

步骤 8. 点击新创建的开发板下方的编辑

步骤 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. 点击右上角的安装按钮。然后选择最后一项 手动下载,选择 现代格式

然后需要很长时间来下载和编译,请耐心等待。一切准备就绪后,固件将自动下载到您的计算机。

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

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

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

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

步骤 12. 添加到仪表板

打开 设置 >> 设备和服务,您可以找到您的 ESPhome 设备,点击 添加 并将其添加到仪表板,您可以看到如下效果:

运行 WLED

硬件准备

XIAO ESP32C3LED Driver Board for XIAOWS2812 LED

按如下所示连接 Seeed Studio XIAO nRF52840、LED Driver Board for XIAO 和 WS2812 LED:

安装 WLED

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

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

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

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

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

资源

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...