ESP8266 控制 5V 3Pin ARGB(WS2812B / SK6812)风扇灯
如果你的风扇 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 库
-
打开 Arduino IDE
-
点击:
工具
→管理库
-
搜索:"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);
里的GRB
为RGB
或BRG
✅ ESP8266 断网?
-
确保 WiFi 信号稳定
-
尝试使用 2.4GHz WiFi(ESP8266 不支持 5GHz)
📌 8. 结论
-
风扇 5V 3Pin(WS2812B / SK6812)RGB ✅ 直接用 ESP8266 控制
-
支持 WiFi 远程调色 🌐 HTTP API 方式
-
支持彩虹渐变等动态效果 🎨 FastLED
这个方法可以完美控制风扇 RGB 灯!🚀 你试试看,有问题随时问我! 😊
本文作者: 永生
本文链接: https://yys.zone/detail/?id=395
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!