SK6812 RGBW Addressable led strip comes with built-in IC, and the feature of individual control makes the animation more flexible. When SK6812 LED strip is combined with micro smart controller ESP32, its function will be more powerful.
Can ESP32 drive SK6812 RGBW pixel LED strips? We have developed a set of guides to provide you with detailed instructions on how to use the ESP32 controller.
1.All materials Required
Power supply DC5V
Power supply output
- Voltage: DC 5V
- Current: Up to 80A
- Power : 200W
Power supply input
- Voltage: AC 110V/220V (dual input supported, switch-selectable)
The function of DC5V power supply
- Powers both the SK6812 RGBW LED strip and the ESP32 (via 5V/GND lines)
- The DAT input of the SK6812 RGBW LED strip signal is connected to the digital I/O pin (PWM pin is recommended)
ESP32 Board
Model: ESP32
Operating Voltage: DC5V
Input Voltage (recommended): DC5V,
(If you choose to use a DC adapter for power supply, it can be DC6.5V~DC9V)
Digital I/O Pins: GPIO0~33 can be used for PWM output, GPIO34~39 can only be used for input, not output.GPIO2, 12, 15: Keep high level when starting, otherwise it may fail to start. GPIO0: Pull low in download mode and pull high in normal operation.
Analog Input Pins: 9
Clock Speed: 30 MHz
Programming Interface: USB Type-C
ESP32 Board use in This Setup:
- The Esp32 controller sends digital data signals to the SK6812 RGBW LED strip
- Connect the positive pole of the LED strip to the positive pole of the DC5V power supply,Control board current <500mA
- The negative poles R-/G-/B- of the LED strip are connected to the digital I/O pins respectively (PWM pins are recommended)
SK6812 RGBW LED strip
Type: Built-in IC SK6812 RGBW led strip
Input Voltage: 5V DC
Features: Each SK6812 RGBW LED strip has a built-in IC and supports single-point single control, which can realize independent programming of color, brightness and dynamic effects of each lamp bead, such as flowing water, gradient, marquee, text animation, etc.
LED Density: 60 LEDs /m
SK6812 uses 5V low-voltage drive, built-in constant current circuit and voltage stabilization design, ensuring low energy consumption and high brightness output. Each lamp bead receives 24-bit data (8 bits/color) through a single-line signal, and can independently control the brightness and mixing effect of the three RGB colors. SK6812 RGBW is also compatible with multiple control methods such as SPI and PWM, and is suitable for microcontrollers such as Arduino, Raspberry Pi, and ESP32. In addition, if it is used for wall decoration in KTV, bars, hotels and other places, you can also choose a slightly larger online controller T790K, etc.
2.SK6812 and ESP32 Wiring Schematic
Schematic wiring diagram from LEDSuntech.
Note:
1. The current of the ESP32 control board is <500mA;
2. The current of the light strip is too large, please use an external power supply to power the light strip;
3. The DC3.3/5V interface is the voltage output port of the ESP32 control board.It cannot be connected to the power supply. The DC interface is used for connecting the power supply;
4. The power supply range of the control board is DC3.3-9V, so the control board is powered by DC5V alone;
5. The wiring of RGB led strip is the same as that of RGBW led strip, but the programs cannot be shared;
6. The more points, the lower the refresh rate;
7. Note that the GPIO of ESP32 is 3.3V logic level, so the GPIO pin needs to be converted to a level before connecting to the light strip signal pin (74HCT125 or MOSFET level conversion).
3.SK6812 and ESP32 Connection Diagram
With the development of technology and the powerful functions of controllers, more and more addressable led strips are used for decorative lighting. LedSunTech focuses on LED strips. If you need to know more about the products, you can check the link for more information.
4.ESP32 Code Upload
Cade Software: Arduino IDE
LEDSuntech : All lighting effects are realized by coding. If you have any questions about coding, please contact our professional engineering team.
#include
// Hardware configuration
#define LED_PIN 11 // control pin
#define NUM_LEDS 80 //LED quantity
#define BRIGHTNESS 64 // Initial brightness (0-255)
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRBW + NEO_KHZ800);
// Effect parameters
uint8_t effect = 0; // Current effect (0-2)
uint16_t speedDelay = 50; //Effect speed(ms)
unsigned long prevMillis = 0;
void setup() {
Serial.begin(115200);
strip.begin();
strip.setBrightness(BRIGHTNESS);
strip.show(); // After initialization close all LED
Serial.println("Input command control effect:");
Serial.println("1: running water effect");
Serial.println("2: flashing effect");
Serial.println("3: Marquee effect");
Serial.println("+: speed up");
Serial.println("-: slow down");
}
void loop() {
// Serial port control
if (Serial.available()) {
char cmd = Serial.read();
switch(cmd) {
case '1': effect = 0; Serial.println("running water effect"); break;
case '2': effect = 1; Serial.println("flashing effect"); break;
case '3': effect = 2; Serial.println("Marquee effect"); break;
case '+': speedDelay = max(20, speedDelay-10); break;
case '-': speedDelay = min(500, speedDelay+10); break;
}
Serial.print("current speed: "); Serial.println(speedDelay);
}
// Timing execution effect
if (millis() - prevMillis >= speedDelay) {
prevMillis = millis();
switch(effect) {
case 0: rainbowFlow(); break;
case 1: blinkEffect(); break;
case 2: chaseEffect(); break;
}
strip.show();
}
}
// ================== Effect realization ==================
// Rainbow water effect
void rainbowFlow() {
static uint16_t hue = 0;
for(int i=0; i<strip.numPixels(); i++) {
// Calculate rainbow colors (using only RGB channels))
uint32_t color = strip.ColorHSV((hue + i*65536L/strip.numPixels()) % 65536);
// Convert RGB to RGBW(Keep the white channel at 00)
strip.setPixelColor(i, color);
}
hue += 256; // Adjust the hue change speed
}
// flashing effect
void blinkEffect() {
static bool state = false;
if(state) {
// Random RGBW colors
strip.fill(strip.Color(random(256), random(256), random(256), random(256)));
} else {
strip.fill(0);
}
state = !state;
}
// Marquee effect
void chaseEffect() {
static int pos = 0;
strip.fill(0); // Clear all LEDs
// Set the current LED color (with white channel)
strip.setPixelColor(pos, strip.Color(0, 255, 0, 100)); // RGBW: green+white
pos = (pos + 1) % strip.numPixels();
}
5.SK6812 Demonstration Video
To give you a deep understanding of the functions of the ESP32 controller, we provide a set of videos for your reference.
Among the many controllers, ESP32 is gaining more and more popularity with its miniature size and versatility. ESP32’s GPIO expansion capability is also amazing, with 34 programmable pins supporting multiple protocols such as PWM, I2C, SPI, etc., combined with deep sleep mode and ultra-low power consumption, making it a perfect choice for smart home sensors and wearable devices.
Mini controllers are very popular among computer modding and DIY enthusiasts. We also have special instructions for Computer PC Setup with Addressable LED Strips Lighting Ideas for Cases, Peripherals, and DIY Mods, which you can check as needed.