如果你的风扇 RGB 是 5V 3Pin(可寻址 ARGB),那它大概率使用 WS2812B 或 SK6812 协议。这种灯带的每个 LED 都有自己的控制芯片,可以用 ESP8266 直接控制,而不需要 MOSFET 或三极管。


📌 1. 硬件连接

颜色 功能 ESP8266 连接
5V(红) 供电 ESP8266 5V外部 5V
GND(黑) 接地 ESP8266 GND
Data(绿/白) 数据信号 ESP8266 D4 (GPIO2)
  • 注意⚠️

    • 如果风扇 只支持 5V 信号,ESP8266 直接连接 Data 即可

    • 如果风扇 需要 5V 信号电平(ESP8266 只输出 3.3V),可以用 逻辑电平转换器(3.3V -> 5V)


📜 2. 安装 FastLED 库

  1. 打开 Arduino IDE

  2. 点击工具管理库

  3. 搜索:"FastLED",然后安装


📜 3. 基础代码

功能: 让风扇 RGB 依次变换颜色(红 -> 绿 -> 蓝)

#include <FastLED.h>

#define LED_PIN     2   // D4 (GPIO2)
#define NUM_LEDS    16  // 你的风扇 LED 数量

CRGB leds[NUM_LEDS];

void setup() {
    FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
    FastLED.clear();
    FastLED.show();
}

void loop() {
    // 依次变换颜色
    leds[0] = CRGB::Red;
    leds[1] = CRGB::Green;
    leds[2] = CRGB::Blue;
    FastLED.show();
    delay(1000);
}

📜 4. WiFi 远程控制 RGB 颜色

我们可以让 ESP8266 运行一个 Web 服务器,这样你就可以用手机或电脑通过 HTTP 请求 控制风扇灯的颜色!

✅ 代码

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <FastLED.h>

#define LED_PIN 2      // D4 (GPIO2)
#define NUM_LEDS 16    // 你的风扇灯珠数量
CRGB leds[NUM_LEDS];

const char* ssid = "yang1234";       // WiFi 名称
const char* password = "y123456789"; // WiFi 密码

ESP8266WebServer server(80);

void setColor(int r, int g, int b) {
    for (int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CRGB(r, g, b);
    }
    FastLED.show();
}

void handleSetRGB() {
    if (server.hasArg("r") && server.hasArg("g") && server.hasArg("b")) {
        int r = server.arg("r").toInt();
        int g = server.arg("g").toInt();
        int b = server.arg("b").toInt();
        setColor(r, g, b);
        server.send(200, "text/plain", "RGB set to: " + String(r) + "," + String(g) + "," + String(b));
    } else {
        server.send(400, "text/plain", "Missing 'r', 'g', 'b' parameters");
    }
}

void setup() {
    Serial.begin(115200);
    
    FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
    FastLED.clear();
    FastLED.show();

    WiFi.begin(ssid, password);
    Serial.print("Connecting to WiFi...");
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\nWiFi Connected!");
    Serial.println(WiFi.localIP());

    server.on("/setRGB", HTTP_GET, handleSetRGB);
    server.begin();
}

void loop() {
    server.handleClient();
}

📡 5. 远程控制 RGB

1️⃣ 获取 ESP8266 的 IP 地址

  • 串口监视器 (115200 baud) 中会显示 WiFi Connected! IP: 192.168.1.xxx

  • 记下这个 IP 地址,例如 192.168.31.100

2️⃣ 在浏览器或 Postman 访问

http://192.168.31.100/setRGB?r=255&g=0&b=255
  • 这个请求会把风扇灯光设为 紫色

  • 你可以自由调节 r/g/b 参数,例如:

    • r=255, g=0, b=0 → 红色

    • r=0, g=255, b=0 → 绿色

    • r=0, g=0, b=255 → 蓝色

    • r=255, g=255, b=0 → 黄色

    • r=255, g=255, b=255 → 白色


🎨 6. 高级 RGB 效果

你还可以让风扇灯做出更炫酷的效果,比如 彩虹渐变 🌈

✨ 代码

void rainbowEffect() {
    static uint8_t hue = 0;
    for (int i = 0; i < NUM_LEDS; i++) {
        leds[i] = CHSV(hue + (i * 10), 255, 255);
    }
    FastLED.show();
    hue++;
    delay(30);
}

void loop() {
    rainbowEffect();
}

这个效果会让风扇灯不断变换 彩虹色


🛠️ 7. 可能遇到的问题

风扇灯不亮?

  • 检查 ESP8266 供电是否稳定

  • 确保 风扇支持 5V 信号

  • 尝试外接 5V 供电,而不是从 ESP8266 供电

  • 如果风扇 需要 5V 信号电平,尝试 逻辑电平转换器(3.3V → 5V)

灯颜色不对?

  • 尝试修改 FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); 里的 GRBRGBBRG

ESP8266 断网?

  • 确保 WiFi 信号稳定

  • 尝试使用 2.4GHz WiFi(ESP8266 不支持 5GHz)


📌 8. 结论

  • 风扇 5V 3Pin(WS2812B / SK6812)RGB ✅ 直接用 ESP8266 控制

  • 支持 WiFi 远程调色 🌐 HTTP API 方式

  • 支持彩虹渐变等动态效果 🎨 FastLED


这个方法可以完美控制风扇 RGB 灯!🚀 你试试看,有问题随时问我! 😊